]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
lib/vfscore: Register `symlink` to syscall_shim
authorSergiu Moga <sergiu.moga@protonmail.com>
Mon, 15 Feb 2021 17:53:13 +0000 (19:53 +0200)
committerUnikraft <monkey@unikraft.io>
Mon, 17 May 2021 08:10:25 +0000 (08:10 +0000)
Register `symlink` system call to syscall_shim library.

Signed-off-by: Sergiu Moga <sergiu.moga@protonmail.com>
Reviewed-by: Florin Diaconescu <florin.diaconescu@protonmail.com>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Pull-Request: #133

lib/vfscore/Makefile.uk
lib/vfscore/exportsyms.uk
lib/vfscore/main.c

index 8d54d038e94d28f12bbf0efd65336a59c66436e5..9feb3c82a6163157a57958f53fdd8109dc702fac 100644 (file)
@@ -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
index fde4e510be4583ceb3d438b23e086b340fb07bec..9c4190ed6671a375875fac82d72ebbb221f80a63 100644 (file)
@@ -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
index 94f9bd1094987d60c1f127d607eb132a3f29b1a3..dac83964f2e1b3f2c910abb9ee2adbc7a982673f 100644 (file)
@@ -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();