#include <string.h>
#include <stdint.h>
#include <sys/types.h>
-#include <linux/unistd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#define inline inline __attribute__((always_inline))
#include <ltt/timex-ppc.h>
#endif
#elif defined(__x86_64__)
-#include <asm/timex.h>
-#include <asm/bitops.h>
-#include <asm/atomic.h>
-#include <asm/system.h>
+#include <ltt/kernelutils-x86_64.h>
+#elif defined(__i386__)
+#include <ltt/kernelutils-i386.h>
+#elif defined(__arm__)
+#include <ltt/kernelutils-arm.h>
+#elif defined(__SH4__)
+#include <ltt/kernelutils-sh.h>
#else
-#include <asm/timex.h>
-#include <asm/atomic.h>
+#error "Unsupported architecture"
#endif
#ifndef min
#endif
#ifdef i386
-#define __NR_ltt_trace_generic 317
-#define __NR_ltt_register_generic 318
+#define __NR_ltt_trace_generic 328
+#define __NR_ltt_register_generic 329
#undef NR_syscalls
-#define NR_syscalls 319
+#define NR_syscalls 330
#endif
#ifdef __x86_64__
-#define __NR_ltt_trace_generic 279
-#define __NR_ltt_register_generic 280
+#define __NR_ltt_trace_generic 286
+#define __NR_ltt_register_generic 287
#undef NR_syscalls
-#define NR_syscalls 281
+#define NR_syscalls 288
#endif
#ifdef __powerpc__
-#define __NR_ltt_trace_generic 301
-#define __NR_ltt_register_generic 302
+#define __NR_ltt_trace_generic 309
+#define __NR_ltt_register_generic 310
#undef NR_syscalls
-#define NR_syscalls 303
+#define NR_syscalls 311
#endif
#ifdef __powerpc64__
-#define __NR_ltt_trace_generic 301
-#define __NR_ltt_register_generic 302
+#define __NR_ltt_trace_generic 309
+#define __NR_ltt_register_generic 310
#undef NR_syscalls
-#define NR_syscalls 303
+#define NR_syscalls 311
#endif
+#ifdef __arm__
+#define __NR_ltt_trace_generic 352
+#define __NR_ltt_register_generic 353
+#undef NR_syscalls
+#define NR_syscalls 354
+#endif
-
-//FIXME : setup for ARM
//FIXME : setup for MIPS
#ifndef _LIBC
#ifndef LTT_BLOCKING
#define LTT_BLOCKING 0
#endif //LTT_BLOCKING
-
+
typedef unsigned int ltt_facility_t;
struct user_facility_info {
char name[FACNAME_LEN];
- unsigned int num_events;
- size_t alignment;
+ uint32_t num_events;
+ uint32_t alignment;
uint32_t checksum;
- size_t int_size;
- size_t long_size;
- size_t pointer_size;
- size_t size_t_size;
+ uint32_t int_size;
+ uint32_t long_size;
+ uint32_t pointer_size;
+ uint32_t size_t_size;
};
#if 0
static inline __attribute__((no_instrument_function))
#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))
+static inline unsigned int
ltt_align(size_t align_drift, size_t size_of_type)
{
size_t alignment = min(sizeof(void*), size_of_type);
}
#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
+#ifdef __cplusplus
+} /* end of extern "C" */
+#endif
+
#ifdef LTT_TRACE_FAST
#include <ltt/ltt-usertrace-fast.h>
#endif //LTT_TRACE_FAST
#endif //_LTT_USERTRACE_H
-
-