LTTng modularization, import of lttng 0.226
[lttng-modules.git] / probes / syscall-trace.c
CommitLineData
1c8284eb
MD
1/*
2 * ltt/probes/syscall-trace.c
3 *
4 * System call tracepoint probes.
5 *
6 * (C) Copyright 2009 - Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
7 * Dual LGPL v2.1/GPL v2 license.
8 */
9
10#include <linux/module.h>
11#include <trace/syscall.h>
12
13#include "../ltt-type-serializer.h"
14
15
16/* kernel_syscall_entry specialized tracepoint probe */
17
18void probe_syscall_entry(void *_data, struct pt_regs *regs, long id);
19
20DEFINE_MARKER_TP(kernel, syscall_entry, syscall_entry,
21 probe_syscall_entry, "ip #p%ld syscall_id #2u%u");
22
23notrace void probe_syscall_entry(void *_data, struct pt_regs *regs, long id)
24{
25 struct marker *marker;
26 struct serialize_long_short data;
27
28 data.f1 = instruction_pointer(regs);
29 data.f2 = (unsigned short)id;
30
31 marker = &GET_MARKER(kernel, syscall_entry);
32 ltt_specialized_trace(marker, marker->single.probe_private,
33 &data, serialize_sizeof(data), sizeof(long));
34}
35
36/* kernel_syscall_exit specialized tracepoint probe */
37
38void probe_syscall_exit(void *_data, long ret);
39
40DEFINE_MARKER_TP(kernel, syscall_exit, syscall_exit,
41 probe_syscall_exit, "ret %ld");
42
43notrace void probe_syscall_exit(void *_data, long ret)
44{
45 struct marker *marker;
46
47 marker = &GET_MARKER(kernel, syscall_exit);
48 ltt_specialized_trace(marker, marker->single.probe_private,
49 &ret, sizeof(ret), sizeof(ret));
50}
51
52MODULE_LICENSE("GPL and additional rights");
53MODULE_AUTHOR("Mathieu Desnoyers");
54MODULE_DESCRIPTION("syscall Tracepoint Probes");
This page took 0.026529 seconds and 4 git commands to generate.