This patch provides instrumentation for pipe system call. It records the fd read and write ends of the pipe if the operation succeeed. This is required to recover from the trace the full list of file descriptor of a process.
Signed-off-by: Francis Giraldeau <[email protected]> --- fs/pipe.c | 5 +++++ include/trace/fs.h | 3 +++ 2 files changed, 8 insertions(+), 0 deletions(-) diff --git a/fs/pipe.c b/fs/pipe.c index da42f7d..72ab52a 100644 --- a/fs/pipe.c +++ b/fs/pipe.c @@ -20,10 +20,13 @@ #include <linux/audit.h> #include <linux/syscalls.h> #include <linux/fcntl.h> +#include <trace/fs.h> #include <asm/uaccess.h> #include <asm/ioctls.h> +DEFINE_TRACE(fs_pipe); + /* * The max size that a non-root user is allowed to grow the pipe. Can * be set by root in /proc/sys/fs/pipe-max-size @@ -1110,6 +1113,8 @@ SYSCALL_DEFINE2(pipe2, int __user *, fildes, int, flags) sys_close(fd[0]); sys_close(fd[1]); error = -EFAULT; + } else { + trace_fs_pipe(fd[0], fd[1]); } } return error; diff --git a/include/trace/fs.h b/include/trace/fs.h index 7712331..75f48c0 100644 --- a/include/trace/fs.h +++ b/include/trace/fs.h @@ -66,4 +66,7 @@ DECLARE_TRACE(fs_poll, DECLARE_TRACE(fs_dup, TP_PROTO(unsigned int oldfd, unsigned int newfd), TP_ARGS(oldfd, newfd)); +DECLARE_TRACE(fs_pipe, + TP_PROTO(int readfd, int writefd), + TP_ARGS(readfd, writefd)); #endif -- 1.7.1 _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
