2 * ltt/probes/fs-trace.c
4 * FS tracepoint probes.
6 * (C) Copyright 2009 - Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
7 * Dual LGPL v2.1/GPL v2 license.
10 #include <linux/module.h>
11 #include <linux/buffer_head.h>
14 #include "../ltt-type-serializer.h"
16 void probe_fs_buffer_wait_start(void *_data
, struct buffer_head
*bh
)
18 trace_mark_tp(fs
, buffer_wait_start
, fs_buffer_wait_start
,
19 probe_fs_buffer_wait_start
, "bh %p", bh
);
22 void probe_fs_buffer_wait_end(void *_data
, struct buffer_head
*bh
)
24 trace_mark_tp(fs
, buffer_wait_end
, fs_buffer_wait_end
,
25 probe_fs_buffer_wait_end
, "bh %p", bh
);
28 void probe_fs_exec(void *_data
, char *filename
)
30 trace_mark_tp(fs
, exec
, fs_exec
, probe_fs_exec
, "filename %s",
34 void probe_fs_ioctl(void *_data
, unsigned int fd
, unsigned int cmd
, unsigned long arg
)
36 trace_mark_tp(fs
, ioctl
, fs_ioctl
, probe_fs_ioctl
,
37 "fd %u cmd %u arg %lu", fd
, cmd
, arg
);
40 void probe_fs_open(void *_data
, int fd
, char *filename
)
42 trace_mark_tp(fs
, open
, fs_open
, probe_fs_open
,
43 "fd %d filename %s", fd
, filename
);
46 void probe_fs_close(void *_data
, unsigned int fd
)
48 trace_mark_tp(fs
, close
, fs_close
, probe_fs_close
, "fd %u", fd
);
51 void probe_fs_lseek(void *_data
, unsigned int fd
, long offset
, unsigned int origin
)
53 trace_mark_tp(fs
, lseek
, fs_lseek
, probe_fs_lseek
,
54 "fd %u offset %ld origin %u", fd
, offset
, origin
);
57 void probe_fs_llseek(void *_data
, unsigned int fd
, loff_t offset
, unsigned int origin
)
59 trace_mark_tp(fs
, llseek
, fs_llseek
, probe_fs_llseek
,
60 "fd %u offset %lld origin %u", fd
,
61 (long long)offset
, origin
);
64 void probe_fs_read(void *_data
, unsigned int fd
, char __user
*buf
, size_t count
,
67 DEFINE_MARKER_TP(fs
, read
, fs_read
, probe_fs_read
,
70 notrace
void probe_fs_read(void *_data
, unsigned int fd
, char __user
*buf
, size_t count
,
73 struct marker
*marker
;
74 struct serialize_sizet_int data
;
79 marker
= &GET_MARKER(fs
, read
);
80 ltt_specialized_trace(marker
, marker
->single
.probe_private
,
81 &data
, serialize_sizeof(data
), sizeof(size_t));
84 void probe_fs_write(void *_data
, unsigned int fd
, char __user
*buf
, size_t count
,
87 DEFINE_MARKER_TP(fs
, write
, fs_write
, probe_fs_write
,
90 notrace
void probe_fs_write(void *_data
, unsigned int fd
, char __user
*buf
, size_t count
,
93 struct marker
*marker
;
94 struct serialize_sizet_int data
;
99 marker
= &GET_MARKER(fs
, write
);
100 ltt_specialized_trace(marker
, marker
->single
.probe_private
,
101 &data
, serialize_sizeof(data
), sizeof(size_t));
104 void probe_fs_pread64(void *_data
, unsigned int fd
, char __user
*buf
, size_t count
,
105 loff_t pos
, ssize_t ret
)
107 trace_mark_tp(fs
, pread64
, fs_pread64
, probe_fs_pread64
,
108 "fd %u count %zu pos %llu",
109 fd
, count
, (unsigned long long)pos
);
112 void probe_fs_pwrite64(void *_data
, unsigned int fd
, const char __user
*buf
,
113 size_t count
, loff_t pos
, ssize_t ret
)
115 trace_mark_tp(fs
, pwrite64
, fs_pwrite64
, probe_fs_pwrite64
,
116 "fd %u count %zu pos %llu",
117 fd
, count
, (unsigned long long)pos
);
120 void probe_fs_readv(void *_data
, unsigned long fd
, const struct iovec __user
*vec
,
121 unsigned long vlen
, ssize_t ret
)
123 trace_mark_tp(fs
, readv
, fs_readv
, probe_fs_readv
,
124 "fd %lu vlen %lu", fd
, vlen
);
127 void probe_fs_writev(void *_data
, unsigned long fd
, const struct iovec __user
*vec
,
128 unsigned long vlen
, ssize_t ret
)
130 trace_mark_tp(fs
, writev
, fs_writev
, probe_fs_writev
,
131 "fd %lu vlen %lu", fd
, vlen
);
134 void probe_fs_select(void *_data
, int fd
, struct timespec
*end_time
)
136 struct timespec tmptime
;
141 tmptime
.tv_sec
= -1L;
142 tmptime
.tv_nsec
= -1L;
145 trace_mark_tp(fs
, select
, fs_select
, probe_fs_select
,
146 "fd %d end_time_sec %ld end_time_nsec %ld", fd
,
147 tmptime
.tv_sec
, tmptime
.tv_nsec
);
150 void probe_fs_poll(void *_data
, int fd
)
152 trace_mark_tp(fs
, pollfd
, fs_poll
, probe_fs_poll
,
156 MODULE_LICENSE("GPL and additional rights");
157 MODULE_AUTHOR("Mathieu Desnoyers");
158 MODULE_DESCRIPTION("FS Tracepoint Probes");