- _float_mant_dig(_type), \
.mant_dig = _float_mant_dig(_type), \
.alignment = lttng_alignof(_type) * CHAR_BIT, \
- .signedness = lttng_is_signed_type(_type), \
.reverse_byte_order = __BYTE_ORDER != __FLOAT_WORD_ORDER, \
}, \
} \
struct cds_list_head head; /* chain registered probes */
};
+struct ust_pending_probe;
+
/*
* ltt_event structure is referred to by the tracing fast path. It must be
* kept small.
union {
} u;
struct cds_list_head list; /* Event list */
+ struct ust_pending_probe *pending_probe;
int metadata_dumped:1;
};
struct channel;
+struct shm_handle;
struct ltt_channel_ops {
- struct shm_handle *(*channel_create)(const char *name,
+ struct ltt_channel *(*channel_create)(const char *name,
struct ltt_channel *ltt_chan,
void *buf_addr,
size_t subbuf_size, size_t num_subbuf,
unsigned int switch_timer_interval,
unsigned int read_timer_interval);
- void (*channel_destroy)(struct shm_handle *handle);
- struct lib_ring_buffer *(*buffer_read_open)(struct channel *chan);
- void (*buffer_read_close)(struct lib_ring_buffer *buf);
+ void (*channel_destroy)(struct ltt_channel *ltt_chan);
+ struct lib_ring_buffer *(*buffer_read_open)(struct channel *chan,
+ struct shm_handle *handle);
+ void (*buffer_read_close)(struct lib_ring_buffer *buf,
+ struct shm_handle *handle);
int (*event_reserve)(struct lib_ring_buffer_ctx *ctx,
uint32_t event_id);
void (*event_commit)(struct lib_ring_buffer_ctx *ctx);
* packet. Note that the size returned is only a hint, since it
* may change due to concurrent writes.
*/
- size_t (*packet_avail_size)(struct channel *chan);
+ size_t (*packet_avail_size)(struct channel *chan,
+ struct shm_handle *handle);
//wait_queue_head_t *(*get_reader_wait_queue)(struct channel *chan);
//wait_queue_head_t *(*get_hp_wait_queue)(struct channel *chan);
int (*is_finalized)(struct channel *chan);
struct ltt_session *session;
int objd; /* Object associated to channel */
unsigned int free_event_id; /* Next event ID to allocate */
+ unsigned int used_event_id; /* Max allocated event IDs */
struct cds_list_head list; /* Channel list */
struct ltt_channel_ops *ops;
int header_type; /* 0: unset, 1: compact, 2: large */
int ltt_probe_register(struct lttng_probe_desc *desc);
void ltt_probe_unregister(struct lttng_probe_desc *desc);
+int pending_probe_fix_events(const struct lttng_event_desc *desc);
const struct lttng_event_desc *ltt_event_get(const char *name);
void ltt_event_put(const struct lttng_event_desc *desc);
int ltt_probes_init(void);