#include <string.h>
#include <fcntl.h>
+#include <sys/stat.h>
+
#include <uk/arch/types.h>
#include <uk/plat/console.h> /* ANSI definitions */
#include <uk/arch/limits.h>
PT_MSGFLAGS,
PT_CLONEFLAGS,
PT_STRUCT(timespec),
+ PT_STRUCT(stat),
};
#define PT_BUFP(len) \
(long)(_PT_BUFP | ((MIN((unsigned long) __U16_MAX, \
#define PT_STATUS PT_BOOL
#define PT_PATH PT_CHARP
#define PT_TID PT_PID
-#define PT_STRUCTSTAT PT_VADDR
/*
* Individual parameter type formats
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);
#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 */
#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 */