From: Marc Rittinghaus Date: Fri, 14 Apr 2023 14:49:53 +0000 (+0200) Subject: lib/syscall_shim: Add stat struct X-Git-Tag: RELEASE-0.13.0~134 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=acc0061525408e54ec20b33ecca12145a621688b;p=unikraft%2Funikraft.git lib/syscall_shim: Add stat struct This commit adds a definition of the stat struct to prsyscall Signed-off-by: Marc Rittinghaus Reviewed-by: Razvan Deaconescu Reviewed-by: Cezar Craciunoiu Approved-by: Simon Kuenzer Tested-by: Unikraft CI GitHub-Closes: #836 --- diff --git a/lib/syscall_shim/uk_prsyscall.c b/lib/syscall_shim/uk_prsyscall.c index e389d0296..3df603a60 100644 --- a/lib/syscall_shim/uk_prsyscall.c +++ b/lib/syscall_shim/uk_prsyscall.c @@ -7,6 +7,8 @@ #include #include +#include + #include #include /* ANSI definitions */ #include @@ -334,6 +336,7 @@ enum param_type { PT_MSGFLAGS, PT_CLONEFLAGS, PT_STRUCT(timespec), + PT_STRUCT(stat), }; #define PT_BUFP(len) \ (long)(_PT_BUFP | ((MIN((unsigned long) __U16_MAX, \ @@ -346,7 +349,6 @@ enum param_type { #define PT_STATUS PT_BOOL #define PT_PATH PT_CHARP #define PT_TID PT_PID -#define PT_STRUCTSTAT PT_VADDR /* * Individual parameter type formats @@ -759,6 +761,11 @@ static void pr_param(struct uk_streambuf *sb, int fmtf, PT_UDEC, tv_sec, PT_UDEC, tv_nsec); break; + case PT_STRUCT(stat): + PR_STRUCT(sb, fmtf, stat, flags, param, 1, succ, + PT_UDEC, st_size, + PT_OCTAL, st_mode); + break; default: uk_streambuf_shcc(sb, fmtf, VALUE); uk_streambuf_printf(sb, "0x%lx", (unsigned long) param); @@ -947,7 +954,7 @@ static void pr_syscall(struct uk_streambuf *sb, int fmtf, #ifdef HAVE_uk_syscall_stat case SYS_stat: VPR_SYSCALL(sb, fmtf, syscall_num, args, rc == 0, - PT_PATH, PT_STRUCTSTAT); + PT_PATH, PT_STRUCT(stat) | PT_OUT); PR_SYSRET(sb, fmtf, PT_STATUS, rc); break; #endif /* HAVE_uk_syscall_stat */ @@ -955,7 +962,7 @@ static void pr_syscall(struct uk_streambuf *sb, int fmtf, #ifdef HAVE_uk_syscall_fstat case SYS_fstat: VPR_SYSCALL(sb, fmtf, syscall_num, args, rc == 0, - PT_FD, PT_STRUCTSTAT); + PT_FD, PT_STRUCT(stat) | PT_OUT); PR_SYSRET(sb, fmtf, PT_STATUS, rc); break; #endif /* HAVE_uk_syscall_fstat */