d4d8861322dc3cc1d873e3e2ab420d0241d8ccde
1 /*****************************************************************************
4 * LTT userspace tracing header
6 * Mathieu Desnoyers, March 2006
9 #ifndef _LTT_USERTRACE_H
10 #define _LTT_USERTRACE_H
16 #include <sys/types.h>
18 #define inline inline __attribute__((always_inline))
20 #if defined(__powerpc__) || defined(__powerpc64__)
22 #include <ltt/atomic-ppc64.h>
23 #include <ltt/system-ppc64.h>
24 #include <asm/timex.h>
26 #include <ltt/ppc_asm-ppc.h>
27 #include <ltt/atomic-ppc.h>
28 #include <ltt/system-ppc.h>
29 #include <ltt/timex-ppc.h>
31 #elif defined(__x86_64__)
32 #include <ltt/kernelutils-x86_64.h>
33 #elif defined(__i386__)
34 #include <ltt/kernelutils-i386.h>
36 #error "Unsupported architecture"
40 #define min(a,b) ((a)<(b)?(a):(b))
44 #define __NR_ltt_trace_generic 317
45 #define __NR_ltt_register_generic 318
47 #define NR_syscalls 319
51 #define __NR_ltt_trace_generic 279
52 #define __NR_ltt_register_generic 280
54 #define NR_syscalls 281
58 #define __NR_ltt_trace_generic 301
59 #define __NR_ltt_register_generic 302
61 #define NR_syscalls 303
65 #define __NR_ltt_trace_generic 301
66 #define __NR_ltt_register_generic 302
68 #define NR_syscalls 303
73 //FIXME : setup for ARM
74 //FIXME : setup for MIPS
77 // Put in bits/syscall.h
78 #define SYS_ltt_trace_generic __NR_ltt_trace_generic
79 #define SYS_ltt_register_generic __NR_ltt_register_generic
82 #define FACNAME_LEN 32
84 /* LTT userspace tracing is non blocking by default when buffers are full */
86 #define LTT_BLOCKING 0
89 typedef unsigned int ltt_facility_t
;
91 struct user_facility_info
{
92 char name
[FACNAME_LEN
];
93 unsigned int num_events
;
102 static inline __attribute__((no_instrument_function
))
103 _syscall5(int, ltt_trace_generic
, unsigned int, facility_id
,
104 unsigned int, event_id
, void *, data
, size_t, data_size
, int, blocking
)
105 static inline __attribute__((no_instrument_function
))
106 _syscall2(int, ltt_register_generic
, unsigned int *, facility_id
,
107 const struct user_facility_info
*, info
)
110 #define ltt_register_generic(...) syscall(__NR_ltt_register_generic, __VA_ARGS__)
111 #define ltt_trace_generic(...) syscall(__NR_ltt_trace_generic, __VA_ARGS__)
114 /* Calculate the offset needed to align the type */
115 static inline unsigned int __attribute__((no_instrument_function
))
116 ltt_align(size_t align_drift
, size_t size_of_type
)
118 size_t alignment
= min(sizeof(void*), size_of_type
);
120 return ((alignment
- align_drift
) & (alignment
-1));
124 static inline unsigned int __attribute__((no_instrument_function
))
125 ltt_align(size_t align_drift
,
130 #define LTT_ALIGN __attribute__((packed))
133 #ifdef LTT_TRACE_FAST
134 #include <ltt/ltt-usertrace-fast.h>
135 #endif //LTT_TRACE_FAST
137 #endif //_LTT_USERTRACE_H
This page took 0.039648 seconds and 4 git commands to generate.