X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=include%2Fringbuffer%2Ffrontend_types.h;h=07d23be260147ae8c56a233f599b30cc0c996c7b;hb=a2a1b5ab74c22450126b5f80fb30db596945f875;hp=d5c4916b79b5113f7fdfb6c48733f8d16a040061;hpb=a071f25d89c4ef76ffe7bdfcaeb783bc9cfc1211;p=lttng-modules.git diff --git a/include/ringbuffer/frontend_types.h b/include/ringbuffer/frontend_types.h index d5c4916b..07d23be2 100644 --- a/include/ringbuffer/frontend_types.h +++ b/include/ringbuffer/frontend_types.h @@ -13,10 +13,11 @@ #define _LIB_RING_BUFFER_FRONTEND_TYPES_H #include +#include #include #include #include /* For per-CPU read-side iterator */ -#include +#include /* * A switch is done during tracing or as a final flush after tracing (so it @@ -27,7 +28,7 @@ enum switch_mode { SWITCH_ACTIVE, SWITCH_FLUSH }; /* channel-level read-side iterator */ struct channel_iter { /* Prio heap of buffers. Lowest timestamps at the top. */ - struct lttng_ptr_heap heap; /* Heap of struct lib_ring_buffer ptrs */ + struct lttng_ptr_heap heap; /* Heap of struct lttng_kernel_ring_buffer ptrs */ struct list_head empty_head; /* Empty buffers linked-list head */ int read_open; /* Opened for reading ? */ u64 last_qs; /* Last quiescent state timestamp */ @@ -40,7 +41,7 @@ struct channel_iter { }; /* channel: collection of per-cpu ring buffers. */ -struct channel { +struct lttng_kernel_ring_buffer_channel { atomic_t record_disabled; unsigned long commit_count_mask; /* * Commit count mask, removing @@ -53,7 +54,7 @@ struct channel { unsigned long switch_timer_interval; /* Buffer flush (jiffies) */ unsigned long read_timer_interval; /* Reader wakeup (jiffies) */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) +#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,10,0)) struct lttng_cpuhp_node cpuhp_prepare; struct lttng_cpuhp_node cpuhp_online; struct lttng_cpuhp_node cpuhp_iter_online; @@ -66,6 +67,7 @@ struct channel { struct notifier_block tick_nohz_notifier; /* CPU nohz notifier */ wait_queue_head_t read_wait; /* reader wait queue */ wait_queue_head_t hp_wait; /* CPU hotplug wait queue */ + struct irq_work wakeup_pending; /* Pending wakeup irq work */ int finalized; /* Has channel been finalized */ struct channel_iter iter; /* Channel read-side iterator */ struct kref ref; /* Reference count */ @@ -83,7 +85,7 @@ struct commit_counters_cold { }; /* Per-buffer read iterator */ -struct lib_ring_buffer_iter { +struct lttng_kernel_ring_buffer_iter { u64 timestamp; /* Current record timestamp */ size_t header_len; /* Current record header length */ size_t payload_len; /* Current record payload length */ @@ -101,7 +103,7 @@ struct lib_ring_buffer_iter { }; /* ring buffer state */ -struct lib_ring_buffer { +struct lttng_kernel_ring_buffer { /* First 32 bytes cache-hot cacheline */ union v_atomic offset; /* Current offset in the buffer */ struct commit_counters_hot *commit_hot; @@ -116,7 +118,7 @@ struct lib_ring_buffer { * Last timestamp written in the buffer. */ - struct lib_ring_buffer_backend backend; /* Associated backend */ + struct lttng_kernel_ring_buffer_backend backend; /* Associated backend */ struct commit_counters_cold *commit_cold; /* Commit count per sub-buffer */ @@ -146,11 +148,12 @@ struct lib_ring_buffer { union v_atomic records_overrun; /* Number of overwritten records */ wait_queue_head_t read_wait; /* reader buffer-level wait queue */ wait_queue_head_t write_wait; /* writer buffer-level wait queue (for metadata only) */ + struct irq_work wakeup_pending; /* Pending wakeup irq work */ int finalized; /* buffer has been finalized */ struct timer_list switch_timer; /* timer for periodical switch */ struct timer_list read_timer; /* timer for read poll */ raw_spinlock_t raw_tick_nohz_spinlock; /* nohz entry lock/trylock */ - struct lib_ring_buffer_iter iter; /* read-side iterator */ + struct lttng_kernel_ring_buffer_iter iter; /* read-side iterator */ unsigned long get_subbuf_consumed; /* Read-side consumed */ unsigned long prod_snapshot; /* Producer count snapshot */ unsigned long cons_snapshot; /* Consumer count snapshot */ @@ -161,28 +164,28 @@ struct lib_ring_buffer { }; static inline -void *channel_get_private(struct channel *chan) +void *channel_get_private(struct lttng_kernel_ring_buffer_channel *chan) { return chan->backend.priv; } -void lib_ring_buffer_lost_event_too_big(struct channel *chan); +void lib_ring_buffer_lost_event_too_big(struct lttng_kernel_ring_buffer_channel *chan); /* * Issue warnings and disable channels upon internal error. - * Can receive struct lib_ring_buffer or struct lib_ring_buffer_backend + * Can receive struct lttng_kernel_ring_buffer or struct lttng_kernel_ring_buffer_backend * parameters. */ #define CHAN_WARN_ON(c, cond) \ ({ \ - struct channel *__chan; \ + struct lttng_kernel_ring_buffer_channel *__chan; \ int _____ret = unlikely(cond); \ if (_____ret) { \ if (__same_type(*(c), struct channel_backend)) \ __chan = container_of((void *) (c), \ - struct channel, \ + struct lttng_kernel_ring_buffer_channel, \ backend); \ - else if (__same_type(*(c), struct channel)) \ + else if (__same_type(*(c), struct lttng_kernel_ring_buffer_channel)) \ __chan = (void *) (c); \ else \ BUG_ON(1); \