X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt-events.h;h=6cc3753101fb1606de8f1c11fe1f81c504c7553b;hb=41affe319e5f4c049ba0ae427f485d8cdfb65488;hp=45d459d47f39af0187763a38d75e5283652f1987;hpb=0d1a681e2c2521edea85e8748c7be35a60c73155;p=lttng-modules.git diff --git a/ltt-events.h b/ltt-events.h index 45d459d4..6cc37531 100644 --- a/ltt-events.h +++ b/ltt-events.h @@ -17,6 +17,8 @@ struct ltt_channel; struct ltt_session; struct lib_ring_buffer_ctx; +struct perf_event; +struct perf_event_attr; /* Type description */ @@ -43,17 +45,17 @@ struct lttng_enum_entry { const char *string; }; -#define __type_integer(_type, _byte_order, _base) \ +#define __type_integer(_type, _byte_order, _base, _encoding) \ { \ .atype = atype_integer, \ .u.basic.integer = \ { \ - .size = sizeof(_type), \ + .size = sizeof(_type) * CHAR_BIT, \ .alignment = ltt_alignof(_type) * CHAR_BIT, \ .signedness = is_signed_type(_type), \ .reverse_byte_order = _byte_order != __BYTE_ORDER, \ .base = _base, \ - .encoding = lttng_encode_none, \ + .encoding = lttng_encode_##_encoding, \ }, \ } \ @@ -112,9 +114,23 @@ struct lttng_event_field { struct lttng_type type; }; -struct lttng_event_ctx { - const struct lttng_event_field *fields; +struct lttng_ctx_field { + const char *name; + struct lttng_type type; + void *callback; + union { + struct { + struct perf_event **e; /* per-cpu array */ + struct list_head head; + struct perf_event_attr *attr; + } perf_counter; + } u; +}; + +struct lttng_ctx { + struct lttng_ctx_field *fields; unsigned int nr_fields; + unsigned int allocated_fields; }; struct lttng_event_desc { @@ -164,7 +180,8 @@ struct ltt_channel_ops { void (*channel_destroy)(struct channel *chan); struct lib_ring_buffer *(*buffer_read_open)(struct channel *chan); void (*buffer_read_close)(struct lib_ring_buffer *buf); - int (*event_reserve)(struct lib_ring_buffer_ctx *ctx); + int (*event_reserve)(struct lib_ring_buffer_ctx *ctx, + uint32_t event_id); void (*event_commit)(struct lib_ring_buffer_ctx *ctx); void (*event_write)(struct lib_ring_buffer_ctx *ctx, const void *src, size_t len); @@ -226,13 +243,10 @@ struct ltt_channel *ltt_global_channel_create(struct ltt_session *session, size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval); -void _ltt_channel_destroy(struct ltt_channel *chan); struct ltt_event *ltt_event_create(struct ltt_channel *chan, - char *name, struct lttng_kernel_event *event_param, void *filter); -int ltt_event_unregister(struct ltt_event *event); void ltt_transport_register(struct ltt_transport *transport); void ltt_transport_unregister(struct ltt_transport *transport); @@ -265,6 +279,7 @@ int lttng_kprobes_register(const char *name, return -ENOSYS; } +static inline void lttng_kprobes_unregister(struct ltt_event *event) { }