add high speed blocking test
[lttv.git] / usertrace-generic / ltt / ltt-generic.h
1 /*****************************************************************************
2 * ltt-generic.h
3 *
4 * LTT generic userspace tracing header
5 *
6 * Mathieu Desnoyers, March 2006
7 */
8
9 #ifndef _LTT_GENERIC_H
10 #define _LTT_GENERIC_H
11
12 #include <errno.h>
13 #include <syscall.h>
14 #include <linux/unistd.h>
15 #include <asm/atomic.h>
16 #include <string.h>
17 #include <sys/types.h>
18 #include <stdint.h>
19
20 #ifndef min
21 #define min(a,b) ((a)<(b)?(a):(b))
22 #endif
23
24 //Put in asm-i486/unistd.h
25 #define __NR_ltt_trace_generic 294
26 #define __NR_ltt_register_generic 295
27
28 #undef NR_syscalls
29 #define NR_syscalls 296
30
31 //FIXME : setup for ARM
32 //FIXME : setup for MIPS
33
34 #ifndef _LIBC
35 // Put in bits/syscall.h
36 #define SYS_ltt_trace_generic __NR_ltt_trace_generic
37 #define SYS_ltt_register_generic __NR_ltt_register_generic
38 #endif
39
40 #define FACNAME_LEN 32
41
42 /* LTT userspace tracing is non blocking by default when buffers are full */
43 #ifndef LTT_BLOCKING
44 #define LTT_BLOCKING 0
45 #endif //LTT_BLOCKING
46
47 typedef unsigned int ltt_facility_t;
48
49 struct user_facility_info {
50 char name[FACNAME_LEN];
51 unsigned int num_events;
52 size_t alignment;
53 uint32_t checksum;
54 size_t int_size;
55 size_t long_size;
56 size_t pointer_size;
57 size_t size_t_size;
58 };
59
60 static inline _syscall5(int, ltt_trace_generic, unsigned int, facility_id,
61 unsigned int, event_id, void *, data, size_t, data_size, int, blocking)
62 static inline _syscall2(int, ltt_register_generic, unsigned int *, facility_id, const struct user_facility_info *, info)
63
64 #ifndef LTT_PACK
65 /* Calculate the offset needed to align the type */
66 static inline unsigned int ltt_align(size_t align_drift,
67 size_t size_of_type)
68 {
69 size_t alignment = min(sizeof(void*), size_of_type);
70
71 return ((alignment - align_drift) & (alignment-1));
72 }
73 #else
74 static inline unsigned int ltt_align(size_t align_drift,
75 size_t size_of_type)
76 {
77 return 0;
78 }
79 #endif //LTT_PACK
80
81 #endif //_LTT_GENERIC_H
82
83
This page took 0.030073 seconds and 4 git commands to generate.