X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt-usertrace%2Fltt%2Fltt-usertrace.h;h=4416da45fe9290f7b204f5d82d44c3d59ab23feb;hb=895ad1156ce7e727e53edeccc977267a1d419820;hp=9d52ad70fa37f3a051d864fd16de0b910747fb58;hpb=ddeda2eebdd06ce9aa5fa9872b0ca9bd1985118b;p=lttv.git diff --git a/ltt-usertrace/ltt/ltt-usertrace.h b/ltt-usertrace/ltt/ltt-usertrace.h index 9d52ad70..4416da45 100644 --- a/ltt-usertrace/ltt/ltt-usertrace.h +++ b/ltt-usertrace/ltt/ltt-usertrace.h @@ -1,32 +1,79 @@ /***************************************************************************** - * ltt-generic.h + * ltt-usertrace.h * - * LTT generic userspace tracing header + * LTT userspace tracing header * * Mathieu Desnoyers, March 2006 */ -#ifndef _LTT_GENERIC_H -#define _LTT_GENERIC_H +#ifndef _LTT_USERTRACE_H +#define _LTT_USERTRACE_H #include #include -#include -#include #include -#include #include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +#define inline inline __attribute__((always_inline)) + +#if defined(__powerpc__) || defined(__powerpc64__) +#ifdef __powerpc64__ +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#elif defined(__x86_64__) +#include +#elif defined(__i386__) +#include +#else +#error "Unsupported architecture" +#endif #ifndef min #define min(a,b) ((a)<(b)?(a):(b)) #endif -//Put in asm-i486/unistd.h -#define __NR_ltt_trace_generic 294 -#define __NR_ltt_register_generic 295 +#ifdef i386 +#define __NR_ltt_trace_generic 317 +#define __NR_ltt_register_generic 318 +#undef NR_syscalls +#define NR_syscalls 319 +#endif + +#ifdef __x86_64__ +#define __NR_ltt_trace_generic 279 +#define __NR_ltt_register_generic 280 +#undef NR_syscalls +#define NR_syscalls 281 +#endif +#ifdef __powerpc__ +#define __NR_ltt_trace_generic 301 +#define __NR_ltt_register_generic 302 #undef NR_syscalls -#define NR_syscalls 296 +#define NR_syscalls 303 +#endif + +#ifdef __powerpc64__ +#define __NR_ltt_trace_generic 301 +#define __NR_ltt_register_generic 302 +#undef NR_syscalls +#define NR_syscalls 303 +#endif + + //FIXME : setup for ARM //FIXME : setup for MIPS @@ -56,19 +103,25 @@ struct user_facility_info { size_t pointer_size; size_t size_t_size; }; - +#if 0 static inline __attribute__((no_instrument_function)) _syscall5(int, ltt_trace_generic, unsigned int, facility_id, unsigned int, event_id, void *, data, size_t, data_size, int, blocking) static inline __attribute__((no_instrument_function)) _syscall2(int, ltt_register_generic, unsigned int *, facility_id, const struct user_facility_info *, info) +#endif //0 + +#define ltt_register_generic(...) syscall(__NR_ltt_register_generic, __VA_ARGS__) +#define ltt_trace_generic(...) syscall(__NR_ltt_trace_generic, __VA_ARGS__) + +static inline unsigned int __attribute__((no_instrument_function)) + ltt_align(size_t align_drift, size_t size_of_type); #ifndef LTT_PACK /* Calculate the offset needed to align the type */ -static inline unsigned int __attribute__((no_instrument_function)) - ltt_align(size_t align_drift, - size_t size_of_type) +static inline unsigned int + ltt_align(size_t align_drift, size_t size_of_type) { size_t alignment = min(sizeof(void*), size_of_type); @@ -76,15 +129,19 @@ static inline unsigned int __attribute__((no_instrument_function)) } #define LTT_ALIGN #else -static inline unsigned int __attribute__((no_instrument_function)) - ltt_align(size_t align_drift, - size_t size_of_type) +static inline unsigned int ltt_align(size_t align_drift, size_t size_of_type) { return 0; } #define LTT_ALIGN __attribute__((packed)) #endif //LTT_PACK -#endif //_LTT_GENERIC_H +#ifdef __cplusplus +} /* end of extern "C" */ +#endif +#ifdef LTT_TRACE_FAST +#include +#endif //LTT_TRACE_FAST +#endif //_LTT_USERTRACE_H