[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[UNIKRAFT PATCH 02/10] lib/vfscore: Register `faccessat` to syscall_shim



Registers `faccessat` system call to syscall_shim library.

Signed-off-by: Constantin Raducanu <raducanu.costi@xxxxxxxxx>
---
 lib/vfscore/Makefile.uk   | 1 +
 lib/vfscore/exportsyms.uk | 2 ++
 lib/vfscore/main.c        | 6 +++---
 3 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk
index 5d50b5d..da45140 100644
--- a/lib/vfscore/Makefile.uk
+++ b/lib/vfscore/Makefile.uk
@@ -35,3 +35,4 @@ UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += link-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += ftruncate-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += truncate-2
 UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += access-2
+UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += faccessat-4
diff --git a/lib/vfscore/exportsyms.uk b/lib/vfscore/exportsyms.uk
index 9c1803a..41c8f3c 100644
--- a/lib/vfscore/exportsyms.uk
+++ b/lib/vfscore/exportsyms.uk
@@ -92,6 +92,8 @@ access
 uk_syscall_e_access
 uk_syscall_r_access
 faccessat
+uk_syscall_e_faccessat
+uk_syscall_r_faccessat
 readlink
 uk_syscall_e_readlink
 uk_syscall_r_readlink
diff --git a/lib/vfscore/main.c b/lib/vfscore/main.c
index 759c41b..588c4eb 100644
--- a/lib/vfscore/main.c
+++ b/lib/vfscore/main.c
@@ -1619,7 +1619,7 @@ UK_SYSCALL_R_DEFINE(int, access, const char*, pathname, 
int, mode)
        return -error;
 }
 
-int faccessat(int dirfd, const char *pathname, int mode, int flags)
+UK_SYSCALL_R_DEFINE(int, faccessat, int, dirfd, const char*, pathname, int, 
mode, int, flags)
 {
        if (flags & AT_SYMLINK_NOFOLLOW) {
                UK_CRASH("UNIMPLEMENTED: faccessat() with AT_SYMLINK_NOFOLLOW");
@@ -1632,8 +1632,7 @@ int faccessat(int dirfd, const char *pathname, int mode, 
int flags)
        struct vfscore_file *fp;
        int error = fget(dirfd, &fp);
        if (error) {
-               errno = error;
-               return -1;
+               goto out_error;
        }
 
        struct vnode *vp = fp->f_dentry->d_vnode;
@@ -1652,6 +1651,7 @@ int faccessat(int dirfd, const char *pathname, int mode, 
int flags)
        vn_unlock(vp);
        fdrop(fp);
 
+       out_error:
        return error;
 }
 
-- 
2.17.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.