X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=usertrace-fast%2Fltt-usertrace-fast.h;h=811a2537199a9ef8ad3ecae9e9959bfc6469e29a;hb=47d7d576a49691703007b6534a5d2658b15eff66;hp=fcd67e53d9ad4d381486933cf31a850ec5be283d;hpb=5efa73ea0fa6562c46a966f56665022ccb018963;p=lttv.git diff --git a/usertrace-fast/ltt-usertrace-fast.h b/usertrace-fast/ltt-usertrace-fast.h index fcd67e53..811a2537 100644 --- a/usertrace-fast/ltt-usertrace-fast.h +++ b/usertrace-fast/ltt-usertrace-fast.h @@ -12,34 +12,56 @@ #include #include -#ifndef LTT_BUF_SIZE_CPU -#define LTT_BUF_SIZE_CPU 1048576 + +#ifndef LTT_N_SUBBUFS +#define LTT_N_SUBBUFS 2 +#endif //LTT_N_SUBBUFS + +#ifndef LTT_SUBBUF_SIZE_CPU +#define LTT_SUBBUF_SIZE_CPU 1048576 #endif //LTT_BUF_SIZE_CPU -#ifndef LTT_BUF_SIZE_FACILITIES -#define LTT_BUF_SIZE_FACILITIES 4096 +#define LTT_BUF_SIZE_CPU (LTT_SUBBUF_SIZE_CPU * LTT_N_SUBBUFS) + +#ifndef LTT_SUBBUF_SIZE_FACILITIES +#define LTT_SUBBUF_SIZE_FACILITIES 4096 #endif //LTT_BUF_SIZE_FACILITIES +#define LTT_BUF_SIZE_FACILITIES (LTT_SUBBUF_SIZE_FACILITIES * LTT_N_SUBBUFS) + #ifndef LTT_USERTRACE_ROOT #define LTT_USERTRACE_ROOT "/tmp/ltt-usertrace" #endif //LTT_USERTRACE_ROOT + +/* Buffer offset macros */ + +#define BUFFER_OFFSET(offset, buf) (offset & (buf->alloc_size-1)) +#define SUBBUF_OFFSET(offset, buf) (offset & (buf->subbuf_size-1)) +#define SUBBUF_ALIGN(offset, buf) \ + (((offset) + buf->subbuf_size) & (~(buf->subbuf_size-1))) +#define SUBBUF_TRUNC(offset, buf) \ + ((offset) & (~(buf->subbuf_size-1))) +#define SUBBUF_INDEX(offset, buf) \ + (BUFFER_OFFSET(offset,buf)/buf->subbuf_size) + + struct ltt_buf { atomic_t offset; - atomic_t reserve_count; - atomic_t commit_count; + atomic_t consumed; + atomic_t reserve_count[LTT_N_SUBBUFS]; + atomic_t commit_count[LTT_N_SUBBUFS]; atomic_t events_lost; + atomic_t full; /* futex on which the writer waits : 1 : full */ + unsigned int alloc_size; + unsigned int subbuf_size; }; struct ltt_trace_info { int init; int filter; -#ifndef LTT_USE_THREADS pid_t daemon_id; -#else - pthread_t daemon_id; -#endif //LTT_USE_THREADS atomic_t nesting; struct { struct ltt_buf facilities;