From: Waldemar Kozaczuk <[email protected]>
Committer: WALDEMAR KOZACZUK <[email protected]>
Branch: master

add syscall tracepoints

This patch adds tracepoints for the syscalls implemented in linux.cc.
The new tracepoints capture both the arguments and return value.
The format is somewhat similar to Linux strace where the return value
is first like so:

TRACEPOINT(trace_syscall_open, "%d <= \"%s\" 0x%x", int, const char *, int);

Having both input and output captured by one single tracepoint instead of
two makes it easier to observe things using new OSv strace capability.

With strace enabled one can observe what syscalls application makes
like in this example:

./scripts/run.py -e '--strace --trace=syscall\* /httpserver.so'
OSv v0.57.0-76-g76e30467
eth0: 192.168.122.15
Booted up in 134.48 ms
Cmdline: /httpserver.so
/httpserver.so    0  0.099321648 syscall_sys_sched_getaffinity(8 <= 0 8192 
0x2000001fef10)
/httpserver.so    0  0.099337794 syscall_openat(-1 <= -100 
"/sys/kernel/mm/transparent_hugepage/hpage_pmd_siz" 00 0)
/httpserver.so    0  0.103745244 syscall_rt_sigprocmask(0 <= 2 0 0x100000491e40 
8)
/httpserver.so    0  0.104619488 syscall_sigaltstack(0 <= 0 0x200000200e80)
/httpserver.so    0  0.104619950 syscall_sigaltstack(0 <= 0x200000200e40 0)
/httpserver.so    0  0.104622744 syscall_rt_sigprocmask(0 <= 2 0x200000200e90 0 
8)
/httpserver.so    0  0.104623578 syscall_gettid(45 <=)
>/httpserver.so   0  0.104778424 syscall_sigaltstack(0 <= 0 0x200027010ea8)
>/httpserver.so   0  0.104778871 syscall_sigaltstack(0 <= 0x200027010e68 0)
>/httpserver.so   0  0.104782909 syscall_rt_sigprocmask(0 <= 2 0x200027010eb8 0 
>8)
>/httpserver.so   0  0.104783155 syscall_gettid(46 <=)
>/httpserver.so   0  0.105711348 syscall_nanosleep(0 <= 0x200027010e70 0)
>/httpserver.so   0  0.105731443 syscall_getpid(2 <=)
>/httpserver.so   0  0.105732262 syscall_tgkill(-1 <= 2 45 23)
Go version: go1.18.1, listening on port 8000 ...
>/httpserver.so   0  0.105758384 syscall_nanosleep(0 <= 0x200027010e70 0)
>/httpserver.so   0  0.105783045 syscall_nanosleep(0 <= 0x200027010e70 0)
>/httpserver.so   0  0.105806418 syscall_nanosleep(0 <= 0x200027010e70 0)
>/httpserver.so   0  0.105830684 syscall_nanosleep(0 <= 0x200027010e70 0)

Fixes #1261

Signed-off-by: Waldemar Kozaczuk <[email protected]>

---
diff --git a/fs/vfs/main.cc b/fs/vfs/main.cc
--- a/fs/vfs/main.cc
+++ b/fs/vfs/main.cc
@@ -1550,7 +1550,7 @@ char *getcwd(char *path, size_t size)
 }
 
 TRACEPOINT(trace_vfs_dup, "%d", int);
-TRACEPOINT(trace_vfs_dup_ret, "\"%s\"", int);
+TRACEPOINT(trace_vfs_dup_ret, "%d", int);
 TRACEPOINT(trace_vfs_dup_err, "%d", int);
 /*
  * Duplicate a file descriptor
@@ -1645,7 +1645,7 @@ int dup2(int oldfd, int newfd)
 #define SETFL (O_APPEND | O_ASYNC | O_DIRECT | O_NOATIME | O_NONBLOCK)
 
 TRACEPOINT(trace_vfs_fcntl, "%d %d 0x%x", int, int, int);
-TRACEPOINT(trace_vfs_fcntl_ret, "\"%s\"", int);
+TRACEPOINT(trace_vfs_fcntl_ret, "%d", int);
 TRACEPOINT(trace_vfs_fcntl_err, "%d", int);
 
 extern "C" OSV_LIBC_API
diff --git a/linux.cc b/linux.cc
--- a/linux.cc
+++ b/linux.cc
@@ -14,6 +14,7 @@
 #include <osv/waitqueue.hh>
 #include <osv/stubbing.hh>
 #include <osv/export.h>
+#include <osv/trace.hh>
 #include <memory>
 
 #include <syscall.h>
@@ -196,8 +197,8 @@ static long set_mempolicy(int policy, unsigned long *nmask,
 // As explained in the sched_getaffinity(2) manual page, the interface of the
 // sched_getaffinity() function is slightly different than that of the actual
 // system call we need to implement here.
-#define __NR_sched_getaffinity_syscall __NR_sched_getaffinity
-static int sched_getaffinity_syscall(
+#define __NR_sys_sched_getaffinity __NR_sched_getaffinity
+static int sys_sched_getaffinity(
         pid_t pid, unsigned len, unsigned long *mask)
 {
         int ret = sched_getaffinity(
@@ -216,8 +217,8 @@ static int sched_getaffinity_syscall(
         return ret;
 }
 
-#define __NR_sched_setaffinity_syscall __NR_sched_setaffinity
-static int sched_setaffinity_syscall(
+#define __NR_sys_sched_setaffinity __NR_sched_setaffinity
+static int sys_sched_setaffinity(
         pid_t pid, unsigned len, unsigned long *mask)
 {
     return sched_setaffinity(
@@ -231,16 +232,18 @@ long long_mmap(void *addr, size_t length, int prot, int 
flags, int fd, off_t off
 #define __NR_long_mmap __NR_mmap
 
 
-#define SYSCALL0(fn) case (__NR_##fn): return fn()
+#define SYSCALL0(fn) case (__NR_##fn): do { long ret = fn(); 
trace_syscall_##fn(ret); return ret; } while (0)
 
-#define SYSCALL1(fn, __t1)                  \
-        case (__NR_##fn): do {              \
-        va_list args;                       \
-        __t1 arg1;                          \
-        va_start(args, number);             \
-        arg1 = va_arg(args, __t1);          \
-        va_end(args);                       \
-        return fn(arg1);                    \
+#define SYSCALL1(fn, __t1)             \
+        case (__NR_##fn): do {         \
+        va_list args;                  \
+        __t1 arg1;                     \
+        va_start(args, number);        \
+        arg1 = va_arg(args, __t1);     \
+        va_end(args);                  \
+        auto ret = fn(arg1);           \
+        trace_syscall_##fn(ret, arg1); \
+        return ret;                    \
         } while (0)
 
 #define SYSCALL2(fn, __t1, __t2)            \
@@ -252,75 +255,85 @@ long long_mmap(void *addr, size_t length, int prot, int 
flags, int fd, off_t off
         arg1 = va_arg(args, __t1);          \
         arg2 = va_arg(args, __t2);          \
         va_end(args);                       \
-        return fn(arg1, arg2);              \
+        auto ret = fn(arg1, arg2);          \
+        trace_syscall_##fn(ret, arg1, arg2);\
+        return ret;                         \
         } while (0)
 
-#define SYSCALL3(fn, __t1, __t2, __t3)          \
-        case (__NR_##fn): do {                  \
-        va_list args;                           \
-        __t1 arg1;                              \
-        __t2 arg2;                              \
-        __t3 arg3;                              \
-        va_start(args, number);                 \
-        arg1 = va_arg(args, __t1);              \
-        arg2 = va_arg(args, __t2);              \
-        arg3 = va_arg(args, __t3);              \
-        va_end(args);                           \
-        return fn(arg1, arg2, arg3);            \
+#define SYSCALL3(fn, __t1, __t2, __t3)             \
+        case (__NR_##fn): do {                     \
+        va_list args;                              \
+        __t1 arg1;                                 \
+        __t2 arg2;                                 \
+        __t3 arg3;                                 \
+        va_start(args, number);                    \
+        arg1 = va_arg(args, __t1);                 \
+        arg2 = va_arg(args, __t2);                 \
+        arg3 = va_arg(args, __t3);                 \
+        va_end(args);                              \
+        auto ret = fn(arg1, arg2, arg3);           \
+        trace_syscall_##fn(ret, arg1, arg2, arg3); \
+        return ret;                                \
         } while (0)
 
-#define SYSCALL4(fn, __t1, __t2, __t3, __t4)    \
-        case (__NR_##fn): do {                  \
-        va_list args;                           \
-        __t1 arg1;                              \
-        __t2 arg2;                              \
-        __t3 arg3;                              \
-        __t4 arg4;                              \
-        va_start(args, number);                 \
-        arg1 = va_arg(args, __t1);              \
-        arg2 = va_arg(args, __t2);              \
-        arg3 = va_arg(args, __t3);              \
-        arg4 = va_arg(args, __t4);              \
-        va_end(args);                           \
-        return fn(arg1, arg2, arg3, arg4);      \
+#define SYSCALL4(fn, __t1, __t2, __t3, __t4)             \
+        case (__NR_##fn): do {                           \
+        va_list args;                                    \
+        __t1 arg1;                                       \
+        __t2 arg2;                                       \
+        __t3 arg3;                                       \
+        __t4 arg4;                                       \
+        va_start(args, number);                          \
+        arg1 = va_arg(args, __t1);                       \
+        arg2 = va_arg(args, __t2);                       \
+        arg3 = va_arg(args, __t3);                       \
+        arg4 = va_arg(args, __t4);                       \
+        va_end(args);                                    \
+        auto ret = fn(arg1, arg2, arg3, arg4);           \
+        trace_syscall_##fn(ret, arg1, arg2, arg3, arg4); \
+        return ret;                                      \
         } while (0)
 
-#define SYSCALL5(fn, __t1, __t2, __t3, __t4, __t5)    \
-        case (__NR_##fn): do {                  \
-        va_list args;                           \
-        __t1 arg1;                              \
-        __t2 arg2;                              \
-        __t3 arg3;                              \
-        __t4 arg4;                              \
-        __t5 arg5;                              \
-        va_start(args, number);                 \
-        arg1 = va_arg(args, __t1);              \
-        arg2 = va_arg(args, __t2);              \
-        arg3 = va_arg(args, __t3);              \
-        arg4 = va_arg(args, __t4);              \
-        arg5 = va_arg(args, __t5);              \
-        va_end(args);                           \
-        return fn(arg1, arg2, arg3, arg4, arg5);\
+#define SYSCALL5(fn, __t1, __t2, __t3, __t4, __t5)             \
+        case (__NR_##fn): do {                                 \
+        va_list args;                                          \
+        __t1 arg1;                                             \
+        __t2 arg2;                                             \
+        __t3 arg3;                                             \
+        __t4 arg4;                                             \
+        __t5 arg5;                                             \
+        va_start(args, number);                                \
+        arg1 = va_arg(args, __t1);                             \
+        arg2 = va_arg(args, __t2);                             \
+        arg3 = va_arg(args, __t3);                             \
+        arg4 = va_arg(args, __t4);                             \
+        arg5 = va_arg(args, __t5);                             \
+        va_end(args);                                          \
+        auto ret = fn(arg1, arg2, arg3, arg4, arg5);           \
+        trace_syscall_##fn(ret, arg1, arg2, arg3, arg4, arg5); \
+        return ret;                                            \
         } while (0)
 
-#define SYSCALL6(fn, __t1, __t2, __t3, __t4, __t5, __t6)        \
-        case (__NR_##fn): do {                                  \
-        va_list args;                                           \
-        __t1 arg1;                                              \
-        __t2 arg2;                                              \
-        __t3 arg3;                                              \
-        __t4 arg4;                                              \
-        __t5 arg5;                                              \
-        __t6 arg6;                                              \
-        va_start(args, number);                                 \
-        arg1 = va_arg(args, __t1);                              \
-        arg2 = va_arg(args, __t2);                              \
-        arg3 = va_arg(args, __t3);                              \
-        arg4 = va_arg(args, __t4);                              \
-        arg5 = va_arg(args, __t5);                              \
-        arg6 = va_arg(args, __t6);                              \
-        va_end(args);                                           \
-        return fn(arg1, arg2, arg3, arg4, arg5, arg6);          \
+#define SYSCALL6(fn, __t1, __t2, __t3, __t4, __t5, __t6)             \
+        case (__NR_##fn): do {                                       \
+        va_list args;                                                \
+        __t1 arg1;                                                   \
+        __t2 arg2;                                                   \
+        __t3 arg3;                                                   \
+        __t4 arg4;                                                   \
+        __t5 arg5;                                                   \
+        __t6 arg6;                                                   \
+        va_start(args, number);                                      \
+        arg1 = va_arg(args, __t1);                                   \
+        arg2 = va_arg(args, __t2);                                   \
+        arg3 = va_arg(args, __t3);                                   \
+        arg4 = va_arg(args, __t4);                                   \
+        arg5 = va_arg(args, __t5);                                   \
+        arg6 = va_arg(args, __t6);                                   \
+        va_end(args);                                                \
+        auto ret = fn(arg1, arg2, arg3, arg4, arg5, arg6);           \
+        trace_syscall_##fn(ret, arg1, arg2, arg3, arg4, arg5, arg6); \
+        return ret;                                                  \
         } while (0)
 
 int rt_sigaction(int sig, const struct k_sigaction * act, struct k_sigaction * 
oact, size_t sigsetsize)
@@ -555,6 +568,135 @@ static long sys_brk(void *addr)
     }
 }
 
+#ifdef SYS_open
+TRACEPOINT(trace_syscall_open, "%d <= \"%s\" 0x%x", int, const char *, int);
+#endif
+TRACEPOINT(trace_syscall_read, "0x%x <= %d %p 0x%x", ssize_t, int, char *, 
size_t);
+TRACEPOINT(trace_syscall_uname, "%d <= ", int, struct utsname *);
+TRACEPOINT(trace_syscall_write, "0x%x <= %d %p 0x%x", ssize_t, int, const void 
*, size_t);
+TRACEPOINT(trace_syscall_gettid, "%d <=", pid_t);
+TRACEPOINT(trace_syscall_clock_gettime, "%d <= %d %p", int, clockid_t, struct 
timespec *);
+TRACEPOINT(trace_syscall_clock_getres, "%d <= %d %p", int, clockid_t, struct 
timespec *);
+TRACEPOINT(trace_syscall_futex, "%d <= %p %d %d %p %p %d", int, int *, int, 
int, const struct timespec *, int *, uint32_t);
+TRACEPOINT(trace_syscall_close, "%d <= %d", int, int);
+TRACEPOINT(trace_syscall_pipe2, "%d <= %p 0%0o", int, int *, int);
+TRACEPOINT(trace_syscall_epoll_create1, "%d <= 0%0o", int, int);
+TRACEPOINT(trace_syscall_eventfd2, "%d <= %u 0%0o", int, unsigned int, int);
+TRACEPOINT(trace_syscall_epoll_ctl, "%d <= %d %d %d 0x%x", int, int, int, int, 
struct epoll_event *);
+#ifdef SYS_epoll_wait
+TRACEPOINT(trace_syscall_epoll_wait, "%d <= %d 0x%x %d %d", int, int, struct 
epoll_event *, int, int);
+#endif
+TRACEPOINT(trace_syscall_accept4, "%d <= %d 0x%x %p 0%0o", int, int, struct 
sockaddr *, socklen_t *, int);
+TRACEPOINT(trace_syscall_connect, "%d <= %d 0x%x %d", int, int, struct 
sockaddr *, socklen_t);
+TRACEPOINT(trace_syscall_get_mempolicy, "%lu <= %p %p %lu %p %d", long, int *, 
unsigned long *, unsigned long, void *, int);
+TRACEPOINT(trace_syscall_sys_sched_getaffinity, "%d <= %d %u %p", int, pid_t, 
unsigned, unsigned long *);
+TRACEPOINT(trace_syscall_long_mmap, "0x%x <= 0x%x %lu %d %d %d %lu", long, 
void *, size_t, int, int, int, off_t);
+TRACEPOINT(trace_syscall_munmap, "%d <= 0x%x %lu", int, void *, size_t);
+TRACEPOINT(trace_syscall_rt_sigaction, "%d <= %d %p %p %lu", int, int, const 
struct k_sigaction *, struct k_sigaction *, size_t);
+TRACEPOINT(trace_syscall_rt_sigprocmask, "%d <= %d %p %p %lu", int, int, 
sigset_t *, sigset_t *, size_t);
+TRACEPOINT(trace_syscall_sys_exit, "%d <= %d", int, int);
+TRACEPOINT(trace_syscall_sigaltstack, "%d <= %p %p", int, const stack_t *, 
stack_t *);
+#ifdef SYS_select
+TRACEPOINT(trace_syscall_select, "%d <= %d %p %p %p %p", int, int, fd_set *, 
fd_set *, fd_set *, struct timeval *);
+#endif
+TRACEPOINT(trace_syscall_madvise, "%d <= 0x%x %lu %d", int, void *, size_t, 
int);
+TRACEPOINT(trace_syscall_sched_yield, "%d <=", int);
+TRACEPOINT(trace_syscall_mincore, "%d <= 0x%x %lu %p", int, void *, size_t, 
unsigned char *);
+TRACEPOINT(trace_syscall_openat, "%d <= %d \"%s\" 0%0o %d", int, int, const 
char *, int, mode_t);
+TRACEPOINT(trace_syscall_socket, "%d <= %d %d %d", int, int, int, int);
+TRACEPOINT(trace_syscall_setsockopt, "%d <= %d %d %d %p %d", int, int, int, 
int, char *, int);
+TRACEPOINT(trace_syscall_getsockopt, "%d <= %d %d %d %p %p", int, int, int, 
int, char *, unsigned int *);
+TRACEPOINT(trace_syscall_getpeername, "%d <= %d %p %p", int, int, struct 
sockaddr *, unsigned int *);
+TRACEPOINT(trace_syscall_bind, "%d <= %d %p %d", int, int, struct sockaddr *, 
int);
+TRACEPOINT(trace_syscall_listen, "%d <= %d %d", int, int, int);
+TRACEPOINT(trace_syscall_sys_ioctl, "%d <= %u %u %lu", int, unsigned int, 
unsigned int, unsigned long);
+#ifdef SYS_stat
+TRACEPOINT(trace_syscall_stat, "%d <= \"%s\" %p", int, const char *, struct 
stat *);
+#endif
+TRACEPOINT(trace_syscall_fstat, "%d <= %d %p", int, int, struct stat *);
+TRACEPOINT(trace_syscall_getsockname, "%d <= %d %p %p", int, int, struct 
sockaddr *, socklen_t *);
+TRACEPOINT(trace_syscall_sendto, "%lu <= %d 0x%x %lu %d %p %u", ssize_t, int, 
const void *, size_t, int, const struct sockaddr *, socklen_t);
+TRACEPOINT(trace_syscall_sendmsg, "%lu <= %d %p %d", ssize_t, int, const 
struct msghdr *, int);
+TRACEPOINT(trace_syscall_recvfrom, "%lu <= %d 0x%x %lu %d %p %p", ssize_t, 
int, void *, size_t, int, struct sockaddr *, socklen_t *);
+TRACEPOINT(trace_syscall_recvmsg, "%lu <= %d %p %d", ssize_t, int, struct 
msghdr *, int);
+TRACEPOINT(trace_syscall_dup3, "%d <= %d %d %d", int, int, int, int);
+TRACEPOINT(trace_syscall_flock, "%d <= %d %d", int, int, int);
+TRACEPOINT(trace_syscall_pwrite64, "%lu <= %d 0x%x %lu %ld", ssize_t, int, 
const void *, size_t, off_t);
+TRACEPOINT(trace_syscall_fdatasync, "%d <= %d", int, int);
+TRACEPOINT(trace_syscall_pselect6, "%d <= %d %p %p %p %p %p", int, int, fd_set 
*, fd_set *, fd_set *, struct timespec *, sys_sigset*);
+TRACEPOINT(trace_syscall_fcntl, "%d <= %d %d %d", int, int, int, int);
+TRACEPOINT(trace_syscall_pread64, "%lu <= %d 0x%x %lu %ld", ssize_t, int, void 
*, size_t, off_t);
+TRACEPOINT(trace_syscall_ftruncate, "%d <= %d %ld", int, int, off_t);
+TRACEPOINT(trace_syscall_fsync, "%d <= %d", int, int);
+TRACEPOINT(trace_syscall_epoll_pwait, "%d <= %d %p %d %d %p", int, int, struct 
epoll_event *, int, int, const sigset_t*);
+TRACEPOINT(trace_syscall_getrandom, "%lu <= 0x%x %lu %u", ssize_t, char *, 
size_t, unsigned int);
+TRACEPOINT(trace_syscall_nanosleep, "%d <= %p %p", int, const struct 
timespec*, struct timespec *);
+TRACEPOINT(trace_syscall_fstatat, "%d <= %d \"%s\" %p 0%0o", int, int, const 
char *, struct stat *, int);
+TRACEPOINT(trace_syscall_sys_exit_group, "%d <= %d", int, int);
+TRACEPOINT(trace_syscall_sys_getcwd, "%ld <= 0%0o %lu", long, char *, unsigned 
long);
+TRACEPOINT(trace_syscall_readlinkat, "%lu <= %d 0%0o 0x%x %lu", ssize_t, int, 
const char *, char *, size_t);
+TRACEPOINT(trace_syscall_getpid, "%d <=", pid_t);
+TRACEPOINT(trace_syscall_set_mempolicy, "%ld <= %d %p %lu", long, int, 
unsigned long *, unsigned long);
+TRACEPOINT(trace_syscall_sys_sched_setaffinity, "%d <= %d %u %p", int, pid_t, 
unsigned, unsigned long *);
+#ifdef SYS_mkdir
+TRACEPOINT(trace_syscall_mkdir, "%d <= \"%s\" %d", int, const char*, mode_t);
+#endif
+TRACEPOINT(trace_syscall_mkdirat, "%d <= %d \"%s\" %d", int, int, const char*, 
mode_t);
+TRACEPOINT(trace_syscall_tgkill, "%d <= %d %d %d", int, int, int, int);
+TRACEPOINT(trace_syscall_getgid, "%d <=", gid_t);
+TRACEPOINT(trace_syscall_getuid, "%d <=", uid_t);
+TRACEPOINT(trace_syscall_lseek, "%ld <= %d %ld %d", off_t, int, off_t, int);
+TRACEPOINT(trace_syscall_statfs, "%d <= \"%s\" %p", int, const char *, struct 
statfs *);
+TRACEPOINT(trace_syscall_unlinkat, "%d <= %d \"%s\" %d", int, int, const char 
*, int);
+TRACEPOINT(trace_syscall_symlinkat, "%d <= \"%s\" %d \"%s\"", int, const char 
*, int, const char *);
+TRACEPOINT(trace_syscall_sys_getdents64, "%lu <= %d 0x%x %lu", ssize_t, int, 
void *, size_t);
+TRACEPOINT(trace_syscall_renameat, "%d <= %d \"%s\" %d \"%s\"", int, int, 
const char *, int, const char *);
+TRACEPOINT(trace_syscall_sys_brk,"0x%x <= 0x%x",  long, void *);
+TRACEPOINT(trace_syscall_clock_nanosleep, "%d <= %d %d %p %p", int, clockid_t, 
int, const struct timespec *, struct timespec *);
+TRACEPOINT(trace_syscall_mknodat, "%d <= %d \"%s\" %d %d", int, int, const 
char *, mode_t, dev_t);
+TRACEPOINT(trace_syscall_statx, "%d <= %d \"%s\" %d %u %p", int, int, const 
char *, int, unsigned int, struct statx *);
+TRACEPOINT(trace_syscall_sys_getcpu, "%ld <= %p %p 0x%x", long, unsigned int 
*, unsigned int *, void *);
+TRACEPOINT(trace_syscall_dup, "%d <= %d", int, int);
+TRACEPOINT(trace_syscall_dup2, "%d <= %d %d", int, int, int);
+TRACEPOINT(trace_syscall_mprotect, "%d <= 0x%x %lu %d", int, void *, size_t, 
int);
+TRACEPOINT(trace_syscall_access, "%d <= \"%s\" %d", int, const char *, int);
+TRACEPOINT(trace_syscall_writev, "%lu <= %d %p %d", ssize_t, int, const struct 
iovec *, int);
+TRACEPOINT(trace_syscall_readlink, "%lu <= \"%s\" 0x%x %lu", ssize_t, const 
char *, char *, size_t);
+TRACEPOINT(trace_syscall_geteuid, "%d <=", uid_t);
+TRACEPOINT(trace_syscall_getegid, "%d <=", gid_t);
+TRACEPOINT(trace_syscall_gettimeofday, "%d <= %p %p", int, struct timeval *, 
struct timezone *);
+TRACEPOINT(trace_syscall_poll, "%d <= %p %ld %d", int, struct pollfd *, 
nfds_t, int);
+TRACEPOINT(trace_syscall_getppid, "%d <=", pid_t);
+TRACEPOINT(trace_syscall_epoll_create, "%d <= %d", int, int);
+TRACEPOINT(trace_syscall_sysinfo, "%d <= %p", int, struct sysinfo *);
+TRACEPOINT(trace_syscall_time, "%ld <= %p", time_t, time_t *);
+TRACEPOINT(trace_syscall_sendfile, "%lu <= %d %d %p %lu", ssize_t, int, int, 
off_t *, size_t);
+TRACEPOINT(trace_syscall_socketpair, "%d <= %d %d %d %p", int, int, int, int, 
int *);
+TRACEPOINT(trace_syscall_shutdown, "%d <= %d %d", int, int, int);
+TRACEPOINT(trace_syscall_unlink, "%d <= \"%s\"", int, const char *);
+TRACEPOINT(trace_syscall_readv, "%lu <= %lu %p %lu", ssize_t, unsigned long, 
const struct iovec *, unsigned long);
+TRACEPOINT(trace_syscall_getrusage, "%d <= %d %p", int, int, struct rusage *);
+TRACEPOINT(trace_syscall_accept, "%d <= %d %p %p", int, int, struct sockaddr 
*, socklen_t *);
+TRACEPOINT(trace_syscall_fchdir, "%d <= %u", int, unsigned int);
+TRACEPOINT(trace_syscall_pipe, "%d <= %p", int, int*);
+TRACEPOINT(trace_syscall_fstatfs, "%d <= %u %p", int, unsigned int, struct 
statfs *);
+TRACEPOINT(trace_syscall_umask, "%d <= %d", mode_t, mode_t);
+TRACEPOINT(trace_syscall_prctl, "%d <= %d %lu %lu %lu %lu", int, int, unsigned 
long, unsigned long, unsigned long, unsigned long);
+TRACEPOINT(trace_syscall_chdir, "%d <= \"%s\"", int, const char *);
+TRACEPOINT(trace_syscall_faccessat, "%d <= %d \"%s\" %d %d", int, int, const 
char *, int, int);
+TRACEPOINT(trace_syscall_kill, "%d <= %d %d", int, pid_t, int);
+TRACEPOINT(trace_syscall_alarm, "%d <= %u", int, unsigned int);
+TRACEPOINT(trace_syscall_utimensat, "%d <= %d \"%s\" %p %d", int, int, const 
char *, const struct timespec*, int);
+TRACEPOINT(trace_syscall_symlink, "%d <= \"%s\" \"%s\"", int, const char *, 
const char *);
+TRACEPOINT(trace_syscall_rmdir, "%d <= \"%s\"", int, const char *);
+TRACEPOINT(trace_syscall_sethostname, "%d <= \"%s\" %d", int, const char *, 
int);
+TRACEPOINT(trace_syscall_creat, "%d <= \"%s\" %d", int, const char *, mode_t);
+TRACEPOINT(trace_syscall_timerfd_create, "%d <= %d %d", int, int, int);
+TRACEPOINT(trace_syscall_timerfd_settime, "%d <= %d %d %p %p", int, int, int, 
const struct itimerspec *, struct itimerspec *);
+TRACEPOINT(trace_syscall_timerfd_gettime, "%d <= %d %p", int, int, struct 
itimerspec*);
+TRACEPOINT(trace_syscall_chmod, "%d <= \"%s\" %d", int, const char *, mode_t);
+TRACEPOINT(trace_syscall_fchmod, "%d <= %d %d", int, int, mode_t);
+
 OSV_LIBC_API long syscall(long number, ...)
 {
     // Save FPU state and restore it at the end of this function
@@ -583,7 +725,7 @@ OSV_LIBC_API long syscall(long number, ...)
     SYSCALL4(accept4, int, struct sockaddr *, socklen_t *, int);
     SYSCALL3(connect, int, struct sockaddr *, socklen_t);
     SYSCALL5(get_mempolicy, int *, unsigned long *, unsigned long, void *, 
int);
-    SYSCALL3(sched_getaffinity_syscall, pid_t, unsigned, unsigned long *);
+    SYSCALL3(sys_sched_getaffinity, pid_t, unsigned, unsigned long *);
     SYSCALL6(long_mmap, void *, size_t, int, int, int, off_t);
     SYSCALL2(munmap, void *, size_t);
     SYSCALL4(rt_sigaction, int, const struct k_sigaction *, struct k_sigaction 
*, size_t);
@@ -631,11 +773,11 @@ OSV_LIBC_API long syscall(long number, ...)
     SYSCALL4(readlinkat, int, const char *, char *, size_t);
     SYSCALL0(getpid);
     SYSCALL3(set_mempolicy, int, unsigned long *, unsigned long);
-    SYSCALL3(sched_setaffinity_syscall, pid_t, unsigned, unsigned long *);
+    SYSCALL3(sys_sched_setaffinity, pid_t, unsigned, unsigned long *);
 #ifdef SYS_mkdir
-    SYSCALL2(mkdir, char*, mode_t);
+    SYSCALL2(mkdir, const char*, mode_t);
 #endif
-    SYSCALL3(mkdirat, int, char*, mode_t);
+    SYSCALL3(mkdirat, int, const char*, mode_t);
     SYSCALL3(tgkill, int, int, int);
     SYSCALL0(getgid);
     SYSCALL0(getuid);
@@ -651,7 +793,7 @@ OSV_LIBC_API long syscall(long number, ...)
     SYSCALL5(statx, int, const char *, int, unsigned int, struct statx *);
     SYSCALL3(sys_getcpu, unsigned int *, unsigned int *, void *);
     SYSCALL1(dup, int);
-    SYSCALL2(dup2, unsigned int , unsigned int);
+    SYSCALL2(dup2, int, int);
     SYSCALL3(mprotect, void *, size_t, int);
     SYSCALL2(access, const char *, int);
     SYSCALL3(writev, int, const struct iovec *, int);
@@ -683,7 +825,7 @@ OSV_LIBC_API long syscall(long number, ...)
     SYSCALL4(utimensat, int, const char *, const struct timespec*, int);
     SYSCALL2(symlink, const char *, const char *);
     SYSCALL1(rmdir, const char *);
-    SYSCALL2(sethostname, char *, int);
+    SYSCALL2(sethostname, const char *, int);
     SYSCALL2(creat, const char *, mode_t);
     SYSCALL2(timerfd_create, int, int);
     SYSCALL4(timerfd_settime, int, int, const struct itimerspec *, struct 
itimerspec *);

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/osv-dev/000000000000abab200609570aa1%40google.com.

Reply via email to