+struct lttng_kernel_syscall_table {
+ unsigned int sys_enter_registered:1,
+ sys_exit_registered:1;
+
+ struct hlist_head *syscall_dispatch; /* for syscall tracing */
+ struct hlist_head *compat_syscall_dispatch;
+ struct hlist_head *syscall_exit_dispatch; /* for syscall exit tracing */
+ struct hlist_head *compat_syscall_exit_dispatch;
+
+ /*
+ * Combining all unknown syscall events works as long as they
+ * are only matched by "all" syscalls enablers, but will require
+ * a design change when we allow matching by syscall number, for
+ * instance by allocating sc_tables accomodating NR_syscalls
+ * entries.
+ */
+ struct hlist_head unknown_syscall_dispatch; /* for unknown syscalls */
+ struct hlist_head compat_unknown_syscall_dispatch;
+ struct hlist_head unknown_syscall_exit_dispatch;
+ struct hlist_head compat_unknown_syscall_exit_dispatch;
+
+ struct lttng_syscall_filter *sc_filter;
+ int syscall_all_entry;
+ int syscall_all_exit;
+};
+
+struct lttng_kernel_channel_common_private {
+ struct lttng_kernel_channel_common *pub;
+
+ struct file *file; /* File associated to channel */
+ unsigned int tstate:1; /* Transient enable state */
+
+ struct lttng_kernel_syscall_table syscall_table;
+};
+
+struct lttng_kernel_channel_buffer_private {
+ struct lttng_kernel_channel_common_private parent;
+
+ struct lttng_kernel_channel_buffer *pub;
+
+ unsigned int id; /* Channel ID */
+ unsigned int free_event_id; /* Next event ID to allocate */
+ int header_type; /* 0: unset, 1: compact, 2: large */
+
+ enum channel_type channel_type;
+ struct lttng_kernel_ctx *ctx;
+ struct lttng_kernel_ring_buffer_channel *rb_chan; /* Ring buffer channel */
+ unsigned int metadata_dumped:1;
+ struct list_head node; /* Channel list in session */
+ struct lttng_transport *transport;
+};
+