|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 3/5] lib/vfscore: Register `link` to syscall_shim
Registers `link` system call to syscall_shim library.
Signed-off-by: Constantin Raducanu <raducanu.costi@xxxxxxxxx>
---
lib/vfscore/Makefile.uk | 3 ++-
lib/vfscore/exportsyms.uk | 2 ++
lib/vfscore/main.c | 17 +++++++++--------
3 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index ec415f4..3986676 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -30,4 +30,5 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += read-3 readv-3
UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += fstat-2
UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += readlink-3
UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += close-1
-UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += lseek-3
\ No newline at end of file
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += lseek-3
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += link-2
\ No newline at end of file
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 5ad97c2..57413d6 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -45,6 +45,8 @@ vfscore_mount_dump
umount
umount2
link
+uk_syscall_e_link
+uk_syscall_r_link
unlink
getcwd
chown
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index 8bbce80..b5b7e40 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1070,7 +1070,7 @@ UK_TRACEPOINT(trace_vfs_link, "\"%s\" \"%s\"", const
char*, const char*);
UK_TRACEPOINT(trace_vfs_link_ret, "");
UK_TRACEPOINT(trace_vfs_link_err, "%d", int);
-int link(const char *oldpath, const char *newpath)
+UK_SYSCALL_R_DEFINE(int, link, const char*, oldpath, const char*, newpath)
{
struct task *t = main_task;
char path1[PATH_MAX];
@@ -1081,21 +1081,22 @@ int link(const char *oldpath, const char *newpath)
error = ENOENT;
if (oldpath == NULL || newpath == NULL)
- goto out_errno;
+ goto out_error;
if ((error = task_conv(t, oldpath, VWRITE, path1)) != 0)
- goto out_errno;
+ goto out_error;
if ((error = task_conv(t, newpath, VWRITE, path2)) != 0)
- goto out_errno;
+ goto out_error;
error = sys_link(path1, path2);
if (error)
- goto out_errno;
+ goto out_error;
+
trace_vfs_link_ret();
return 0;
- out_errno:
+
+ out_error:
trace_vfs_link_err(error);
- errno = error;
- return -1;
+ return -error;
}
--
2.17.1
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |