Detailed system call tracing (TRACE_EVENT() generation for integer support)
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 15 Sep 2011 23:06:40 +0000 (19:06 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 15 Sep 2011 23:06:40 +0000 (19:06 -0400)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
instrumentation/syscalls/3.0.4/x86-64-syscalls-3.0.4 [new file with mode: 0644]
instrumentation/syscalls/README [new file with mode: 0644]
instrumentation/syscalls/headers/x86-64-syscalls-3.0.4-integers.h [new file with mode: 0644]
instrumentation/syscalls/lttng-syscalls-extractor/Makefile [new file with mode: 0644]
instrumentation/syscalls/lttng-syscalls-extractor/linux-link-trace-syscalls-as-data.patch [new file with mode: 0644]
instrumentation/syscalls/lttng-syscalls-extractor/lttng-syscalls-extractor.c [new file with mode: 0644]
instrumentation/syscalls/lttng-syscalls-generate-headers.sh [new file with mode: 0644]
probes/lttng-probe-syscalls.c

diff --git a/instrumentation/syscalls/3.0.4/x86-64-syscalls-3.0.4 b/instrumentation/syscalls/3.0.4/x86-64-syscalls-3.0.4
new file mode 100644 (file)
index 0000000..b229472
--- /dev/null
@@ -0,0 +1,263 @@
+syscall sys_read nr 0 nbargs 3 types: (unsigned int, char *, size_t) args: (fd, buf, count)
+syscall sys_write nr 1 nbargs 3 types: (unsigned int, const char *, size_t) args: (fd, buf, count)
+syscall sys_open nr 2 nbargs 3 types: (const char *, int, int) args: (filename, flags, mode)
+syscall sys_close nr 3 nbargs 1 types: (unsigned int) args: (fd)
+syscall sys_newstat nr 4 nbargs 2 types: (const char *, struct stat *) args: (filename, statbuf)
+syscall sys_newfstat nr 5 nbargs 2 types: (unsigned int, struct stat *) args: (fd, statbuf)
+syscall sys_newlstat nr 6 nbargs 2 types: (const char *, struct stat *) args: (filename, statbuf)
+syscall sys_poll nr 7 nbargs 3 types: (struct pollfd *, unsigned int, long) args: (ufds, nfds, timeout_msecs)
+syscall sys_lseek nr 8 nbargs 3 types: (unsigned int, off_t, unsigned int) args: (fd, offset, origin)
+syscall sys_mmap nr 9 nbargs 6 types: (unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long) args: (addr, len, prot, flags, fd, off)
+syscall sys_mprotect nr 10 nbargs 3 types: (unsigned long, size_t, unsigned long) args: (start, len, prot)
+syscall sys_munmap nr 11 nbargs 2 types: (unsigned long, size_t) args: (addr, len)
+syscall sys_brk nr 12 nbargs 1 types: (unsigned long) args: (brk)
+syscall sys_rt_sigaction nr 13 nbargs 4 types: (int, const struct sigaction *, struct sigaction *, size_t) args: (sig, act, oact, sigsetsize)
+syscall sys_rt_sigprocmask nr 14 nbargs 4 types: (int, sigset_t *, sigset_t *, size_t) args: (how, nset, oset, sigsetsize)
+syscall sys_ioctl nr 16 nbargs 3 types: (unsigned int, unsigned int, unsigned long) args: (fd, cmd, arg)
+syscall sys_readv nr 19 nbargs 3 types: (unsigned long, const struct iovec *, unsigned long) args: (fd, vec, vlen)
+syscall sys_writev nr 20 nbargs 3 types: (unsigned long, const struct iovec *, unsigned long) args: (fd, vec, vlen)
+syscall sys_access nr 21 nbargs 2 types: (const char *, int) args: (filename, mode)
+syscall sys_pipe nr 22 nbargs 1 types: (int *) args: (fildes)
+syscall sys_select nr 23 nbargs 5 types: (int, fd_set *, fd_set *, fd_set *, struct timeval *) args: (n, inp, outp, exp, tvp)
+syscall sys_sched_yield nr 24 nbargs 0 types: () args: ()
+syscall sys_mremap nr 25 nbargs 5 types: (unsigned long, unsigned long, unsigned long, unsigned long, unsigned long) args: (addr, old_len, new_len, flags, new_addr)
+syscall sys_msync nr 26 nbargs 3 types: (unsigned long, size_t, int) args: (start, len, flags)
+syscall sys_mincore nr 27 nbargs 3 types: (unsigned long, size_t, unsigned char *) args: (start, len, vec)
+syscall sys_madvise nr 28 nbargs 3 types: (unsigned long, size_t, int) args: (start, len_in, behavior)
+syscall sys_shmget nr 29 nbargs 3 types: (key_t, size_t, int) args: (key, size, shmflg)
+syscall sys_shmat nr 30 nbargs 3 types: (int, char *, int) args: (shmid, shmaddr, shmflg)
+syscall sys_shmctl nr 31 nbargs 3 types: (int, int, struct shmid_ds *) args: (shmid, cmd, buf)
+syscall sys_dup nr 32 nbargs 1 types: (unsigned int) args: (fildes)
+syscall sys_dup2 nr 33 nbargs 2 types: (unsigned int, unsigned int) args: (oldfd, newfd)
+syscall sys_pause nr 34 nbargs 0 types: () args: ()
+syscall sys_nanosleep nr 35 nbargs 2 types: (struct timespec *, struct timespec *) args: (rqtp, rmtp)
+syscall sys_getitimer nr 36 nbargs 2 types: (int, struct itimerval *) args: (which, value)
+syscall sys_alarm nr 37 nbargs 1 types: (unsigned int) args: (seconds)
+syscall sys_setitimer nr 38 nbargs 3 types: (int, struct itimerval *, struct itimerval *) args: (which, value, ovalue)
+syscall sys_getpid nr 39 nbargs 0 types: () args: ()
+syscall sys_sendfile64 nr 40 nbargs 4 types: (int, int, loff_t *, size_t) args: (out_fd, in_fd, offset, count)
+syscall sys_socket nr 41 nbargs 3 types: (int, int, int) args: (family, type, protocol)
+syscall sys_connect nr 42 nbargs 3 types: (int, struct sockaddr *, int) args: (fd, uservaddr, addrlen)
+syscall sys_accept nr 43 nbargs 3 types: (int, struct sockaddr *, int *) args: (fd, upeer_sockaddr, upeer_addrlen)
+syscall sys_sendto nr 44 nbargs 6 types: (int, void *, size_t, unsigned, struct sockaddr *, int) args: (fd, buff, len, flags, addr, addr_len)
+syscall sys_recvfrom nr 45 nbargs 6 types: (int, void *, size_t, unsigned, struct sockaddr *, int *) args: (fd, ubuf, size, flags, addr, addr_len)
+syscall sys_sendmsg nr 46 nbargs 3 types: (int, struct msghdr *, unsigned) args: (fd, msg, flags)
+syscall sys_recvmsg nr 47 nbargs 3 types: (int, struct msghdr *, unsigned int) args: (fd, msg, flags)
+syscall sys_shutdown nr 48 nbargs 2 types: (int, int) args: (fd, how)
+syscall sys_bind nr 49 nbargs 3 types: (int, struct sockaddr *, int) args: (fd, umyaddr, addrlen)
+syscall sys_listen nr 50 nbargs 2 types: (int, int) args: (fd, backlog)
+syscall sys_getsockname nr 51 nbargs 3 types: (int, struct sockaddr *, int *) args: (fd, usockaddr, usockaddr_len)
+syscall sys_getpeername nr 52 nbargs 3 types: (int, struct sockaddr *, int *) args: (fd, usockaddr, usockaddr_len)
+syscall sys_socketpair nr 53 nbargs 4 types: (int, int, int, int *) args: (family, type, protocol, usockvec)
+syscall sys_setsockopt nr 54 nbargs 5 types: (int, int, int, char *, int) args: (fd, level, optname, optval, optlen)
+syscall sys_getsockopt nr 55 nbargs 5 types: (int, int, int, char *, int *) args: (fd, level, optname, optval, optlen)
+syscall sys_exit nr 60 nbargs 1 types: (int) args: (error_code)
+syscall sys_wait4 nr 61 nbargs 4 types: (pid_t, int *, int, struct rusage *) args: (upid, stat_addr, options, ru)
+syscall sys_kill nr 62 nbargs 2 types: (pid_t, int) args: (pid, sig)
+syscall sys_newuname nr 63 nbargs 1 types: (struct new_utsname *) args: (name)
+syscall sys_semget nr 64 nbargs 3 types: (key_t, int, int) args: (key, nsems, semflg)
+syscall sys_semop nr 65 nbargs 3 types: (int, struct sembuf *, unsigned) args: (semid, tsops, nsops)
+syscall sys_shmdt nr 67 nbargs 1 types: (char *) args: (shmaddr)
+syscall sys_msgget nr 68 nbargs 2 types: (key_t, int) args: (key, msgflg)
+syscall sys_msgsnd nr 69 nbargs 4 types: (int, struct msgbuf *, size_t, int) args: (msqid, msgp, msgsz, msgflg)
+syscall sys_msgrcv nr 70 nbargs 5 types: (int, struct msgbuf *, size_t, long, int) args: (msqid, msgp, msgsz, msgtyp, msgflg)
+syscall sys_msgctl nr 71 nbargs 3 types: (int, int, struct msqid_ds *) args: (msqid, cmd, buf)
+syscall sys_fcntl nr 72 nbargs 3 types: (unsigned int, unsigned int, unsigned long) args: (fd, cmd, arg)
+syscall sys_flock nr 73 nbargs 2 types: (unsigned int, unsigned int) args: (fd, cmd)
+syscall sys_fsync nr 74 nbargs 1 types: (unsigned int) args: (fd)
+syscall sys_fdatasync nr 75 nbargs 1 types: (unsigned int) args: (fd)
+syscall sys_truncate nr 76 nbargs 2 types: (const char *, long) args: (path, length)
+syscall sys_ftruncate nr 77 nbargs 2 types: (unsigned int, unsigned long) args: (fd, length)
+syscall sys_getdents nr 78 nbargs 3 types: (unsigned int, struct linux_dirent *, unsigned int) args: (fd, dirent, count)
+syscall sys_getcwd nr 79 nbargs 2 types: (char *, unsigned long) args: (buf, size)
+syscall sys_chdir nr 80 nbargs 1 types: (const char *) args: (filename)
+syscall sys_fchdir nr 81 nbargs 1 types: (unsigned int) args: (fd)
+syscall sys_rename nr 82 nbargs 2 types: (const char *, const char *) args: (oldname, newname)
+syscall sys_mkdir nr 83 nbargs 2 types: (const char *, int) args: (pathname, mode)
+syscall sys_rmdir nr 84 nbargs 1 types: (const char *) args: (pathname)
+syscall sys_creat nr 85 nbargs 2 types: (const char *, int) args: (pathname, mode)
+syscall sys_link nr 86 nbargs 2 types: (const char *, const char *) args: (oldname, newname)
+syscall sys_unlink nr 87 nbargs 1 types: (const char *) args: (pathname)
+syscall sys_symlink nr 88 nbargs 2 types: (const char *, const char *) args: (oldname, newname)
+syscall sys_readlink nr 89 nbargs 3 types: (const char *, char *, int) args: (path, buf, bufsiz)
+syscall sys_chmod nr 90 nbargs 2 types: (const char *, mode_t) args: (filename, mode)
+syscall sys_fchmod nr 91 nbargs 2 types: (unsigned int, mode_t) args: (fd, mode)
+syscall sys_chown nr 92 nbargs 3 types: (const char *, uid_t, gid_t) args: (filename, user, group)
+syscall sys_fchown nr 93 nbargs 3 types: (unsigned int, uid_t, gid_t) args: (fd, user, group)
+syscall sys_lchown nr 94 nbargs 3 types: (const char *, uid_t, gid_t) args: (filename, user, group)
+syscall sys_umask nr 95 nbargs 1 types: (int) args: (mask)
+syscall sys_gettimeofday nr 96 nbargs 2 types: (struct timeval *, struct timezone *) args: (tv, tz)
+syscall sys_getrlimit nr 97 nbargs 2 types: (unsigned int, struct rlimit *) args: (resource, rlim)
+syscall sys_getrusage nr 98 nbargs 2 types: (int, struct rusage *) args: (who, ru)
+syscall sys_sysinfo nr 99 nbargs 1 types: (struct sysinfo *) args: (info)
+syscall sys_times nr 100 nbargs 1 types: (struct tms *) args: (tbuf)
+syscall sys_ptrace nr 101 nbargs 4 types: (long, long, unsigned long, unsigned long) args: (request, pid, addr, data)
+syscall sys_getuid nr 102 nbargs 0 types: () args: ()
+syscall sys_syslog nr 103 nbargs 3 types: (int, char *, int) args: (type, buf, len)
+syscall sys_getgid nr 104 nbargs 0 types: () args: ()
+syscall sys_setuid nr 105 nbargs 1 types: (uid_t) args: (uid)
+syscall sys_setgid nr 106 nbargs 1 types: (gid_t) args: (gid)
+syscall sys_geteuid nr 107 nbargs 0 types: () args: ()
+syscall sys_getegid nr 108 nbargs 0 types: () args: ()
+syscall sys_setpgid nr 109 nbargs 2 types: (pid_t, pid_t) args: (pid, pgid)
+syscall sys_getppid nr 110 nbargs 0 types: () args: ()
+syscall sys_getpgrp nr 111 nbargs 0 types: () args: ()
+syscall sys_setsid nr 112 nbargs 0 types: () args: ()
+syscall sys_setreuid nr 113 nbargs 2 types: (uid_t, uid_t) args: (ruid, euid)
+syscall sys_setregid nr 114 nbargs 2 types: (gid_t, gid_t) args: (rgid, egid)
+syscall sys_getgroups nr 115 nbargs 2 types: (int, gid_t *) args: (gidsetsize, grouplist)
+syscall sys_setgroups nr 116 nbargs 2 types: (int, gid_t *) args: (gidsetsize, grouplist)
+syscall sys_setresuid nr 117 nbargs 3 types: (uid_t, uid_t, uid_t) args: (ruid, euid, suid)
+syscall sys_getresuid nr 118 nbargs 3 types: (uid_t *, uid_t *, uid_t *) args: (ruid, euid, suid)
+syscall sys_setresgid nr 119 nbargs 3 types: (gid_t, gid_t, gid_t) args: (rgid, egid, sgid)
+syscall sys_getresgid nr 120 nbargs 3 types: (gid_t *, gid_t *, gid_t *) args: (rgid, egid, sgid)
+syscall sys_getpgid nr 121 nbargs 1 types: (pid_t) args: (pid)
+syscall sys_setfsuid nr 122 nbargs 1 types: (uid_t) args: (uid)
+syscall sys_setfsgid nr 123 nbargs 1 types: (gid_t) args: (gid)
+syscall sys_getsid nr 124 nbargs 1 types: (pid_t) args: (pid)
+syscall sys_capget nr 125 nbargs 2 types: (cap_user_header_t, cap_user_data_t) args: (header, dataptr)
+syscall sys_capset nr 126 nbargs 2 types: (cap_user_header_t, const cap_user_data_t) args: (header, data)
+syscall sys_rt_sigpending nr 127 nbargs 2 types: (sigset_t *, size_t) args: (set, sigsetsize)
+syscall sys_rt_sigtimedwait nr 128 nbargs 4 types: (const sigset_t *, siginfo_t *, const struct timespec *, size_t) args: (uthese, uinfo, uts, sigsetsize)
+syscall sys_rt_sigqueueinfo nr 129 nbargs 3 types: (pid_t, int, siginfo_t *) args: (pid, sig, uinfo)
+syscall sys_rt_sigsuspend nr 130 nbargs 2 types: (sigset_t *, size_t) args: (unewset, sigsetsize)
+syscall sys_utime nr 132 nbargs 2 types: (char *, struct utimbuf *) args: (filename, times)
+syscall sys_mknod nr 133 nbargs 3 types: (const char *, int, unsigned) args: (filename, mode, dev)
+syscall sys_personality nr 135 nbargs 1 types: (unsigned int) args: (personality)
+syscall sys_ustat nr 136 nbargs 2 types: (unsigned, struct ustat *) args: (dev, ubuf)
+syscall sys_statfs nr 137 nbargs 2 types: (const char *, struct statfs *) args: (pathname, buf)
+syscall sys_fstatfs nr 138 nbargs 2 types: (unsigned int, struct statfs *) args: (fd, buf)
+syscall sys_sysfs nr 139 nbargs 3 types: (int, unsigned long, unsigned long) args: (option, arg1, arg2)
+syscall sys_getpriority nr 140 nbargs 2 types: (int, int) args: (which, who)
+syscall sys_setpriority nr 141 nbargs 3 types: (int, int, int) args: (which, who, niceval)
+syscall sys_sched_setparam nr 142 nbargs 2 types: (pid_t, struct sched_param *) args: (pid, param)
+syscall sys_sched_getparam nr 143 nbargs 2 types: (pid_t, struct sched_param *) args: (pid, param)
+syscall sys_sched_setscheduler nr 144 nbargs 3 types: (pid_t, int, struct sched_param *) args: (pid, policy, param)
+syscall sys_sched_getscheduler nr 145 nbargs 1 types: (pid_t) args: (pid)
+syscall sys_sched_get_priority_max nr 146 nbargs 1 types: (int) args: (policy)
+syscall sys_sched_get_priority_min nr 147 nbargs 1 types: (int) args: (policy)
+syscall sys_sched_rr_get_interval nr 148 nbargs 2 types: (pid_t, struct timespec *) args: (pid, interval)
+syscall sys_mlock nr 149 nbargs 2 types: (unsigned long, size_t) args: (start, len)
+syscall sys_munlock nr 150 nbargs 2 types: (unsigned long, size_t) args: (start, len)
+syscall sys_mlockall nr 151 nbargs 1 types: (int) args: (flags)
+syscall sys_munlockall nr 152 nbargs 0 types: () args: ()
+syscall sys_vhangup nr 153 nbargs 0 types: () args: ()
+syscall sys_pivot_root nr 155 nbargs 2 types: (const char *, const char *) args: (new_root, put_old)
+syscall sys_sysctl nr 156 nbargs 1 types: (struct __sysctl_args *) args: (args)
+syscall sys_prctl nr 157 nbargs 5 types: (int, unsigned long, unsigned long, unsigned long, unsigned long) args: (option, arg2, arg3, arg4, arg5)
+syscall sys_adjtimex nr 159 nbargs 1 types: (struct timex *) args: (txc_p)
+syscall sys_setrlimit nr 160 nbargs 2 types: (unsigned int, struct rlimit *) args: (resource, rlim)
+syscall sys_chroot nr 161 nbargs 1 types: (const char *) args: (filename)
+syscall sys_sync nr 162 nbargs 0 types: () args: ()
+syscall sys_settimeofday nr 164 nbargs 2 types: (struct timeval *, struct timezone *) args: (tv, tz)
+syscall sys_mount nr 165 nbargs 5 types: (char *, char *, char *, unsigned long, void *) args: (dev_name, dir_name, type, flags, data)
+syscall sys_umount nr 166 nbargs 2 types: (char *, int) args: (name, flags)
+syscall sys_swapon nr 167 nbargs 2 types: (const char *, int) args: (specialfile, swap_flags)
+syscall sys_swapoff nr 168 nbargs 1 types: (const char *) args: (specialfile)
+syscall sys_reboot nr 169 nbargs 4 types: (int, int, unsigned int, void *) args: (magic1, magic2, cmd, arg)
+syscall sys_sethostname nr 170 nbargs 2 types: (char *, int) args: (name, len)
+syscall sys_setdomainname nr 171 nbargs 2 types: (char *, int) args: (name, len)
+syscall sys_init_module nr 175 nbargs 3 types: (void *, unsigned long, const char *) args: (umod, len, uargs)
+syscall sys_delete_module nr 176 nbargs 2 types: (const char *, unsigned int) args: (name_user, flags)
+syscall sys_nfsservctl nr 180 nbargs 3 types: (int, struct nfsctl_arg *, void *) args: (cmd, arg, res)
+syscall sys_gettid nr 186 nbargs 0 types: () args: ()
+syscall sys_setxattr nr 188 nbargs 5 types: (const char *, const char *, const void *, size_t, int) args: (pathname, name, value, size, flags)
+syscall sys_lsetxattr nr 189 nbargs 5 types: (const char *, const char *, const void *, size_t, int) args: (pathname, name, value, size, flags)
+syscall sys_fsetxattr nr 190 nbargs 5 types: (int, const char *, const void *, size_t, int) args: (fd, name, value, size, flags)
+syscall sys_getxattr nr 191 nbargs 4 types: (const char *, const char *, void *, size_t) args: (pathname, name, value, size)
+syscall sys_lgetxattr nr 192 nbargs 4 types: (const char *, const char *, void *, size_t) args: (pathname, name, value, size)
+syscall sys_fgetxattr nr 193 nbargs 4 types: (int, const char *, void *, size_t) args: (fd, name, value, size)
+syscall sys_listxattr nr 194 nbargs 3 types: (const char *, char *, size_t) args: (pathname, list, size)
+syscall sys_llistxattr nr 195 nbargs 3 types: (const char *, char *, size_t) args: (pathname, list, size)
+syscall sys_flistxattr nr 196 nbargs 3 types: (int, char *, size_t) args: (fd, list, size)
+syscall sys_removexattr nr 197 nbargs 2 types: (const char *, const char *) args: (pathname, name)
+syscall sys_lremovexattr nr 198 nbargs 2 types: (const char *, const char *) args: (pathname, name)
+syscall sys_fremovexattr nr 199 nbargs 2 types: (int, const char *) args: (fd, name)
+syscall sys_tkill nr 200 nbargs 2 types: (pid_t, int) args: (pid, sig)
+syscall sys_time nr 201 nbargs 1 types: (time_t *) args: (tloc)
+syscall sys_futex nr 202 nbargs 6 types: (u32 *, int, u32, struct timespec *, u32 *, u32) args: (uaddr, op, val, utime, uaddr2, val3)
+syscall sys_sched_setaffinity nr 203 nbargs 3 types: (pid_t, unsigned int, unsigned long *) args: (pid, len, user_mask_ptr)
+syscall sys_sched_getaffinity nr 204 nbargs 3 types: (pid_t, unsigned int, unsigned long *) args: (pid, len, user_mask_ptr)
+syscall sys_io_setup nr 206 nbargs 2 types: (unsigned, aio_context_t *) args: (nr_events, ctxp)
+syscall sys_io_destroy nr 207 nbargs 1 types: (aio_context_t) args: (ctx)
+syscall sys_io_getevents nr 208 nbargs 5 types: (aio_context_t, long, long, struct io_event *, struct timespec *) args: (ctx_id, min_nr, nr, events, timeout)
+syscall sys_io_submit nr 209 nbargs 3 types: (aio_context_t, long, struct iocb * *) args: (ctx_id, nr, iocbpp)
+syscall sys_io_cancel nr 210 nbargs 3 types: (aio_context_t, struct iocb *, struct io_event *) args: (ctx_id, iocb, result)
+syscall sys_epoll_create nr 213 nbargs 1 types: (int) args: (size)
+syscall sys_remap_file_pages nr 216 nbargs 5 types: (unsigned long, unsigned long, unsigned long, unsigned long, unsigned long) args: (start, size, prot, pgoff, flags)
+syscall sys_getdents64 nr 217 nbargs 3 types: (unsigned int, struct linux_dirent64 *, unsigned int) args: (fd, dirent, count)
+syscall sys_set_tid_address nr 218 nbargs 1 types: (int *) args: (tidptr)
+syscall sys_restart_syscall nr 219 nbargs 0 types: () args: ()
+syscall sys_semtimedop nr 220 nbargs 4 types: (int, struct sembuf *, unsigned, const struct timespec *) args: (semid, tsops, nsops, timeout)
+syscall sys_timer_create nr 222 nbargs 3 types: (const clockid_t, struct sigevent *, timer_t *) args: (which_clock, timer_event_spec, created_timer_id)
+syscall sys_timer_settime nr 223 nbargs 4 types: (timer_t, int, const struct itimerspec *, struct itimerspec *) args: (timer_id, flags, new_setting, old_setting)
+syscall sys_timer_gettime nr 224 nbargs 2 types: (timer_t, struct itimerspec *) args: (timer_id, setting)
+syscall sys_timer_getoverrun nr 225 nbargs 1 types: (timer_t) args: (timer_id)
+syscall sys_timer_delete nr 226 nbargs 1 types: (timer_t) args: (timer_id)
+syscall sys_clock_settime nr 227 nbargs 2 types: (const clockid_t, const struct timespec *) args: (which_clock, tp)
+syscall sys_clock_gettime nr 228 nbargs 2 types: (const clockid_t, struct timespec *) args: (which_clock, tp)
+syscall sys_clock_getres nr 229 nbargs 2 types: (const clockid_t, struct timespec *) args: (which_clock, tp)
+syscall sys_clock_nanosleep nr 230 nbargs 4 types: (const clockid_t, int, const struct timespec *, struct timespec *) args: (which_clock, flags, rqtp, rmtp)
+syscall sys_exit_group nr 231 nbargs 1 types: (int) args: (error_code)
+syscall sys_epoll_wait nr 232 nbargs 4 types: (int, struct epoll_event *, int, int) args: (epfd, events, maxevents, timeout)
+syscall sys_epoll_ctl nr 233 nbargs 4 types: (int, int, int, struct epoll_event *) args: (epfd, op, fd, event)
+syscall sys_tgkill nr 234 nbargs 3 types: (pid_t, pid_t, int) args: (tgid, pid, sig)
+syscall sys_utimes nr 235 nbargs 2 types: (char *, struct timeval *) args: (filename, utimes)
+syscall sys_mq_open nr 240 nbargs 4 types: (const char *, int, mode_t, struct mq_attr *) args: (u_name, oflag, mode, u_attr)
+syscall sys_mq_unlink nr 241 nbargs 1 types: (const char *) args: (u_name)
+syscall sys_mq_timedsend nr 242 nbargs 5 types: (mqd_t, const char *, size_t, unsigned int, const struct timespec *) args: (mqdes, u_msg_ptr, msg_len, msg_prio, u_abs_timeout)
+syscall sys_mq_timedreceive nr 243 nbargs 5 types: (mqd_t, char *, size_t, unsigned int *, const struct timespec *) args: (mqdes, u_msg_ptr, msg_len, u_msg_prio, u_abs_timeout)
+syscall sys_mq_notify nr 244 nbargs 2 types: (mqd_t, const struct sigevent *) args: (mqdes, u_notification)
+syscall sys_mq_getsetattr nr 245 nbargs 3 types: (mqd_t, const struct mq_attr *, struct mq_attr *) args: (mqdes, u_mqstat, u_omqstat)
+syscall sys_kexec_load nr 246 nbargs 4 types: (unsigned long, unsigned long, struct kexec_segment *, unsigned long) args: (entry, nr_segments, segments, flags)
+syscall sys_waitid nr 247 nbargs 5 types: (int, pid_t, struct siginfo *, int, struct rusage *) args: (which, upid, infop, options, ru)
+syscall sys_ioprio_set nr 251 nbargs 3 types: (int, int, int) args: (which, who, ioprio)
+syscall sys_ioprio_get nr 252 nbargs 2 types: (int, int) args: (which, who)
+syscall sys_inotify_init nr 253 nbargs 0 types: () args: ()
+syscall sys_inotify_add_watch nr 254 nbargs 3 types: (int, const char *, u32) args: (fd, pathname, mask)
+syscall sys_inotify_rm_watch nr 255 nbargs 2 types: (int, __s32) args: (fd, wd)
+syscall sys_openat nr 257 nbargs 4 types: (int, const char *, int, int) args: (dfd, filename, flags, mode)
+syscall sys_mkdirat nr 258 nbargs 3 types: (int, const char *, int) args: (dfd, pathname, mode)
+syscall sys_mknodat nr 259 nbargs 4 types: (int, const char *, int, unsigned) args: (dfd, filename, mode, dev)
+syscall sys_fchownat nr 260 nbargs 5 types: (int, const char *, uid_t, gid_t, int) args: (dfd, filename, user, group, flag)
+syscall sys_futimesat nr 261 nbargs 3 types: (int, const char *, struct timeval *) args: (dfd, filename, utimes)
+syscall sys_newfstatat nr 262 nbargs 4 types: (int, const char *, struct stat *, int) args: (dfd, filename, statbuf, flag)
+syscall sys_unlinkat nr 263 nbargs 3 types: (int, const char *, int) args: (dfd, pathname, flag)
+syscall sys_renameat nr 264 nbargs 4 types: (int, const char *, int, const char *) args: (olddfd, oldname, newdfd, newname)
+syscall sys_linkat nr 265 nbargs 5 types: (int, const char *, int, const char *, int) args: (olddfd, oldname, newdfd, newname, flags)
+syscall sys_symlinkat nr 266 nbargs 3 types: (const char *, int, const char *) args: (oldname, newdfd, newname)
+syscall sys_readlinkat nr 267 nbargs 4 types: (int, const char *, char *, int) args: (dfd, pathname, buf, bufsiz)
+syscall sys_fchmodat nr 268 nbargs 3 types: (int, const char *, mode_t) args: (dfd, filename, mode)
+syscall sys_faccessat nr 269 nbargs 3 types: (int, const char *, int) args: (dfd, filename, mode)
+syscall sys_pselect6 nr 270 nbargs 6 types: (int, fd_set *, fd_set *, fd_set *, struct timespec *, void *) args: (n, inp, outp, exp, tsp, sig)
+syscall sys_ppoll nr 271 nbargs 5 types: (struct pollfd *, unsigned int, struct timespec *, const sigset_t *, size_t) args: (ufds, nfds, tsp, sigmask, sigsetsize)
+syscall sys_unshare nr 272 nbargs 1 types: (unsigned long) args: (unshare_flags)
+syscall sys_set_robust_list nr 273 nbargs 2 types: (struct robust_list_head *, size_t) args: (head, len)
+syscall sys_get_robust_list nr 274 nbargs 3 types: (int, struct robust_list_head * *, size_t *) args: (pid, head_ptr, len_ptr)
+syscall sys_splice nr 275 nbargs 6 types: (int, loff_t *, int, loff_t *, size_t, unsigned int) args: (fd_in, off_in, fd_out, off_out, len, flags)
+syscall sys_tee nr 276 nbargs 4 types: (int, int, size_t, unsigned int) args: (fdin, fdout, len, flags)
+syscall sys_vmsplice nr 278 nbargs 4 types: (int, const struct iovec *, unsigned long, unsigned int) args: (fd, iov, nr_segs, flags)
+syscall sys_utimensat nr 280 nbargs 4 types: (int, const char *, struct timespec *, int) args: (dfd, filename, utimes, flags)
+syscall sys_epoll_pwait nr 281 nbargs 6 types: (int, struct epoll_event *, int, int, const sigset_t *, size_t) args: (epfd, events, maxevents, timeout, sigmask, sigsetsize)
+syscall sys_signalfd nr 282 nbargs 3 types: (int, sigset_t *, size_t) args: (ufd, user_mask, sizemask)
+syscall sys_timerfd_create nr 283 nbargs 2 types: (int, int) args: (clockid, flags)
+syscall sys_eventfd nr 284 nbargs 1 types: (unsigned int) args: (count)
+syscall sys_timerfd_settime nr 286 nbargs 4 types: (int, int, const struct itimerspec *, struct itimerspec *) args: (ufd, flags, utmr, otmr)
+syscall sys_timerfd_gettime nr 287 nbargs 2 types: (int, struct itimerspec *) args: (ufd, otmr)
+syscall sys_accept4 nr 288 nbargs 4 types: (int, struct sockaddr *, int *, int) args: (fd, upeer_sockaddr, upeer_addrlen, flags)
+syscall sys_signalfd4 nr 289 nbargs 4 types: (int, sigset_t *, size_t, int) args: (ufd, user_mask, sizemask, flags)
+syscall sys_eventfd2 nr 290 nbargs 2 types: (unsigned int, int) args: (count, flags)
+syscall sys_epoll_create1 nr 291 nbargs 1 types: (int) args: (flags)
+syscall sys_dup3 nr 292 nbargs 3 types: (unsigned int, unsigned int, int) args: (oldfd, newfd, flags)
+syscall sys_pipe2 nr 293 nbargs 2 types: (int *, int) args: (fildes, flags)
+syscall sys_inotify_init1 nr 294 nbargs 1 types: (int) args: (flags)
+syscall sys_preadv nr 295 nbargs 5 types: (unsigned long, const struct iovec *, unsigned long, unsigned long, unsigned long) args: (fd, vec, vlen, pos_l, pos_h)
+syscall sys_pwritev nr 296 nbargs 5 types: (unsigned long, const struct iovec *, unsigned long, unsigned long, unsigned long) args: (fd, vec, vlen, pos_l, pos_h)
+syscall sys_rt_tgsigqueueinfo nr 297 nbargs 4 types: (pid_t, pid_t, int, siginfo_t *) args: (tgid, pid, sig, uinfo)
+syscall sys_perf_event_open nr 298 nbargs 5 types: (struct perf_event_attr *, pid_t, int, int, unsigned long) args: (attr_uptr, pid, cpu, group_fd, flags)
+syscall sys_recvmmsg nr 299 nbargs 5 types: (int, struct mmsghdr *, unsigned int, unsigned int, struct timespec *) args: (fd, mmsg, vlen, flags, timeout)
+syscall sys_prlimit64 nr 302 nbargs 4 types: (pid_t, unsigned int, const struct rlimit64 *, struct rlimit64 *) args: (pid, resource, new_rlim, old_rlim)
+syscall sys_clock_adjtime nr 305 nbargs 2 types: (const clockid_t, struct timex *) args: (which_clock, utx)
+syscall sys_syncfs nr 306 nbargs 1 types: (int) args: (fd)
+syscall sys_sendmmsg nr 307 nbargs 4 types: (int, struct mmsghdr *, unsigned int, unsigned int) args: (fd, mmsg, vlen, flags)
+syscall sys_setns nr 308 nbargs 2 types: (int, int) args: (fd, nstype)
diff --git a/instrumentation/syscalls/README b/instrumentation/syscalls/README
new file mode 100644 (file)
index 0000000..4b85799
--- /dev/null
@@ -0,0 +1,18 @@
+LTTng system call tracing
+
+1) lttng-syscall-extractor
+
+You need to build a kernel with CONFIG_FTRACE_SYSCALLS=y for extraction. Apply
+the linker patch to get your kernel to keep the system call metadata after boot.
+Then build and load the LTTng syscall extractor module. The module will fail to
+load (this is expected). See the dmesg output for system call metadata.
+
+2) Generate system call TRACE_EVENT().
+
+Take the dmesg metadata and feed it to lttng-syscalls-generate-headers.sh, e.g.,
+from the instrumentation/syscalls directory:
+
+sh lttng-syscalls-generate-headers.sh 3.0.4 x86-64-syscalls-3.0.4
+
+After these are created, we just need to follow the new system call additions,
+no need to regenerate the whole thing, since system calls are only appended to.
diff --git a/instrumentation/syscalls/headers/x86-64-syscalls-3.0.4-integers.h b/instrumentation/syscalls/headers/x86-64-syscalls-3.0.4-integers.h
new file mode 100644 (file)
index 0000000..4dd473f
--- /dev/null
@@ -0,0 +1,533 @@
+/* THIS FILE IS AUTO-GENERATED. DO NOT EDIT */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM syscall
+
+#if !defined(_TRACE_SYSCALL_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_SYSCALL_H
+
+#include <linux/tracepoint.h>
+#include <linux/syscalls.h>
+
+TRACE_EVENT(sys_close,
+       TP_PROTO(unsigned int fd),
+       TP_ARGS(fd),
+       TP_STRUCT__entry(__field(unsigned int, fd)),
+       TP_fast_assign(tp_assign(fd, fd)),
+       TP_printk()
+)
+TRACE_EVENT(sys_brk,
+       TP_PROTO(unsigned long brk),
+       TP_ARGS(brk),
+       TP_STRUCT__entry(__field(unsigned long, brk)),
+       TP_fast_assign(tp_assign(brk, brk)),
+       TP_printk()
+)
+TRACE_EVENT(sys_dup,
+       TP_PROTO(unsigned int fildes),
+       TP_ARGS(fildes),
+       TP_STRUCT__entry(__field(unsigned int, fildes)),
+       TP_fast_assign(tp_assign(fildes, fildes)),
+       TP_printk()
+)
+TRACE_EVENT(sys_alarm,
+       TP_PROTO(unsigned int seconds),
+       TP_ARGS(seconds),
+       TP_STRUCT__entry(__field(unsigned int, seconds)),
+       TP_fast_assign(tp_assign(seconds, seconds)),
+       TP_printk()
+)
+TRACE_EVENT(sys_exit,
+       TP_PROTO(int error_code),
+       TP_ARGS(error_code),
+       TP_STRUCT__entry(__field(int, error_code)),
+       TP_fast_assign(tp_assign(error_code, error_code)),
+       TP_printk()
+)
+TRACE_EVENT(sys_fsync,
+       TP_PROTO(unsigned int fd),
+       TP_ARGS(fd),
+       TP_STRUCT__entry(__field(unsigned int, fd)),
+       TP_fast_assign(tp_assign(fd, fd)),
+       TP_printk()
+)
+TRACE_EVENT(sys_fdatasync,
+       TP_PROTO(unsigned int fd),
+       TP_ARGS(fd),
+       TP_STRUCT__entry(__field(unsigned int, fd)),
+       TP_fast_assign(tp_assign(fd, fd)),
+       TP_printk()
+)
+TRACE_EVENT(sys_fchdir,
+       TP_PROTO(unsigned int fd),
+       TP_ARGS(fd),
+       TP_STRUCT__entry(__field(unsigned int, fd)),
+       TP_fast_assign(tp_assign(fd, fd)),
+       TP_printk()
+)
+TRACE_EVENT(sys_umask,
+       TP_PROTO(int mask),
+       TP_ARGS(mask),
+       TP_STRUCT__entry(__field(int, mask)),
+       TP_fast_assign(tp_assign(mask, mask)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setuid,
+       TP_PROTO(uid_t uid),
+       TP_ARGS(uid),
+       TP_STRUCT__entry(__field(uid_t, uid)),
+       TP_fast_assign(tp_assign(uid, uid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setgid,
+       TP_PROTO(gid_t gid),
+       TP_ARGS(gid),
+       TP_STRUCT__entry(__field(gid_t, gid)),
+       TP_fast_assign(tp_assign(gid, gid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_getpgid,
+       TP_PROTO(pid_t pid),
+       TP_ARGS(pid),
+       TP_STRUCT__entry(__field(pid_t, pid)),
+       TP_fast_assign(tp_assign(pid, pid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setfsuid,
+       TP_PROTO(uid_t uid),
+       TP_ARGS(uid),
+       TP_STRUCT__entry(__field(uid_t, uid)),
+       TP_fast_assign(tp_assign(uid, uid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setfsgid,
+       TP_PROTO(gid_t gid),
+       TP_ARGS(gid),
+       TP_STRUCT__entry(__field(gid_t, gid)),
+       TP_fast_assign(tp_assign(gid, gid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_getsid,
+       TP_PROTO(pid_t pid),
+       TP_ARGS(pid),
+       TP_STRUCT__entry(__field(pid_t, pid)),
+       TP_fast_assign(tp_assign(pid, pid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_personality,
+       TP_PROTO(unsigned int personality),
+       TP_ARGS(personality),
+       TP_STRUCT__entry(__field(unsigned int, personality)),
+       TP_fast_assign(tp_assign(personality, personality)),
+       TP_printk()
+)
+TRACE_EVENT(sys_sched_getscheduler,
+       TP_PROTO(pid_t pid),
+       TP_ARGS(pid),
+       TP_STRUCT__entry(__field(pid_t, pid)),
+       TP_fast_assign(tp_assign(pid, pid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_sched_get_priority_max,
+       TP_PROTO(int policy),
+       TP_ARGS(policy),
+       TP_STRUCT__entry(__field(int, policy)),
+       TP_fast_assign(tp_assign(policy, policy)),
+       TP_printk()
+)
+TRACE_EVENT(sys_sched_get_priority_min,
+       TP_PROTO(int policy),
+       TP_ARGS(policy),
+       TP_STRUCT__entry(__field(int, policy)),
+       TP_fast_assign(tp_assign(policy, policy)),
+       TP_printk()
+)
+TRACE_EVENT(sys_mlockall,
+       TP_PROTO(int flags),
+       TP_ARGS(flags),
+       TP_STRUCT__entry(__field(int, flags)),
+       TP_fast_assign(tp_assign(flags, flags)),
+       TP_printk()
+)
+TRACE_EVENT(sys_io_destroy,
+       TP_PROTO(aio_context_t ctx),
+       TP_ARGS(ctx),
+       TP_STRUCT__entry(__field(aio_context_t, ctx)),
+       TP_fast_assign(tp_assign(ctx, ctx)),
+       TP_printk()
+)
+TRACE_EVENT(sys_epoll_create,
+       TP_PROTO(int size),
+       TP_ARGS(size),
+       TP_STRUCT__entry(__field(int, size)),
+       TP_fast_assign(tp_assign(size, size)),
+       TP_printk()
+)
+TRACE_EVENT(sys_timer_getoverrun,
+       TP_PROTO(timer_t timer_id),
+       TP_ARGS(timer_id),
+       TP_STRUCT__entry(__field(timer_t, timer_id)),
+       TP_fast_assign(tp_assign(timer_id, timer_id)),
+       TP_printk()
+)
+TRACE_EVENT(sys_timer_delete,
+       TP_PROTO(timer_t timer_id),
+       TP_ARGS(timer_id),
+       TP_STRUCT__entry(__field(timer_t, timer_id)),
+       TP_fast_assign(tp_assign(timer_id, timer_id)),
+       TP_printk()
+)
+TRACE_EVENT(sys_exit_group,
+       TP_PROTO(int error_code),
+       TP_ARGS(error_code),
+       TP_STRUCT__entry(__field(int, error_code)),
+       TP_fast_assign(tp_assign(error_code, error_code)),
+       TP_printk()
+)
+TRACE_EVENT(sys_unshare,
+       TP_PROTO(unsigned long unshare_flags),
+       TP_ARGS(unshare_flags),
+       TP_STRUCT__entry(__field(unsigned long, unshare_flags)),
+       TP_fast_assign(tp_assign(unshare_flags, unshare_flags)),
+       TP_printk()
+)
+TRACE_EVENT(sys_eventfd,
+       TP_PROTO(unsigned int count),
+       TP_ARGS(count),
+       TP_STRUCT__entry(__field(unsigned int, count)),
+       TP_fast_assign(tp_assign(count, count)),
+       TP_printk()
+)
+TRACE_EVENT(sys_epoll_create1,
+       TP_PROTO(int flags),
+       TP_ARGS(flags),
+       TP_STRUCT__entry(__field(int, flags)),
+       TP_fast_assign(tp_assign(flags, flags)),
+       TP_printk()
+)
+TRACE_EVENT(sys_inotify_init1,
+       TP_PROTO(int flags),
+       TP_ARGS(flags),
+       TP_STRUCT__entry(__field(int, flags)),
+       TP_fast_assign(tp_assign(flags, flags)),
+       TP_printk()
+)
+TRACE_EVENT(sys_syncfs,
+       TP_PROTO(int fd),
+       TP_ARGS(fd),
+       TP_STRUCT__entry(__field(int, fd)),
+       TP_fast_assign(tp_assign(fd, fd)),
+       TP_printk()
+)
+TRACE_EVENT(sys_munmap,
+       TP_PROTO(unsigned long addr, size_t len),
+       TP_ARGS(addr, len),
+       TP_STRUCT__entry(__field(unsigned long, addr) __field(size_t, len)),
+       TP_fast_assign(tp_assign(addr, addr) tp_assign(len, len)),
+       TP_printk()
+)
+TRACE_EVENT(sys_dup2,
+       TP_PROTO(unsigned int oldfd, unsigned int newfd),
+       TP_ARGS(oldfd, newfd),
+       TP_STRUCT__entry(__field(unsigned int, oldfd) __field(unsigned int, newfd)),
+       TP_fast_assign(tp_assign(oldfd, oldfd) tp_assign(newfd, newfd)),
+       TP_printk()
+)
+TRACE_EVENT(sys_shutdown,
+       TP_PROTO(int fd, int how),
+       TP_ARGS(fd, how),
+       TP_STRUCT__entry(__field(int, fd) __field(int, how)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(how, how)),
+       TP_printk()
+)
+TRACE_EVENT(sys_listen,
+       TP_PROTO(int fd, int backlog),
+       TP_ARGS(fd, backlog),
+       TP_STRUCT__entry(__field(int, fd) __field(int, backlog)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(backlog, backlog)),
+       TP_printk()
+)
+TRACE_EVENT(sys_kill,
+       TP_PROTO(pid_t pid, int sig),
+       TP_ARGS(pid, sig),
+       TP_STRUCT__entry(__field(pid_t, pid) __field(int, sig)),
+       TP_fast_assign(tp_assign(pid, pid) tp_assign(sig, sig)),
+       TP_printk()
+)
+TRACE_EVENT(sys_msgget,
+       TP_PROTO(key_t key, int msgflg),
+       TP_ARGS(key, msgflg),
+       TP_STRUCT__entry(__field(key_t, key) __field(int, msgflg)),
+       TP_fast_assign(tp_assign(key, key) tp_assign(msgflg, msgflg)),
+       TP_printk()
+)
+TRACE_EVENT(sys_flock,
+       TP_PROTO(unsigned int fd, unsigned int cmd),
+       TP_ARGS(fd, cmd),
+       TP_STRUCT__entry(__field(unsigned int, fd) __field(unsigned int, cmd)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(cmd, cmd)),
+       TP_printk()
+)
+TRACE_EVENT(sys_ftruncate,
+       TP_PROTO(unsigned int fd, unsigned long length),
+       TP_ARGS(fd, length),
+       TP_STRUCT__entry(__field(unsigned int, fd) __field(unsigned long, length)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(length, length)),
+       TP_printk()
+)
+TRACE_EVENT(sys_fchmod,
+       TP_PROTO(unsigned int fd, mode_t mode),
+       TP_ARGS(fd, mode),
+       TP_STRUCT__entry(__field(unsigned int, fd) __field(mode_t, mode)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(mode, mode)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setpgid,
+       TP_PROTO(pid_t pid, pid_t pgid),
+       TP_ARGS(pid, pgid),
+       TP_STRUCT__entry(__field(pid_t, pid) __field(pid_t, pgid)),
+       TP_fast_assign(tp_assign(pid, pid) tp_assign(pgid, pgid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setreuid,
+       TP_PROTO(uid_t ruid, uid_t euid),
+       TP_ARGS(ruid, euid),
+       TP_STRUCT__entry(__field(uid_t, ruid) __field(uid_t, euid)),
+       TP_fast_assign(tp_assign(ruid, ruid) tp_assign(euid, euid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setregid,
+       TP_PROTO(gid_t rgid, gid_t egid),
+       TP_ARGS(rgid, egid),
+       TP_STRUCT__entry(__field(gid_t, rgid) __field(gid_t, egid)),
+       TP_fast_assign(tp_assign(rgid, rgid) tp_assign(egid, egid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_getpriority,
+       TP_PROTO(int which, int who),
+       TP_ARGS(which, who),
+       TP_STRUCT__entry(__field(int, which) __field(int, who)),
+       TP_fast_assign(tp_assign(which, which) tp_assign(who, who)),
+       TP_printk()
+)
+TRACE_EVENT(sys_mlock,
+       TP_PROTO(unsigned long start, size_t len),
+       TP_ARGS(start, len),
+       TP_STRUCT__entry(__field(unsigned long, start) __field(size_t, len)),
+       TP_fast_assign(tp_assign(start, start) tp_assign(len, len)),
+       TP_printk()
+)
+TRACE_EVENT(sys_munlock,
+       TP_PROTO(unsigned long start, size_t len),
+       TP_ARGS(start, len),
+       TP_STRUCT__entry(__field(unsigned long, start) __field(size_t, len)),
+       TP_fast_assign(tp_assign(start, start) tp_assign(len, len)),
+       TP_printk()
+)
+TRACE_EVENT(sys_tkill,
+       TP_PROTO(pid_t pid, int sig),
+       TP_ARGS(pid, sig),
+       TP_STRUCT__entry(__field(pid_t, pid) __field(int, sig)),
+       TP_fast_assign(tp_assign(pid, pid) tp_assign(sig, sig)),
+       TP_printk()
+)
+TRACE_EVENT(sys_ioprio_get,
+       TP_PROTO(int which, int who),
+       TP_ARGS(which, who),
+       TP_STRUCT__entry(__field(int, which) __field(int, who)),
+       TP_fast_assign(tp_assign(which, which) tp_assign(who, who)),
+       TP_printk()
+)
+TRACE_EVENT(sys_inotify_rm_watch,
+       TP_PROTO(int fd, __s32 wd),
+       TP_ARGS(fd, wd),
+       TP_STRUCT__entry(__field(int, fd) __field(__s32, wd)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(wd, wd)),
+       TP_printk()
+)
+TRACE_EVENT(sys_timerfd_create,
+       TP_PROTO(int clockid, int flags),
+       TP_ARGS(clockid, flags),
+       TP_STRUCT__entry(__field(int, clockid) __field(int, flags)),
+       TP_fast_assign(tp_assign(clockid, clockid) tp_assign(flags, flags)),
+       TP_printk()
+)
+TRACE_EVENT(sys_eventfd2,
+       TP_PROTO(unsigned int count, int flags),
+       TP_ARGS(count, flags),
+       TP_STRUCT__entry(__field(unsigned int, count) __field(int, flags)),
+       TP_fast_assign(tp_assign(count, count) tp_assign(flags, flags)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setns,
+       TP_PROTO(int fd, int nstype),
+       TP_ARGS(fd, nstype),
+       TP_STRUCT__entry(__field(int, fd) __field(int, nstype)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(nstype, nstype)),
+       TP_printk()
+)
+TRACE_EVENT(sys_lseek,
+       TP_PROTO(unsigned int fd, off_t offset, unsigned int origin),
+       TP_ARGS(fd, offset, origin),
+       TP_STRUCT__entry(__field(unsigned int, fd) __field(off_t, offset) __field(unsigned int, origin)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(offset, offset) tp_assign(origin, origin)),
+       TP_printk()
+)
+TRACE_EVENT(sys_mprotect,
+       TP_PROTO(unsigned long start, size_t len, unsigned long prot),
+       TP_ARGS(start, len, prot),
+       TP_STRUCT__entry(__field(unsigned long, start) __field(size_t, len) __field(unsigned long, prot)),
+       TP_fast_assign(tp_assign(start, start) tp_assign(len, len) tp_assign(prot, prot)),
+       TP_printk()
+)
+TRACE_EVENT(sys_ioctl,
+       TP_PROTO(unsigned int fd, unsigned int cmd, unsigned long arg),
+       TP_ARGS(fd, cmd, arg),
+       TP_STRUCT__entry(__field(unsigned int, fd) __field(unsigned int, cmd) __field(unsigned long, arg)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(cmd, cmd) tp_assign(arg, arg)),
+       TP_printk()
+)
+TRACE_EVENT(sys_msync,
+       TP_PROTO(unsigned long start, size_t len, int flags),
+       TP_ARGS(start, len, flags),
+       TP_STRUCT__entry(__field(unsigned long, start) __field(size_t, len) __field(int, flags)),
+       TP_fast_assign(tp_assign(start, start) tp_assign(len, len) tp_assign(flags, flags)),
+       TP_printk()
+)
+TRACE_EVENT(sys_madvise,
+       TP_PROTO(unsigned long start, size_t len_in, int behavior),
+       TP_ARGS(start, len_in, behavior),
+       TP_STRUCT__entry(__field(unsigned long, start) __field(size_t, len_in) __field(int, behavior)),
+       TP_fast_assign(tp_assign(start, start) tp_assign(len_in, len_in) tp_assign(behavior, behavior)),
+       TP_printk()
+)
+TRACE_EVENT(sys_shmget,
+       TP_PROTO(key_t key, size_t size, int shmflg),
+       TP_ARGS(key, size, shmflg),
+       TP_STRUCT__entry(__field(key_t, key) __field(size_t, size) __field(int, shmflg)),
+       TP_fast_assign(tp_assign(key, key) tp_assign(size, size) tp_assign(shmflg, shmflg)),
+       TP_printk()
+)
+TRACE_EVENT(sys_socket,
+       TP_PROTO(int family, int type, int protocol),
+       TP_ARGS(family, type, protocol),
+       TP_STRUCT__entry(__field(int, family) __field(int, type) __field(int, protocol)),
+       TP_fast_assign(tp_assign(family, family) tp_assign(type, type) tp_assign(protocol, protocol)),
+       TP_printk()
+)
+TRACE_EVENT(sys_semget,
+       TP_PROTO(key_t key, int nsems, int semflg),
+       TP_ARGS(key, nsems, semflg),
+       TP_STRUCT__entry(__field(key_t, key) __field(int, nsems) __field(int, semflg)),
+       TP_fast_assign(tp_assign(key, key) tp_assign(nsems, nsems) tp_assign(semflg, semflg)),
+       TP_printk()
+)
+TRACE_EVENT(sys_fcntl,
+       TP_PROTO(unsigned int fd, unsigned int cmd, unsigned long arg),
+       TP_ARGS(fd, cmd, arg),
+       TP_STRUCT__entry(__field(unsigned int, fd) __field(unsigned int, cmd) __field(unsigned long, arg)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(cmd, cmd) tp_assign(arg, arg)),
+       TP_printk()
+)
+TRACE_EVENT(sys_fchown,
+       TP_PROTO(unsigned int fd, uid_t user, gid_t group),
+       TP_ARGS(fd, user, group),
+       TP_STRUCT__entry(__field(unsigned int, fd) __field(uid_t, user) __field(gid_t, group)),
+       TP_fast_assign(tp_assign(fd, fd) tp_assign(user, user) tp_assign(group, group)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setresuid,
+       TP_PROTO(uid_t ruid, uid_t euid, uid_t suid),
+       TP_ARGS(ruid, euid, suid),
+       TP_STRUCT__entry(__field(uid_t, ruid) __field(uid_t, euid) __field(uid_t, suid)),
+       TP_fast_assign(tp_assign(ruid, ruid) tp_assign(euid, euid) tp_assign(suid, suid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setresgid,
+       TP_PROTO(gid_t rgid, gid_t egid, gid_t sgid),
+       TP_ARGS(rgid, egid, sgid),
+       TP_STRUCT__entry(__field(gid_t, rgid) __field(gid_t, egid) __field(gid_t, sgid)),
+       TP_fast_assign(tp_assign(rgid, rgid) tp_assign(egid, egid) tp_assign(sgid, sgid)),
+       TP_printk()
+)
+TRACE_EVENT(sys_sysfs,
+       TP_PROTO(int option, unsigned long arg1, unsigned long arg2),
+       TP_ARGS(option, arg1, arg2),
+       TP_STRUCT__entry(__field(int, option) __field(unsigned long, arg1) __field(unsigned long, arg2)),
+       TP_fast_assign(tp_assign(option, option) tp_assign(arg1, arg1) tp_assign(arg2, arg2)),
+       TP_printk()
+)
+TRACE_EVENT(sys_setpriority,
+       TP_PROTO(int which, int who, int niceval),
+       TP_ARGS(which, who, niceval),
+       TP_STRUCT__entry(__field(int, which) __field(int, who) __field(int, niceval)),
+       TP_fast_assign(tp_assign(which, which) tp_assign(who, who) tp_assign(niceval, niceval)),
+       TP_printk()
+)
+TRACE_EVENT(sys_tgkill,
+       TP_PROTO(pid_t tgid, pid_t pid, int sig),
+       TP_ARGS(tgid, pid, sig),
+       TP_STRUCT__entry(__field(pid_t, tgid) __field(pid_t, pid) __field(int, sig)),
+       TP_fast_assign(tp_assign(tgid, tgid) tp_assign(pid, pid) tp_assign(sig, sig)),
+       TP_printk()
+)
+TRACE_EVENT(sys_ioprio_set,
+       TP_PROTO(int which, int who, int ioprio),
+       TP_ARGS(which, who, ioprio),
+       TP_STRUCT__entry(__field(int, which) __field(int, who) __field(int, ioprio)),
+       TP_fast_assign(tp_assign(which, which) tp_assign(who, who) tp_assign(ioprio, ioprio)),
+       TP_printk()
+)
+TRACE_EVENT(sys_dup3,
+       TP_PROTO(unsigned int oldfd, unsigned int newfd, int flags),
+       TP_ARGS(oldfd, newfd, flags),
+       TP_STRUCT__entry(__field(unsigned int, oldfd) __field(unsigned int, newfd) __field(int, flags)),
+       TP_fast_assign(tp_assign(oldfd, oldfd) tp_assign(newfd, newfd) tp_assign(flags, flags)),
+       TP_printk()
+)
+TRACE_EVENT(sys_ptrace,
+       TP_PROTO(long request, long pid, unsigned long ptrace0, unsigned long ptrace1),
+       TP_ARGS(request, pid, ptrace0, ptrace1),
+       TP_STRUCT__entry(__field(long, request) __field(long, pid) __field(unsigned long, ptrace0) __field(unsigned long, ptrace1)),
+       TP_fast_assign(tp_assign(request, request) tp_assign(pid, pid) tp_assign(ptrace0, ptrace0) tp_assign(ptrace1, ptrace1)),
+       TP_printk()
+)
+TRACE_EVENT(sys_tee,
+       TP_PROTO(int fdin, int fdout, size_t tee0, unsigned int tee1),
+       TP_ARGS(fdin, fdout, tee0, tee1),
+       TP_STRUCT__entry(__field(int, fdin) __field(int, fdout) __field(size_t, tee0) __field(unsigned int, tee1)),
+       TP_fast_assign(tp_assign(fdin, fdin) tp_assign(fdout, fdout) tp_assign(tee0, tee0) tp_assign(tee1, tee1)),
+       TP_printk()
+)
+TRACE_EVENT(sys_mremap,
+       TP_PROTO(unsigned long addr, unsigned long mremap0, unsigned long mremap1, unsigned long mremap2, unsigned long mremap3),
+       TP_ARGS(addr, mremap0, mremap1, mremap2, mremap3),
+       TP_STRUCT__entry(__field(unsigned long, addr) __field(unsigned long, mremap0) __field(unsigned long, mremap1) __field(unsigned long, mremap2) __field(unsigned long, mremap3)),
+       TP_fast_assign(tp_assign(addr, addr) tp_assign(mremap0, mremap0) tp_assign(mremap1, mremap1) tp_assign(mremap2, mremap2) tp_assign(mremap3, mremap3)),
+       TP_printk()
+)
+TRACE_EVENT(sys_prctl,
+       TP_PROTO(int option, unsigned long prctl0, unsigned long prctl1, unsigned long prctl2, unsigned long prctl3),
+       TP_ARGS(option, prctl0, prctl1, prctl2, prctl3),
+       TP_STRUCT__entry(__field(int, option) __field(unsigned long, prctl0) __field(unsigned long, prctl1) __field(unsigned long, prctl2) __field(unsigned long, prctl3)),
+       TP_fast_assign(tp_assign(option, option) tp_assign(prctl0, prctl0) tp_assign(prctl1, prctl1) tp_assign(prctl2, prctl2) tp_assign(prctl3, prctl3)),
+       TP_printk()
+)
+TRACE_EVENT(sys_remap_file_pages,
+       TP_PROTO(unsigned long start, unsigned long remap_file_pages0, unsigned long remap_file_pages1, unsigned long remap_file_pages2, unsigned long remap_file_pages3),
+       TP_ARGS(start, remap_file_pages0, remap_file_pages1, remap_file_pages2, remap_file_pages3),
+       TP_STRUCT__entry(__field(unsigned long, start) __field(unsigned long, remap_file_pages0) __field(unsigned long, remap_file_pages1) __field(unsigned long, remap_file_pages2) __field(unsigned long, remap_file_pages3)),
+       TP_fast_assign(tp_assign(start, start) tp_assign(remap_file_pages0, remap_file_pages0) tp_assign(remap_file_pages1, remap_file_pages1) tp_assign(remap_file_pages2, remap_file_pages2) tp_assign(remap_file_pages3, remap_file_pages3)),
+       TP_printk()
+)
+TRACE_EVENT(sys_mmap,
+       TP_PROTO(unsigned long mmap0, unsigned long mmap1, unsigned long mmap2, unsigned long mmap3, unsigned long mmap4, unsigned long mmap5),
+       TP_ARGS(mmap0, mmap1, mmap2, mmap3, mmap4, mmap5),
+       TP_STRUCT__entry(__field(unsigned long, mmap0) __field(unsigned long, mmap1) __field(unsigned long, mmap2) __field(unsigned long, mmap3) __field(unsigned long, mmap4) __field(unsigned long, mmap5)),
+       TP_fast_assign(tp_assign(mmap0, mmap0) tp_assign(mmap1, mmap1) tp_assign(mmap2, 12) tp_assign(mmap3, mmap3) tp_assign(mmap4, mmap4) tp_assign(mmap5, mmap5)),
+       TP_printk()
+)
+
+#endif /*  _TRACE_SYSCALL_H */
+
+/* This part must be outside protection */
+#include "../../../probes/define_trace.h"
diff --git a/instrumentation/syscalls/lttng-syscalls-extractor/Makefile b/instrumentation/syscalls/lttng-syscalls-extractor/Makefile
new file mode 100644 (file)
index 0000000..07f09d4
--- /dev/null
@@ -0,0 +1,23 @@
+ifneq ($(KERNELRELEASE),)
+ifneq ($(CONFIG_TRACEPOINTS),)
+
+obj-m += lttng-syscalls-extractor.o
+
+endif
+
+else
+       KERNELDIR ?= /lib/modules/$(shell uname -r)/build
+       PWD := $(shell pwd)
+       CFLAGS = $(EXTCFLAGS)
+
+default:
+       $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
+
+modules_install:
+       $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
+       /sbin/depmod -a
+
+clean:
+       $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
+
+endif
diff --git a/instrumentation/syscalls/lttng-syscalls-extractor/linux-link-trace-syscalls-as-data.patch b/instrumentation/syscalls/lttng-syscalls-extractor/linux-link-trace-syscalls-as-data.patch
new file mode 100644 (file)
index 0000000..6ba8e66
--- /dev/null
@@ -0,0 +1,29 @@
+Linux: link syscalls metadata as data (for LTTng syscall extraction)
+
+* NOT for mainline *
+
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+---
+ include/asm-generic/vmlinux.lds.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: linux-2.6-lttng/include/asm-generic/vmlinux.lds.h
+===================================================================
+--- linux-2.6-lttng.orig/include/asm-generic/vmlinux.lds.h
++++ linux-2.6-lttng/include/asm-generic/vmlinux.lds.h
+@@ -169,6 +169,7 @@
+       MEM_KEEP(exit.data)                                             \
+       STRUCT_ALIGN();                                                 \
+       *(__tracepoints)                                                \
++      TRACE_SYSCALLS()                                                \
+       /* implement dynamic printk debug */                            \
+       . = ALIGN(8);                                                   \
+       VMLINUX_SYMBOL(__start___jump_table) = .;                       \
+@@ -489,7 +490,6 @@
+       *(.init.rodata)                                                 \
+       MCOUNT_REC()                                                    \
+       FTRACE_EVENTS()                                                 \
+-      TRACE_SYSCALLS()                                                \
+       DEV_DISCARD(init.rodata)                                        \
+       CPU_DISCARD(init.rodata)                                        \
+       MEM_DISCARD(init.rodata)                                        \
diff --git a/instrumentation/syscalls/lttng-syscalls-extractor/lttng-syscalls-extractor.c b/instrumentation/syscalls/lttng-syscalls-extractor/lttng-syscalls-extractor.c
new file mode 100644 (file)
index 0000000..2eb1cda
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2011 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ * Copyright 2011 - Julien Desfossez <julien.desfossez@polymtl.ca>
+ *
+ * Dump syscall metadata to console.
+ *
+ * GPLv2 license.
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/list.h>
+#include <linux/err.h>
+#include <linux/slab.h>
+#include <linux/kallsyms.h>
+#include <linux/dcache.h>
+#include <linux/ftrace_event.h>
+#include <trace/syscall.h>
+
+#ifndef CONFIG_FTRACE_SYSCALLS
+#error "You need to set CONFIG_FTRACE_SYSCALLS=y"
+#endif
+
+static struct syscall_metadata **__start_syscalls_metadata;
+static struct syscall_metadata **__stop_syscalls_metadata;
+
+static __init
+struct syscall_metadata *find_syscall_meta(unsigned long syscall)
+{
+       struct syscall_metadata **iter;
+
+       for (iter = __start_syscalls_metadata;
+                       iter < __stop_syscalls_metadata; iter++) {
+               if ((*iter)->syscall_nr == syscall)
+                       return (*iter);
+       }
+       return NULL;
+}
+
+int init_module(void)
+{
+       struct syscall_metadata *meta;
+       int i;
+
+       __start_syscalls_metadata = (void *) kallsyms_lookup_name("__start_syscalls_metadata");
+       __stop_syscalls_metadata = (void *) kallsyms_lookup_name("__stop_syscalls_metadata");
+
+       for (i = 0; i < NR_syscalls; i++) {
+               int j;
+
+               meta = find_syscall_meta(i);
+               if (!meta)
+                       continue;
+               printk("syscall %s nr %d nbargs %d ",
+                       meta->name, meta->syscall_nr, meta->nb_args);
+               printk("types: (");
+               for (j = 0; j < meta->nb_args; j++) {
+                       if (j > 0)
+                               printk(", ");
+                       printk("%s", meta->types[j]);
+               }
+               printk(") ");
+               printk("args: (");
+               for (j = 0; j < meta->nb_args; j++) {
+                       if (j > 0)
+                               printk(", ");
+                       printk("%s", meta->args[j]);
+               }
+               printk(")\n");
+       }
+       printk("SUCCESS\n");
+
+       return -1;
+}
+
+void cleanup_module(void)
+{
+}  
+
+MODULE_LICENSE("GPL");
diff --git a/instrumentation/syscalls/lttng-syscalls-generate-headers.sh b/instrumentation/syscalls/lttng-syscalls-generate-headers.sh
new file mode 100644 (file)
index 0000000..35f4486
--- /dev/null
@@ -0,0 +1,173 @@
+#!/bin/sh
+
+# Generate system call probe description macros from syscall metadata dump file.
+# example usage:
+# lttng-syscalls-generate-headers.sh 3.0.4 x86-64-syscalls-3.0.4
+
+INPUTDIR=$1
+INPUTFILE=$2
+INPUT=${INPUTDIR}/${INPUTFILE}
+SRCFILE=gen.tmp.0
+TMPFILE=gen.tmp.1
+
+cp ${INPUT} ${SRCFILE}
+
+#Cleanup
+sed 's/^\[.*\] //g' ${SRCFILE} > ${TMPFILE}
+mv ${TMPFILE} ${SRCFILE}
+
+sed 's/^syscall sys_\([^ ]*\)/syscall \1/g' ${SRCFILE} > ${TMPFILE}
+mv ${TMPFILE} ${SRCFILE}
+
+#Filter
+
+#select only syscalls we currently support
+#move non-pointers with arguments to a integer-only file.
+CLASS=integers
+grep -v "\\*\|cap_user_header_t" ${SRCFILE} > ${TMPFILE}
+mv ${TMPFILE} ${SRCFILE}
+
+#TODO
+# move all system calls using pointers to a separate file.
+#CLASS=pointers
+#grep "\\*\|cap_#user_header_t" ${SRCFILE} > ${TMPFILE}
+#mv ${TMPFILE} ${SRCFILE}
+
+#TODO
+#move those without arguments to a separate file.
+#CLASS=noargs
+#grep "^syscall [^ ]* nr [^ ]* nbargs 0 " ${SRCFILE} > ${TMPFILE}
+#mv ${TMPFILE} ${SRCFILE}
+
+HEADER=headers/${INPUTFILE}-${CLASS}.h
+
+echo "/* THIS FILE IS AUTO-GENERATED. DO NOT EDIT */" > ${HEADER}
+
+echo \
+"#undef TRACE_SYSTEM
+#define TRACE_SYSTEM syscall
+
+#if !defined(_TRACE_SYSCALL_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_SYSCALL_H
+
+#include <linux/tracepoint.h>
+#include <linux/syscalls.h>
+" >> ${HEADER}
+
+#TODO 0
+
+# types: 4
+# args   5
+
+NRARGS=1
+grep "^syscall [^ ]* nr [^ ]* nbargs ${NRARGS} " ${SRCFILE} > ${TMPFILE}
+sed 's/^syscall \([^ ]*\) nr \([^ ]*\) nbargs \([^ ]*\) '\
+'types: (\([^)]*\)) '\
+'args: (\([^)]*\))/'\
+'TRACE_EVENT(sys_\1,\n'\
+'      TP_PROTO(\4 \5),\n'\
+'      TP_ARGS(\5),\n'\
+'      TP_STRUCT__entry(__field(\4, \5)),\n'\
+'      TP_fast_assign(tp_assign(\5, \5)),\n'\
+'      TP_printk()\n'\
+')/g'\
+       ${TMPFILE} >> ${HEADER}
+
+# types: 4 5
+# args   6 7
+
+NRARGS=2
+grep "^syscall [^ ]* nr [^ ]* nbargs ${NRARGS} " ${SRCFILE} > ${TMPFILE}
+sed 's/^syscall \([^ ]*\) nr \([^ ]*\) nbargs \([^ ]*\) '\
+'types: (\([^,]*\), \([^)]*\)) '\
+'args: (\([^,]*\), \([^)]*\))/'\
+'TRACE_EVENT(sys_\1,\n'\
+'      TP_PROTO(\4 \6, \5 \7),\n'\
+'      TP_ARGS(\6, \7),\n'\
+'      TP_STRUCT__entry(__field(\4, \6) __field(\5, \7)),\n'\
+'      TP_fast_assign(tp_assign(\6, \6) tp_assign(\7, \7)),\n'\
+'      TP_printk()\n'\
+')/g'\
+       ${TMPFILE} >> ${HEADER}
+
+# types: 4 5 6
+# args   7 8 9
+
+NRARGS=3
+grep "^syscall [^ ]* nr [^ ]* nbargs ${NRARGS} " ${SRCFILE} > ${TMPFILE}
+sed 's/^syscall \([^ ]*\) nr \([^ ]*\) nbargs \([^ ]*\) '\
+'types: (\([^,]*\), \([^,]*\), \([^)]*\)) '\
+'args: (\([^,]*\), \([^,]*\), \([^)]*\))/'\
+'TRACE_EVENT(sys_\1,\n'\
+'      TP_PROTO(\4 \7, \5 \8, \6 \9),\n'\
+'      TP_ARGS(\7, \8, \9),\n'\
+'      TP_STRUCT__entry(__field(\4, \7) __field(\5, \8) __field(\6, \9)),\n'\
+'      TP_fast_assign(tp_assign(\7, \7) tp_assign(\8, \8) tp_assign(\9, \9)),\n'\
+'      TP_printk()\n'\
+')/g'\
+       ${TMPFILE} >> ${HEADER}
+
+
+# types: 4 5  6  7
+# args   8 9 10 11
+
+NRARGS=4
+grep "^syscall [^ ]* nr [^ ]* nbargs ${NRARGS} " ${SRCFILE} > ${TMPFILE}
+sed 's/^syscall \([^ ]*\) nr \([^ ]*\) nbargs \([^ ]*\) '\
+'types: (\([^,]*\), \([^,]*\), \([^,]*\), \([^)]*\)) '\
+'args: (\([^,]*\), \([^,]*\), \([^,]*\), \([^)]*\))/'\
+'TRACE_EVENT(sys_\1,\n'\
+'      TP_PROTO(\4 \8, \5 \9, \6 \10, \7 \11),\n'\
+'      TP_ARGS(\8, \9, \10, \11),\n'\
+'      TP_STRUCT__entry(__field(\4, \8) __field(\5, \9) __field(\6, \10) __field(\7, \11)),\n'\
+'      TP_fast_assign(tp_assign(\8, \8) tp_assign(\9, \9) tp_assign(\10, \10) tp_assign(\11, \11)),\n'\
+'      TP_printk()\n'\
+')/g'\
+       ${TMPFILE} >> ${HEADER}
+
+# types: 4  5  6  7  8
+# args   9 10 11 12 13
+
+NRARGS=5
+grep "^syscall [^ ]* nr [^ ]* nbargs ${NRARGS} " ${SRCFILE} > ${TMPFILE}
+sed 's/^syscall \([^ ]*\) nr \([^ ]*\) nbargs \([^ ]*\) '\
+'types: (\([^,]*\), \([^,]*\), \([^,]*\), \([^,]*\), \([^)]*\)) '\
+'args: (\([^,]*\), \([^,]*\), \([^,]*\), \([^,]*\), \([^)]*\))/'\
+'TRACE_EVENT(sys_\1,\n'\
+'      TP_PROTO(\4 \9, \5 \10, \6 \11, \7 \12, \8 \13),\n'\
+'      TP_ARGS(\9, \10, \11, \12, \13),\n'\
+'      TP_STRUCT__entry(__field(\4, \9) __field(\5, \10) __field(\6, \11) __field(\7, \12) __field(\8, \13)),\n'\
+'      TP_fast_assign(tp_assign(\9, \9) tp_assign(\10, \10) tp_assign(\11, \11) tp_assign(\12, \12) tp_assign(\13, \13)),\n'\
+'      TP_printk()\n'\
+')/g'\
+       ${TMPFILE} >> ${HEADER}
+
+
+# types: 4   5  6  7  8  9
+# args   10 11 12 13 14 15
+
+NRARGS=6
+grep "^syscall [^ ]* nr [^ ]* nbargs ${NRARGS} " ${SRCFILE} > ${TMPFILE}
+sed 's/^syscall \([^ ]*\) nr \([^ ]*\) nbargs \([^ ]*\) '\
+'types: (\([^,]*\), \([^,]*\), \([^,]*\), \([^,]*\), \([^,]*\), \([^)]*\)) '\
+'args: (\([^,]*\), \([^,]*\), \([^,]*\), \([^,]*\), \([^,]*\), \([^)]*\))/'\
+'TRACE_EVENT(sys_\1,\n'\
+'      TP_PROTO(\4 \10, \5 \11, \6 \12, \7 \13, \8 \14, \9 \15),\n'\
+'      TP_ARGS(\10, \11, \12, \13, \14, \15),\n'\
+'      TP_STRUCT__entry(__field(\4, \10) __field(\5, \11) __field(\6, \12) __field(\7, \13) __field(\8, \14) __field(\9, \15)),\n'\
+'      TP_fast_assign(tp_assign(\10, \10) tp_assign(\11, \11) tp_assign(\12, 12) tp_assign(\13, \13) tp_assign(\14, \14) tp_assign(\15, \15)),\n'\
+'      TP_printk()\n'\
+')/g'\
+       ${TMPFILE} >> ${HEADER}
+
+echo -n \
+"
+#endif /*  _TRACE_SYSCALL_H */
+
+/* This part must be outside protection */
+#include \"../../../probes/define_trace.h\"
+" >> ${HEADER}
+
+rm -f ${INPUTFILE}.tmp
+rm -f ${TMPFILE}
+rm -f ${SRCFILE}
index 3889b5071175eac85111da2b2d40e243642a1fb5..b1c5f39470984b35dd947f58462ece79c070ab34 100644 (file)
  * Create the tracepoint static inlines from the kernel to validate that our
  * trace event macros match the kernel we run on.
  */
-#include <trace/events/syscalls.h>
+//#include <trace/events/syscalls.h>
 
 /*
  * Create LTTng tracepoint probes.
  */
 #define LTTNG_PACKAGE_BUILD
 #define CREATE_TRACE_POINTS
-#define TRACE_INCLUDE_PATH ../instrumentation/events/lttng-module
+#define TRACE_INCLUDE_PATH ../instrumentation/syscalls/headers
 
-#include "../instrumentation/events/lttng-module/syscalls.h"
+#include "../instrumentation/syscalls/headers/syscall.h"
 
 MODULE_LICENSE("GPL and additional rights");
 MODULE_AUTHOR("Mathieu Desnoyers <mathieu.desnoyers@efficios.com>");
This page took 0.039735 seconds and 4 git commands to generate.