Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From ee9c0b591bf16ca11bb354bc68dae75a903f3a64 Mon Sep 17 00:00:00 2001
- From: Scott James Remnant <scott@ubuntu.com>
- Date: Tue, 27 Oct 2009 10:05:32 +0000
- Subject: [PATCH] trace: add trace events for open(), exec() and uselib()
- This patch uses TRACE_EVENT to add tracepoints for the open(),
- exec() and uselib() syscalls so that ureadahead can cheaply trace
- the boot sequence to determine what to read to speed up the next.
- It's not upstream because it will need to be rebased onto the syscall
- trace events whenever that gets merged, and is a stop-gap.
- Signed-off-by: Scott James Remnant <scott@ubuntu.com>
- ---
- fs/exec.c | 4 +++++
- fs/open.c | 4 ++
- include/trace/events/fs.h | 71 +++++++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 79 insertions(+), 0 deletions(-)
- create mode 100644 include/trace/events/fs.h
- diff --git a/fs/exec.c b/fs/exec.c
- index 172ceb6..c936999 100644
- --- a/fs/exec.c
- +++ b/fs/exec.c
- @@ -55,6 +55,8 @@
- #include <linux/fs_struct.h>
- #include <linux/pipe_fs_i.h>
- +#include <trace/events/fs.h>
- +
- #include <asm/uaccess.h>
- #include <asm/mmu_context.h>
- #include <asm/tlb.h>
- @@ -700,6 +702,8 @@ struct file *open_exec(const char *name)
- fsnotify_open(file);
- + trace_open_exec(name);
- +
- err = deny_write_access(file);
- if (err)
- goto exit;
- diff --git a/fs/open.c b/fs/open.c
- index 04b9aad..41c87f3 100644
- --- a/fs/open.c
- +++ b/fs/open.c
- @@ -33,6 +33,9 @@
- #include "internal.h"
- +#define CREATE_TRACE_POINTS
- +#include <trace/events/fs.h>
- +
- int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
- struct file *filp)
- {
- @@ -890,6 +893,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, int mode)
- } else {
- fsnotify_open(f);
- fd_install(fd, f);
- + trace_do_sys_open(tmp, flags, mode);
- }
- }
- putname(tmp);
- diff --git a/include/trace/events/fs.h b/include/trace/events/fs.h
- new file mode 100644
- index 0000000..e967c55
- --- /dev/null
- +++ b/include/trace/events/fs.h
- @@ -0,0 +1,71 @@
- +#undef TRACE_SYSTEM
- +#define TRACE_SYSTEM fs
- +
- +#if !defined(_TRACE_FS_H) || defined(TRACE_HEADER_MULTI_READ)
- +#define _TRACE_FS_H
- +
- +#include <linux/fs.h>
- +#include <linux/tracepoint.h>
- +
- +TRACE_EVENT(do_sys_open,
- +
- + TP_PROTO(char *filename, int flags, int mode),
- +
- + TP_ARGS(filename, flags, mode),
- +
- + TP_STRUCT__entry(
- + __string( filename, filename )
- + __field( int, flags )
- + __field( int, mode )
- + ),
- +
- + TP_fast_assign(
- + __assign_str(filename, filename);
- + __entry->flags = flags;
- + __entry->mode = mode;
- + ),
- +
- + TP_printk("\"%s\" %x %o",
- + __get_str(filename), __entry->flags, __entry->mode)
- +);
- +
- +TRACE_EVENT(uselib,
- +
- + TP_PROTO(char *filename),
- +
- + TP_ARGS(filename),
- +
- + TP_STRUCT__entry(
- + __string( filename, filename )
- + ),
- +
- + TP_fast_assign(
- + __assign_str(filename, filename);
- + ),
- +
- + TP_printk("\"%s\"",
- + __get_str(filename))
- +);
- +
- +TRACE_EVENT(open_exec,
- +
- + TP_PROTO(char *filename),
- +
- + TP_ARGS(filename),
- +
- + TP_STRUCT__entry(
- + __string( filename, filename )
- + ),
- +
- + TP_fast_assign(
- + __assign_str(filename, filename);
- + ),
- +
- + TP_printk("\"%s\"",
- + __get_str(filename))
- +);
- +
- +#endif /* _TRACE_FS_H */
- +
- +/* This part must be outside protection */
- +#include <trace/define_trace.h>
- --
- 1.6.3.3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement