completely remove kernel headers
[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>
3a4541a5 17
18#define inline inline __attribute__((always_inline))
19
60009e26 20#if defined(__powerpc__) || defined(__powerpc64__)
3a4541a5 21#ifdef __powerpc64__
22#include <ltt/atomic-ppc64.h>
23#include <ltt/system-ppc64.h>
24#include <asm/timex.h>
25#else
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>
30#endif
ce22b1be 31#elif defined(__x86_64__)
4b18c4a6 32#include <ltt/kernelutils-x86_64.h>
33#elif defined(__i386__)
34#include <ltt/kernelutils-i386.h>
60009e26 35#else
4b18c4a6 36#error "Unsupported architecture"
60009e26 37#endif
3d57eb5b 38
39#ifndef min
40#define min(a,b) ((a)<(b)?(a):(b))
41#endif
42
d86395c3 43#ifdef i386
ac493dbc 44#define __NR_ltt_trace_generic 317
45#define __NR_ltt_register_generic 318
3d57eb5b 46#undef NR_syscalls
ac493dbc 47#define NR_syscalls 319
d86395c3 48#endif
49
ce22b1be 50#ifdef __x86_64__
51#define __NR_ltt_trace_generic 279
52#define __NR_ltt_register_generic 280
53#undef NR_syscalls
54#define NR_syscalls 281
55#endif
56
3a4541a5 57#ifdef __powerpc__
ac493dbc 58#define __NR_ltt_trace_generic 301
59#define __NR_ltt_register_generic 302
3a4541a5 60#undef NR_syscalls
ac493dbc 61#define NR_syscalls 303
3a4541a5 62#endif
63
64#ifdef __powerpc64__
ac493dbc 65#define __NR_ltt_trace_generic 301
66#define __NR_ltt_register_generic 302
d86395c3 67#undef NR_syscalls
ac493dbc 68#define NR_syscalls 303
d86395c3 69#endif
3d57eb5b 70
3a4541a5 71
72
3d57eb5b 73//FIXME : setup for ARM
74//FIXME : setup for MIPS
75
76#ifndef _LIBC
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
80#endif
81
82#define FACNAME_LEN 32
83
972a52cf 84/* LTT userspace tracing is non blocking by default when buffers are full */
85#ifndef LTT_BLOCKING
86#define LTT_BLOCKING 0
87#endif //LTT_BLOCKING
88
3d57eb5b 89typedef unsigned int ltt_facility_t;
90
91struct user_facility_info {
92 char name[FACNAME_LEN];
93 unsigned int num_events;
94 size_t alignment;
95 uint32_t checksum;
96 size_t int_size;
97 size_t long_size;
98 size_t pointer_size;
99 size_t size_t_size;
100};
5ecaa1ab 101#if 0
e90c7b86 102static 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)
105static inline __attribute__((no_instrument_function))
106_syscall2(int, ltt_register_generic, unsigned int *, facility_id,
107 const struct user_facility_info *, info)
5ecaa1ab 108#endif //0
109
110#define ltt_register_generic(...) syscall(__NR_ltt_register_generic, __VA_ARGS__)
111#define ltt_trace_generic(...) syscall(__NR_ltt_trace_generic, __VA_ARGS__)
3d57eb5b 112
113#ifndef LTT_PACK
114/* Calculate the offset needed to align the type */
e90c7b86 115static inline unsigned int __attribute__((no_instrument_function))
bf48b748 116 ltt_align(size_t align_drift, size_t size_of_type)
3d57eb5b 117{
118 size_t alignment = min(sizeof(void*), size_of_type);
119
120 return ((alignment - align_drift) & (alignment-1));
121}
8a9103df 122#define LTT_ALIGN
3d57eb5b 123#else
e90c7b86 124static inline unsigned int __attribute__((no_instrument_function))
125 ltt_align(size_t align_drift,
126 size_t size_of_type)
3d57eb5b 127{
128 return 0;
129}
8a9103df 130#define LTT_ALIGN __attribute__((packed))
3d57eb5b 131#endif //LTT_PACK
132
976db1b3 133#ifdef LTT_TRACE_FAST
134#include <ltt/ltt-usertrace-fast.h>
135#endif //LTT_TRACE_FAST
136
38f24d5c 137#endif //_LTT_USERTRACE_H
3d57eb5b 138
139
This page took 0.030189 seconds and 4 git commands to generate.