From ba1f598672d39e16402219556a911edf3a7fb7c8 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Fri, 20 May 2011 20:59:00 -0400 Subject: [PATCH] Take care of units in description for ftrace and kprobes Signed-off-by: Mathieu Desnoyers --- ltt-events.h | 18 ++++++++++++++++-- probes/lttng-ftrace.c | 8 ++++---- probes/lttng-kprobes.c | 4 ++-- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/ltt-events.h b/ltt-events.h index 45d459d4..6bdacf6e 100644 --- a/ltt-events.h +++ b/ltt-events.h @@ -17,6 +17,7 @@ struct ltt_channel; struct ltt_session; struct lib_ring_buffer_ctx; +struct perf_event; /* Type description */ @@ -112,9 +113,22 @@ 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 *ctx_field_callback; + union { + struct { + struct perf_event **e; /* per-cpu array */ + struct list_head *head; + } perf_counter; + } u; +}; + +struct lttng_ctx { + const struct lttng_ctx_field *fields; unsigned int nr_fields; + unsigned int allocated_fields; }; struct lttng_event_desc { diff --git a/probes/lttng-ftrace.c b/probes/lttng-ftrace.c index 061da25a..f583ab6e 100644 --- a/probes/lttng-ftrace.c +++ b/probes/lttng-ftrace.c @@ -76,8 +76,8 @@ int lttng_create_ftrace_event(const char *name, struct ltt_event *event) } fields[0].name = "ip"; fields[0].type.atype = atype_integer; - fields[0].type.u.basic.integer.size = sizeof(unsigned long); - fields[0].type.u.basic.integer.alignment = ltt_alignof(unsigned long); + fields[0].type.u.basic.integer.size = sizeof(unsigned long) * CHAR_BIT; + fields[0].type.u.basic.integer.alignment = ltt_alignof(unsigned long) * CHAR_BIT; fields[0].type.u.basic.integer.signedness = 0; fields[0].type.u.basic.integer.reverse_byte_order = 0; fields[0].type.u.basic.integer.base = 16; @@ -85,8 +85,8 @@ int lttng_create_ftrace_event(const char *name, struct ltt_event *event) fields[1].name = "parent_ip"; fields[1].type.atype = atype_integer; - fields[1].type.u.basic.integer.size = sizeof(unsigned long); - fields[1].type.u.basic.integer.alignment = ltt_alignof(unsigned long); + fields[1].type.u.basic.integer.size = sizeof(unsigned long) * CHAR_BIT; + fields[1].type.u.basic.integer.alignment = ltt_alignof(unsigned long) * CHAR_BIT; fields[1].type.u.basic.integer.signedness = 0; fields[1].type.u.basic.integer.reverse_byte_order = 0; fields[1].type.u.basic.integer.base = 16; diff --git a/probes/lttng-kprobes.c b/probes/lttng-kprobes.c index 96e7509c..87806e37 100644 --- a/probes/lttng-kprobes.c +++ b/probes/lttng-kprobes.c @@ -65,8 +65,8 @@ int lttng_create_kprobe_event(const char *name, struct ltt_event *event) } field->name = "ip"; field->type.atype = atype_integer; - field->type.u.basic.integer.size = sizeof(unsigned long); - field->type.u.basic.integer.alignment = ltt_alignof(unsigned long); + field->type.u.basic.integer.size = sizeof(unsigned long) * CHAR_BIT; + field->type.u.basic.integer.alignment = ltt_alignof(unsigned long) * CHAR_BIT; field->type.u.basic.integer.signedness = 0; field->type.u.basic.integer.reverse_byte_order = 0; field->type.u.basic.integer.base = 16; -- 2.34.1