move everything out of trunk
[lttv.git] / markers-userspace / kernel-api.h
1 /*
2 * Kernel API extracted from Linux kernel headers.
3 */
4
5 #ifndef __KERNEL_API
6 #define __KERNEL_API
7
8 #include <errno.h>
9 #include <syscall.h>
10 #include <string.h>
11 #include <stdint.h>
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 #define DECLARE_IMV(type, name) extern __typeof__(type) name##__imv
18 #define DEFINE_IMV(type, name) __typeof__(type) name##__imv
19
20 #define likely(x) __builtin_expect(!!(x), 1)
21 #define unlikely(x) __builtin_expect(!!(x), 0)
22
23 /**
24 * imv_read - read immediate variable
25 * @name: immediate value name
26 *
27 * Reads the value of @name.
28 */
29 #define imv_read(name) _imv_read(name)
30
31 /**
32 * _imv_read - Read immediate value with standard memory load.
33 * @name: immediate value name
34 *
35 * Force a data read of the immediate value instead of the immediate value
36 * based mechanism. Useful for __init and __exit section data read.
37 */
38 #define _imv_read(name) (name##__imv)
39
40 #ifdef __i386__
41 #define __NR_marker 333
42 #define __NR_trace 334
43 #elif defined(__x86_64__)
44 #define __NR_marker 295
45 #define __NR_trace 296
46 #else
47 #error "Unsupported architecture for userspace markers"
48 #endif
49
50 #define sys_marker(...) syscall(__NR_marker, __VA_ARGS__)
51 #define sys_trace(...) syscall(__NR_trace, __VA_ARGS__)
52
53 #ifdef __cplusplus
54 } /* end of extern "C" */
55 #endif
56
57 #endif
This page took 0.032524 seconds and 4 git commands to generate.