X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=include%2Flttng%2Flttng.h;h=2f5d6bc8e53f40353b6e2e70d5a72a367ba16282;hp=433d2d804829749b2909b2485213b1c06607377f;hb=d14d33bf091e72b23b1f90ea18a0a01bed098b76;hpb=0cda4f28041a221757fa2dfa8e91706e7a548090 diff --git a/include/lttng/lttng.h b/include/lttng/lttng.h index 433d2d804..2f5d6bc8e 100644 --- a/include/lttng/lttng.h +++ b/include/lttng/lttng.h @@ -6,8 +6,8 @@ * Copyright (C) 2011 - David Goulet * * This library is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published by the - * Free Software Foundation; only version 2.1 of the License. + * under the terms of the GNU Lesser General Public License, version 2.1 only, + * as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or @@ -29,7 +29,7 @@ /* * Event symbol length. Copied from LTTng kernel ABI. */ -#define LTTNG_SYMBOL_NAME_LEN 256 +#define LTTNG_SYMBOL_NAME_LEN 256 /* * Every lttng_event_* structure both apply to kernel event and user-space @@ -71,8 +71,30 @@ enum lttng_event_type { * Loglevel information. */ enum lttng_loglevel_type { - LTTNG_EVENT_LOGLEVEL = 0, - LTTNG_EVENT_LOGLEVEL_ONLY = 1, + LTTNG_EVENT_LOGLEVEL_ALL = 0, + LTTNG_EVENT_LOGLEVEL_RANGE = 1, + LTTNG_EVENT_LOGLEVEL_SINGLE = 2, +}; + +/* + * Available loglevels. + */ +enum lttng_loglevel { + LTTNG_LOGLEVEL_EMERG = 0, + LTTNG_LOGLEVEL_ALERT = 1, + LTTNG_LOGLEVEL_CRIT = 2, + LTTNG_LOGLEVEL_ERR = 3, + LTTNG_LOGLEVEL_WARNING = 4, + LTTNG_LOGLEVEL_NOTICE = 5, + LTTNG_LOGLEVEL_INFO = 6, + LTTNG_LOGLEVEL_DEBUG_SYSTEM = 7, + LTTNG_LOGLEVEL_DEBUG_PROGRAM = 8, + LTTNG_LOGLEVEL_DEBUG_PROCESS = 9, + LTTNG_LOGLEVEL_DEBUG_MODULE = 10, + LTTNG_LOGLEVEL_DEBUG_UNIT = 11, + LTTNG_LOGLEVEL_DEBUG_FUNCTION = 12, + LTTNG_LOGLEVEL_DEBUG_LINE = 13, + LTTNG_LOGLEVEL_DEBUG = 14, }; /* @@ -102,26 +124,39 @@ enum lttng_calibrate_type { LTTNG_CALIBRATE_FUNCTION = 0, }; +#define LTTNG_DOMAIN_PADDING1 16 +#define LTTNG_DOMAIN_PADDING2 LTTNG_SYMBOL_NAME_LEN + 32 struct lttng_domain { enum lttng_domain_type type; + char padding[LTTNG_DOMAIN_PADDING1]; + union { pid_t pid; char exec_name[NAME_MAX]; + char padding[LTTNG_DOMAIN_PADDING2]; } attr; }; /* Perf counter attributes */ +#define LTTNG_PERF_EVENT_PADDING1 16 struct lttng_event_perf_counter_ctx { uint32_t type; uint64_t config; char name[LTTNG_SYMBOL_NAME_LEN]; + + char padding[LTTNG_PERF_EVENT_PADDING1]; }; /* Event/Channel context */ +#define LTTNG_EVENT_CONTEXT_PADDING1 16 +#define LTTNG_EVENT_CONTEXT_PADDING2 LTTNG_SYMBOL_NAME_LEN + 32 struct lttng_event_context { enum lttng_event_context_type ctx; + char padding[LTTNG_EVENT_CONTEXT_PADDING1]; + union { struct lttng_event_perf_counter_ctx perf_counter; + char padding[LTTNG_EVENT_CONTEXT_PADDING2]; } u; }; @@ -130,43 +165,56 @@ struct lttng_event_context { * * Either addr is used or symbol_name and offset. */ +#define LTTNG_EVENT_PROBE_PADDING1 16 struct lttng_event_probe_attr { uint64_t addr; uint64_t offset; char symbol_name[LTTNG_SYMBOL_NAME_LEN]; + + char padding[LTTNG_EVENT_PROBE_PADDING1]; }; /* * Function tracer */ +#define LTTNG_EVENT_FUNCTION_PADDING1 16 struct lttng_event_function_attr { char symbol_name[LTTNG_SYMBOL_NAME_LEN]; + + char padding[LTTNG_EVENT_FUNCTION_PADDING1]; }; /* * Generic lttng event */ +#define LTTNG_EVENT_PADDING1 16 +#define LTTNG_EVENT_PADDING2 LTTNG_SYMBOL_NAME_LEN + 32 struct lttng_event { enum lttng_event_type type; char name[LTTNG_SYMBOL_NAME_LEN]; enum lttng_loglevel_type loglevel_type; - char loglevel[LTTNG_SYMBOL_NAME_LEN]; - int64_t loglevel_value; /* for printing */ + int loglevel; uint32_t enabled; pid_t pid; + + char padding[LTTNG_EVENT_PADDING1]; + /* Per event type configuration */ union { struct lttng_event_probe_attr probe; struct lttng_event_function_attr ftrace; + + char padding[LTTNG_EVENT_PADDING2]; } attr; }; /* * Tracer channel attributes. For both kernel and user-space. */ +#define LTTNG_CHANNEL_ATTR_PADDING1 LTTNG_SYMBOL_NAME_LEN + 32 struct lttng_channel_attr { int overwrite; /* 1: overwrite, 0: discard */ uint64_t subbuf_size; /* bytes */ @@ -174,19 +222,27 @@ struct lttng_channel_attr { unsigned int switch_timer_interval; /* usec */ unsigned int read_timer_interval; /* usec */ enum lttng_event_output output; /* splice, mmap */ + + char padding[LTTNG_CHANNEL_ATTR_PADDING1]; }; /* * Channel information structure. For both kernel and user-space. */ +#define LTTNG_CHANNEL_PADDING1 16 struct lttng_channel { char name[LTTNG_SYMBOL_NAME_LEN]; uint32_t enabled; struct lttng_channel_attr attr; + + char padding[LTTNG_CHANNEL_PADDING1]; }; +#define LTTNG_CALIBRATE_PADDING1 16 struct lttng_calibrate { enum lttng_calibrate_type type; + + char padding[LTTNG_CALIBRATE_PADDING1]; }; /* @@ -196,19 +252,25 @@ struct lttng_calibrate { * daemon *to* the lttng client. It's basically a 'human' representation of * tracing entities (here a session). */ +#define LTTNG_SESSION_PADDING1 16 struct lttng_session { char name[NAME_MAX]; /* The path where traces are written */ char path[PATH_MAX]; uint32_t enabled; /* enabled/started: 1, disabled/stopped: 0 */ + + char padding[LTTNG_SESSION_PADDING1]; }; /* * Handle used as a context for commands. */ +#define LTTNG_HANDLE_PADDING1 16 struct lttng_handle { char session_name[NAME_MAX]; struct lttng_domain domain; + + char padding[LTTNG_HANDLE_PADDING1]; }; /* @@ -354,7 +416,7 @@ extern int lttng_add_context(struct lttng_handle *handle, const char *channel_name); /* - * Create or enable a kernel event (or events) for a channel. + * Create or enable an event (or events) for a channel. * * If the event you are trying to enable does not exist, it will be created, * else it is enabled. @@ -365,14 +427,14 @@ extern int lttng_enable_event(struct lttng_handle *handle, struct lttng_event *ev, const char *channel_name); /* - * Create or enable a kernel channel. + * Create or enable a channel. * The channel name cannot be NULL. */ extern int lttng_enable_channel(struct lttng_handle *handle, struct lttng_channel *chan); /* - * Disable kernel event(s) of a channel and domain. + * Disable event(s) of a channel and domain. * * If event_name is NULL, all events are disabled. * If channel_name is NULL, the default channel is used (channel0). @@ -381,7 +443,7 @@ extern int lttng_disable_event(struct lttng_handle *handle, const char *name, const char *channel_name); /* - * Disable kernel channel. + * Disable channel. * * The channel name cannot be NULL. */