From: Sergiu Moga Date: Mon, 15 Feb 2021 17:53:13 +0000 (+0200) Subject: lib/vfscore: Register `symlink` to syscall_shim X-Git-Tag: RELEASE-0.6~190 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=0e555e3705e66c68ebb58821f4945d854089eb48;p=unikraft%2Funikraft.git lib/vfscore: Register `symlink` to syscall_shim Register `symlink` system call to syscall_shim library. Signed-off-by: Sergiu Moga Reviewed-by: Florin Diaconescu Tested-by: Unikraft CI GitHub-Pull-Request: #133 --- diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk index 8d54d038e..9feb3c82a 100644 --- a/lib/vfscore/Makefile.uk +++ b/lib/vfscore/Makefile.uk @@ -69,3 +69,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += stat-2 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += mkdir-2 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += umount2-2 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += pipe2-2 +UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += symlink-2 diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk index fde4e510b..9c4190ed6 100644 --- a/lib/vfscore/exportsyms.uk +++ b/lib/vfscore/exportsyms.uk @@ -136,6 +136,8 @@ fchdir uk_syscall_e_fchdir uk_syscall_r_fchdir symlink +uk_syscall_e_symlink +uk_syscall_r_symlink statvfs fstatvfs access diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c index 94f9bd109..dac83964f 100644 --- a/lib/vfscore/main.c +++ b/lib/vfscore/main.c @@ -1307,7 +1307,7 @@ UK_TRACEPOINT(trace_vfs_symlink, "oldpath=%s, newpath=%s", const char*, UK_TRACEPOINT(trace_vfs_symlink_ret, ""); UK_TRACEPOINT(trace_vfs_symlink_err, "errno=%d", int); -int symlink(const char *oldpath, const char *newpath) +UK_SYSCALL_R_DEFINE(int, symlink, const char*, oldpath, const char*, newpath) { int error; @@ -1315,16 +1315,14 @@ int symlink(const char *oldpath, const char *newpath) error = ENOENT; if (oldpath == NULL || newpath == NULL) { - errno = ENOENT; trace_vfs_symlink_err(error); - return (-1); + return (-ENOENT); } error = sys_symlink(oldpath, newpath); if (error) { - errno = error; trace_vfs_symlink_err(error); - return (-1); + return (-error); } trace_vfs_symlink_ret();