update syscalls
[lttv.git] / ltt-usertrace / ltt / ltt-usertrace.h
CommitLineData
3d57eb5b 1/*****************************************************************************
38f24d5c 2 * ltt-usertrace.h
3d57eb5b 3 *
38f24d5c 4 * LTT userspace tracing header
3d57eb5b 5 *
6 * Mathieu Desnoyers, March 2006
7 */
8
38f24d5c 9#ifndef _LTT_USERTRACE_H
10#define _LTT_USERTRACE_H
3d57eb5b 11
12#include <errno.h>
13#include <syscall.h>
3d57eb5b 14#include <string.h>
3d57eb5b 15#include <stdint.h>
4359c2bb 16#include <sys/types.h>
17#include <linux/unistd.h>
3a4541a5 18
19#define inline inline __attribute__((always_inline))
20
60009e26 21#if defined(__powerpc__) || defined(__powerpc64__)
3a4541a5 22#ifdef __powerpc64__
23#include <ltt/atomic-ppc64.h>
24#include <ltt/system-ppc64.h>
25#include <asm/timex.h>
26#else
27#include <ltt/ppc_asm-ppc.h>
28#include <ltt/atomic-ppc.h>
29#include <ltt/system-ppc.h>
30#include <ltt/timex-ppc.h>
31#endif
ce22b1be 32#elif defined(__x86_64__)
33#include <asm/timex.h>
34#include <asm/bitops.h>
35#include <asm/atomic.h>
36#include <asm/system.h>
60009e26 37#else
3a4541a5 38#include <asm/timex.h>
60009e26 39#include <asm/atomic.h>
40#endif
3d57eb5b 41
42#ifndef min
43#define min(a,b) ((a)<(b)?(a):(b))
44#endif
45
d86395c3 46#ifdef i386
ac493dbc 47#define __NR_ltt_trace_generic 317
48#define __NR_ltt_register_generic 318
3d57eb5b 49#undef NR_syscalls
ac493dbc 50#define NR_syscalls 319
d86395c3 51#endif
52
ce22b1be 53#ifdef __x86_64__
54#define __NR_ltt_trace_generic 279
55#define __NR_ltt_register_generic 280
56#undef NR_syscalls
57#define NR_syscalls 281
58#endif
59
3a4541a5 60#ifdef __powerpc__
ac493dbc 61#define __NR_ltt_trace_generic 301
62#define __NR_ltt_register_generic 302
3a4541a5 63#undef NR_syscalls
ac493dbc 64#define NR_syscalls 303
3a4541a5 65#endif
66
67#ifdef __powerpc64__
ac493dbc 68#define __NR_ltt_trace_generic 301
69#define __NR_ltt_register_generic 302
d86395c3 70#undef NR_syscalls
ac493dbc 71#define NR_syscalls 303
d86395c3 72#endif
3d57eb5b 73
3a4541a5 74
75
3d57eb5b 76//FIXME : setup for ARM
77//FIXME : setup for MIPS
78
79#ifndef _LIBC
80// Put in bits/syscall.h
81#define SYS_ltt_trace_generic __NR_ltt_trace_generic
82#define SYS_ltt_register_generic __NR_ltt_register_generic
83#endif
84
85#define FACNAME_LEN 32
86
972a52cf 87/* LTT userspace tracing is non blocking by default when buffers are full */
88#ifndef LTT_BLOCKING
89#define LTT_BLOCKING 0
90#endif //LTT_BLOCKING
91
3d57eb5b 92typedef unsigned int ltt_facility_t;
93
94struct user_facility_info {
95 char name[FACNAME_LEN];
96 unsigned int num_events;
97 size_t alignment;
98 uint32_t checksum;
99 size_t int_size;
100 size_t long_size;
101 size_t pointer_size;
102 size_t size_t_size;
103};
5ecaa1ab 104#if 0
e90c7b86 105static inline __attribute__((no_instrument_function))
106_syscall5(int, ltt_trace_generic, unsigned int, facility_id,
107 unsigned int, event_id, void *, data, size_t, data_size, int, blocking)
108static inline __attribute__((no_instrument_function))
109_syscall2(int, ltt_register_generic, unsigned int *, facility_id,
110 const struct user_facility_info *, info)
5ecaa1ab 111#endif //0
112
113#define ltt_register_generic(...) syscall(__NR_ltt_register_generic, __VA_ARGS__)
114#define ltt_trace_generic(...) syscall(__NR_ltt_trace_generic, __VA_ARGS__)
3d57eb5b 115
116#ifndef LTT_PACK
117/* Calculate the offset needed to align the type */
e90c7b86 118static inline unsigned int __attribute__((no_instrument_function))
bf48b748 119 ltt_align(size_t align_drift, size_t size_of_type)
3d57eb5b 120{
121 size_t alignment = min(sizeof(void*), size_of_type);
122
123 return ((alignment - align_drift) & (alignment-1));
124}
8a9103df 125#define LTT_ALIGN
3d57eb5b 126#else
e90c7b86 127static inline unsigned int __attribute__((no_instrument_function))
128 ltt_align(size_t align_drift,
129 size_t size_of_type)
3d57eb5b 130{
131 return 0;
132}
8a9103df 133#define LTT_ALIGN __attribute__((packed))
3d57eb5b 134#endif //LTT_PACK
135
976db1b3 136#ifdef LTT_TRACE_FAST
137#include <ltt/ltt-usertrace-fast.h>
138#endif //LTT_TRACE_FAST
139
38f24d5c 140#endif //_LTT_USERTRACE_H
3d57eb5b 141
142
This page took 0.030013 seconds and 4 git commands to generate.