X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=lttng-syscalls.c;h=748c6002fc4a79ef3d2692bf997ac0820e60cbc2;hb=ad0f251f77f7eb5162b187a91f6ce3dee2280fef;hp=622da6e206a5c683a5c1b006387789c46ac0126e;hpb=2f25059db8c710589000120cfeea0983491b5547;p=lttng-modules.git diff --git a/lttng-syscalls.c b/lttng-syscalls.c index 622da6e2..748c6002 100644 --- a/lttng-syscalls.c +++ b/lttng-syscalls.c @@ -29,11 +29,14 @@ #include #include #include +#include +#include #include #include #include "lib/bitfield.h" #include "wrapper/tracepoint.h" +#include "wrapper/file.h" #include "lttng-events.h" #ifndef CONFIG_COMPAT @@ -1261,3 +1264,39 @@ long lttng_channel_syscall_mask(struct lttng_channel *channel, kfree(tmp_mask); return ret; } + +int lttng_abi_syscall_list(void) +{ + struct file *syscall_list_file; + int file_fd, ret; + + file_fd = lttng_get_unused_fd(); + if (file_fd < 0) { + ret = file_fd; + goto fd_error; + } + + syscall_list_file = anon_inode_getfile("[lttng_syscall_list]", + <tng_syscall_list_fops, + NULL, O_RDWR); + if (IS_ERR(syscall_list_file)) { + ret = PTR_ERR(syscall_list_file); + goto file_error; + } + ret = lttng_syscall_list_fops.open(NULL, syscall_list_file); + if (ret < 0) + goto open_error; + fd_install(file_fd, syscall_list_file); + if (file_fd < 0) { + ret = file_fd; + goto fd_error; + } + return file_fd; + +open_error: + fput(syscall_list_file); +file_error: + put_unused_fd(file_fd); +fd_error: + return ret; +}