futex
[lttv.git] / usertrace-fast / ltt-usertrace-fast.h
CommitLineData
b09f3215 1
04180f7f 2/* LTTng user-space "fast" tracing header
b09f3215 3 *
4 * Copyright 2006 Mathieu Desnoyers
5 *
6 */
7
04180f7f 8#ifndef _LTT_USERTRACE_FAST_H
9#define _LTT_USERTRACE_FAST_H
b09f3215 10
11#include <errno.h>
b09f3215 12#include <asm/atomic.h>
700d350d 13#include <pthread.h>
b09f3215 14
47d7d576 15
16#ifndef LTT_N_SUBBUFS
17#define LTT_N_SUBBUFS 2
18#endif //LTT_N_SUBBUFS
19
20#ifndef LTT_SUBBUF_SIZE_CPU
21#define LTT_SUBBUF_SIZE_CPU 1048576
51bf1553 22#endif //LTT_BUF_SIZE_CPU
b09f3215 23
47d7d576 24#define LTT_BUF_SIZE_CPU (LTT_SUBBUF_SIZE_CPU * LTT_N_SUBBUFS)
25
26#ifndef LTT_SUBBUF_SIZE_FACILITIES
27#define LTT_SUBBUF_SIZE_FACILITIES 4096
51bf1553 28#endif //LTT_BUF_SIZE_FACILITIES
b09f3215 29
47d7d576 30#define LTT_BUF_SIZE_FACILITIES (LTT_SUBBUF_SIZE_FACILITIES * LTT_N_SUBBUFS)
31
77b31f39 32#ifndef LTT_USERTRACE_ROOT
33#define LTT_USERTRACE_ROOT "/tmp/ltt-usertrace"
34#endif //LTT_USERTRACE_ROOT
35
47d7d576 36
37/* Buffer offset macros */
38
39#define BUFFER_OFFSET(offset, buf) (offset & (buf->alloc_size-1))
40#define SUBBUF_OFFSET(offset, buf) (offset & (buf->subbuf_size-1))
41#define SUBBUF_ALIGN(offset, buf) \
42 (((offset) + buf->subbuf_size) & (~(buf->subbuf_size-1)))
43#define SUBBUF_TRUNC(offset, buf) \
44 ((offset) & (~(buf->subbuf_size-1)))
45#define SUBBUF_INDEX(offset, buf) \
46 (BUFFER_OFFSET(offset,buf)/buf->subbuf_size)
47
48
b09f3215 49struct ltt_buf {
b09f3215 50 atomic_t offset;
47d7d576 51 atomic_t consumed;
52 atomic_t reserve_count[LTT_N_SUBBUFS];
53 atomic_t commit_count[LTT_N_SUBBUFS];
b09f3215 54
55 atomic_t events_lost;
47d7d576 56 atomic_t full; /* futex on which the writer waits : 1 : full */
57 unsigned int alloc_size;
58 unsigned int subbuf_size;
b09f3215 59};
60
700d350d 61struct ltt_trace_info {
1c48e587 62 int init;
b09f3215 63 int filter;
700d350d 64 pid_t daemon_id;
b09f3215 65 atomic_t nesting;
66 struct {
67 struct ltt_buf facilities;
68 struct ltt_buf cpu;
700d350d 69 char facilities_buf[LTT_BUF_SIZE_FACILITIES] __attribute__ ((aligned (8)));
51bf1553 70 char cpu_buf[LTT_BUF_SIZE_CPU] __attribute__ ((aligned (8)));
b09f3215 71 } channel;
72};
73
700d350d 74extern __thread struct ltt_trace_info *thread_trace_info;
b09f3215 75
51bf1553 76void ltt_thread_init(void);
b09f3215 77
700d350d 78void ltt_usertrace_fast_buffer_switch(void);
79
04180f7f 80#endif //_LTT_USERTRACE_FAST_H
This page took 0.025758 seconds and 4 git commands to generate.