/*
* Copyright (C) 2014 - David Goulet <dgoulet@efficios.com>
+ * Copyright (C) 2016 - Jérémie Galarneau <jeremie.galarneau@efficios.com>
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License, version 2.1 only,
LTTNG_LOGLEVEL_LOG4J_ALL = INT32_MIN,
};
+/*
+ * Available loglevels for the Python domain. Those are an exact map from the
+ * Level class.
+ */
+enum lttng_loglevel_python {
+ LTTNG_LOGLEVEL_PYTHON_CRITICAL = 50,
+ LTTNG_LOGLEVEL_PYTHON_ERROR = 40,
+ LTTNG_LOGLEVEL_PYTHON_WARNING = 30,
+ LTTNG_LOGLEVEL_PYTHON_INFO = 20,
+ LTTNG_LOGLEVEL_PYTHON_DEBUG = 10,
+ LTTNG_LOGLEVEL_PYTHON_NOTSET = 0,
+};
+
/*
* LTTng consumer mode
*/
/* Event context possible type */
enum lttng_event_context_type {
- LTTNG_EVENT_CONTEXT_PID = 0,
- LTTNG_EVENT_CONTEXT_PERF_COUNTER = 1, /* Backward compat. */
- LTTNG_EVENT_CONTEXT_PROCNAME = 2,
- LTTNG_EVENT_CONTEXT_PRIO = 3,
- LTTNG_EVENT_CONTEXT_NICE = 4,
- LTTNG_EVENT_CONTEXT_VPID = 5,
- LTTNG_EVENT_CONTEXT_TID = 6,
- LTTNG_EVENT_CONTEXT_VTID = 7,
- LTTNG_EVENT_CONTEXT_PPID = 8,
- LTTNG_EVENT_CONTEXT_VPPID = 9,
- LTTNG_EVENT_CONTEXT_PTHREAD_ID = 10,
- LTTNG_EVENT_CONTEXT_HOSTNAME = 11,
- LTTNG_EVENT_CONTEXT_IP = 12,
- LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER = 13,
+ LTTNG_EVENT_CONTEXT_PID = 0,
+ LTTNG_EVENT_CONTEXT_PERF_COUNTER = 1, /* Backward compat. */
+ LTTNG_EVENT_CONTEXT_PROCNAME = 2,
+ LTTNG_EVENT_CONTEXT_PRIO = 3,
+ LTTNG_EVENT_CONTEXT_NICE = 4,
+ LTTNG_EVENT_CONTEXT_VPID = 5,
+ LTTNG_EVENT_CONTEXT_TID = 6,
+ LTTNG_EVENT_CONTEXT_VTID = 7,
+ LTTNG_EVENT_CONTEXT_PPID = 8,
+ LTTNG_EVENT_CONTEXT_VPPID = 9,
+ LTTNG_EVENT_CONTEXT_PTHREAD_ID = 10,
+ LTTNG_EVENT_CONTEXT_HOSTNAME = 11,
+ LTTNG_EVENT_CONTEXT_IP = 12,
+ LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER = 13,
LTTNG_EVENT_CONTEXT_PERF_THREAD_COUNTER = 14,
+ LTTNG_EVENT_CONTEXT_APP_CONTEXT = 15,
};
enum lttng_event_field_type {
LTTNG_EVENT_FIELD_STRING = 4,
};
+enum lttng_event_flag {
+ LTTNG_EVENT_FLAG_SYSCALL_32 = (1U << 0),
+ LTTNG_EVENT_FLAG_SYSCALL_64 = (1U << 1),
+};
+
/*
* Perf counter attributes
*
union {
struct lttng_event_perf_counter_ctx perf_counter;
+ struct {
+ char *provider_name;
+ char *ctx_name;
+ } app_ctx;
char padding[LTTNG_EVENT_CONTEXT_PADDING2];
} u;
};
*
* The structures should be initialized to zero before use.
*/
-#define LTTNG_EVENT_PADDING1 14
+#define LTTNG_EVENT_PADDING1 10
#define LTTNG_EVENT_PADDING2 LTTNG_SYMBOL_NAME_LEN + 32
struct lttng_event {
enum lttng_event_type type;
unsigned char filter; /* filter enabled ? */
unsigned char exclusion; /* exclusions added ? */
+ /* Event flag, from 2.6 and above. */
+ enum lttng_event_flag flags;
+
char padding[LTTNG_EVENT_PADDING1];
/* Per event type configuration */
extern int lttng_list_tracepoint_fields(struct lttng_handle *handle,
struct lttng_event_field **fields);
+/*
+ * List the available kernel syscall.
+ *
+ * Return the size (number of entries) of the allocated "lttng_event" array.
+ * All events in will be of type syscall. Caller must free events. On error a
+ * negative LTTng error code is returned.
+ */
+extern int lttng_list_syscalls(struct lttng_event **events);
+
/*
* Add context to event(s) for a specific channel (or for all).
*
extern int lttng_disable_event(struct lttng_handle *handle,
const char *name, const char *channel_name);
+/*
+ * Disable event(s) of a channel and domain.
+ *
+ * Takes a struct lttng_event as parameter.
+ * If channel_name is NULL, the default channel is used (channel0).
+ *
+ * Currently, @filter_expression must be NULL. (disabling specific
+ * filter expressions not implemented)
+ * Currently, only LTTNG_EVENT_ALL and LTTNG_EVENT_SYSCALL event types
+ * are implemented for field @ev.
+ *
+ * Return 0 on success else a negative LTTng error code.
+ */
+int lttng_disable_event_ext(struct lttng_handle *handle,
+ struct lttng_event *ev, const char *channel_name,
+ const char *filter_expression);
+
#ifdef __cplusplus
}
#endif