* should be increased when an incompatible ABI change is done.
*/
#define LTTNG_MODULES_ABI_MAJOR_VERSION 2
-#define LTTNG_MODULES_ABI_MINOR_VERSION 4
+#define LTTNG_MODULES_ABI_MINOR_VERSION 5
#define LTTNG_KERNEL_SYM_NAME_LEN 256
#define LTTNG_KERNEL_SESSION_NAME_LEN 256
+
+/*
+ * The expected iso8601 time formats are either:
+ *
+ * - YYYYmmddTHHMMSS+HHMM (20 characters + \0)
+ * - YYYY-mm-ddTHH:MM:SS+HH:MM (25 characters + \0)
+ */
#define LTTNG_KERNEL_SESSION_CREATION_TIME_ISO8601_LEN 26
enum lttng_kernel_instrumentation {
} u;
} __attribute__((packed));
+enum lttng_kernel_syscall_entryexit {
+ LTTNG_KERNEL_SYSCALL_ENTRYEXIT = 0,
+ LTTNG_KERNEL_SYSCALL_ENTRY = 1, /* Not implemented. */
+ LTTNG_KERNEL_SYSCALL_EXIT = 2, /* Not implemented. */
+};
+
+enum lttng_kernel_syscall_abi {
+ LTTNG_KERNEL_SYSCALL_ABI_ALL = 0,
+ LTTNG_KERNEL_SYSCALL_ABI_NATIVE = 1, /* Not implemented. */
+ LTTNG_KERNEL_SYSCALL_ABI_COMPAT = 2, /* Not implemented. */
+};
+
+enum lttng_kernel_syscall_match {
+ LTTNG_SYSCALL_MATCH_NAME = 0,
+ LTTNG_SYSCALL_MATCH_NR = 1, /* Not implemented. */
+};
+
+struct lttng_kernel_syscall {
+ uint8_t entryexit; /* enum lttng_kernel_syscall_entryexit */
+ uint8_t abi; /* enum lttng_kernel_syscall_abi */
+ uint8_t match; /* enum lttng_kernel_syscall_match */
+ uint8_t padding;
+ uint32_t nr; /* For LTTNG_SYSCALL_MATCH_NR */
+} __attribute__((packed));
+
/*
* For syscall tracing, name = "*" means "enable all".
*/
struct lttng_kernel_kprobe kprobe;
struct lttng_kernel_function_tracer ftrace;
struct lttng_kernel_uprobe uprobe;
+ struct lttng_kernel_syscall syscall;
char padding[LTTNG_KERNEL_EVENT_PADDING2];
} u;
} __attribute__((packed));
char data[0];
} __attribute__((packed));
+enum lttng_kernel_tracker_type {
+ LTTNG_KERNEL_TRACKER_UNKNOWN = -1,
+
+ LTTNG_KERNEL_TRACKER_PID = 0,
+ LTTNG_KERNEL_TRACKER_VPID = 1,
+ LTTNG_KERNEL_TRACKER_UID = 2,
+ LTTNG_KERNEL_TRACKER_VUID = 3,
+ LTTNG_KERNEL_TRACKER_GID = 4,
+ LTTNG_KERNEL_TRACKER_VGID = 5,
+};
+
+struct lttng_kernel_tracker_args {
+ enum lttng_kernel_tracker_type type;
+ int32_t id;
+};
+
/* LTTng file descriptor ioctl */
/* lttng-abi-old.h reserve 0x40, 0x41, 0x42, 0x43, and 0x44. */
#define LTTNG_KERNEL_SESSION _IO(0xF6, 0x45)
_IOR(0xF6, 0x58, int32_t)
#define LTTNG_KERNEL_SESSION_UNTRACK_PID \
_IOR(0xF6, 0x59, int32_t)
+
/*
* ioctl 0x58 and 0x59 are duplicated here. It works, since _IOR vs _IO
* are generating two different ioctl numbers, but this was not done on
#define LTTNG_KERNEL_FILTER _IO(0xF6, 0x90)
#define LTTNG_KERNEL_ADD_CALLSITE _IO(0xF6, 0x91)
+/* Session FD ioctl (continued) */
+#define LTTNG_KERNEL_SESSION_LIST_TRACKER_IDS \
+ _IOR(0xF6, 0xA0, struct lttng_kernel_tracker_args)
+#define LTTNG_KERNEL_SESSION_TRACK_ID \
+ _IOR(0xF6, 0xA1, struct lttng_kernel_tracker_args)
+#define LTTNG_KERNEL_SESSION_UNTRACK_ID \
+ _IOR(0xF6, 0xA2, struct lttng_kernel_tracker_args)
+
/*
* LTTng-specific ioctls for the lib ringbuffer.
*