LTTNG_KERNEL_SESSION_STOP);
}
+int kernctl_create_event_notifier_group(int fd)
+{
+ return LTTNG_IOCTL_NO_CHECK(fd,
+ LTTNG_KERNEL_EVENT_NOTIFIER_GROUP_CREATE);
+}
+
+int kernctl_create_event_notifier_group_notification_fd(int group_fd)
+{
+ return LTTNG_IOCTL_NO_CHECK(group_fd,
+ LTTNG_KERNEL_EVENT_NOTIFIER_GROUP_NOTIFICATION_FD);
+}
+
+int kernctl_create_event_notifier(int group_fd,
+ const struct lttng_kernel_event_notifier *event_notifier)
+{
+ return LTTNG_IOCTL_NO_CHECK(group_fd,
+ LTTNG_KERNEL_EVENT_NOTIFIER_CREATE, event_notifier);
+}
+
int kernctl_filter(int fd, struct lttng_filter_bytecode *filter)
{
struct lttng_kernel_filter_bytecode *kb;
int kernctl_start_session(int fd);
int kernctl_stop_session(int fd);
-/* Apply on event FD */
+int kernctl_create_event_notifier_group(int fd);
+
+/* Apply on event notifier_group file descriptor. */
+int kernctl_create_event_notifier_group_notification_fd(int fd);
+int kernctl_create_event_notifier(int fd,
+ const struct lttng_kernel_event_notifier *event_notifier);
+
+/* Apply on event file descriptor. */
int kernctl_filter(int fd, struct lttng_filter_bytecode *filter);
int kernctl_add_callsite(int fd, struct lttng_kernel_event_callsite *callsite);
int kernctl_wait_quiescent(int fd);
/*
- * kernctl_syscall_mask - Get syscall mask associated to a channel FD.
+ * kernctl_syscall_mask - Get syscall mask associated to a channel file
+ * descriptor.
*
* The parameter @syscall_mask should initially be either NULL or point
* to memory allocated with malloc(3) or realloc(3). When the function
int kernctl_syscall_mask(int fd, char **syscall_mask,
uint32_t *nr_bits);
-/* Process ID tracking can be applied to session FD */
+/* Process ID tracking can be applied to session file descriptor. */
int kernctl_track_pid(int fd, int pid);
int kernctl_untrack_pid(int fd, int pid);
int kernctl_list_tracker_pids(int fd);
#define LTTNG_KERNEL_SYSCALL_LIST _IO(0xF6, 0x4A)
#define LTTNG_KERNEL_TRACER_ABI_VERSION \
_IOR(0xF6, 0x4B, struct lttng_kernel_tracer_abi_version)
+#define LTTNG_KERNEL_EVENT_NOTIFIER_GROUP_CREATE \
+ _IO(0xF6, 0x4C)
/* Session FD ioctl */
#define LTTNG_KERNEL_METADATA \
#define LTTNG_KERNEL_CONTEXT \
_IOW(0xF6, 0x71, struct lttng_kernel_context)
-/* Event, Channel and Session ioctl */
+/* Event, event notifier, Channel and Session ioctl */
#define LTTNG_KERNEL_ENABLE _IO(0xF6, 0x82)
#define LTTNG_KERNEL_DISABLE _IO(0xF6, 0x83)
-/* Event FD ioctl */
+/* Event and event notifier FD ioctl */
#define LTTNG_KERNEL_FILTER _IO(0xF6, 0x90)
#define LTTNG_KERNEL_ADD_CALLSITE _IO(0xF6, 0x91)
#define LTTNG_KERNEL_SESSION_UNTRACK_ID \
_IOR(0xF6, 0xA2, struct lttng_kernel_tracker_args)
+/* Event notifier group file descriptor ioctl */
+#define LTTNG_KERNEL_EVENT_NOTIFIER_CREATE \
+ _IOW(0xF6, 0xB0, struct lttng_kernel_event_notifier)
+#define LTTNG_KERNEL_EVENT_NOTIFIER_GROUP_NOTIFICATION_FD \
+ _IO(0xF6, 0xB1)
+
#endif /* _LTT_KERNEL_IOCTL_H */
} u;
} LTTNG_PACKED;
+#define LTTNG_KERNEL_EVENT_NOTIFIER_PADDING 40
+struct lttng_kernel_event_notifier {
+ struct lttng_kernel_event event;
+ char padding[LTTNG_KERNEL_EVENT_NOTIFIER_PADDING];
+} LTTNG_PACKED;
+
+#define LTTNG_KERNEL_EVENT_NOTIFIER_NOTIFICATION_PADDING 34
+struct lttng_kernel_event_notifier_notification {
+ uint64_t token;
+ char padding[LTTNG_KERNEL_EVENT_NOTIFIER_NOTIFICATION_PADDING];
+} LTTNG_PACKED;
+
struct lttng_kernel_tracer_version {
uint32_t major;
uint32_t minor;