16 #ifndef SRC_SVM_FIFO_TYPES_H_ 17 #define SRC_SVM_FIFO_TYPES_H_ 24 #define SVM_FIFO_TRACE (0) 25 #define SVM_FIFO_MAX_EVT_SUBSCRIBERS 7 54 typedef struct _svm_fifo
66 volatile u32 has_event;
67 u32 master_session_index;
68 u32 client_session_index;
69 u8 master_thread_index;
70 u8 client_thread_index;
74 struct _svm_fifo *
next;
75 struct _svm_fifo *prev;
82 volatile u32 want_deq_ntf;
83 volatile u32 has_deq_ntf;
93 volatile u8 n_subscribers;
u32 length
length of chunk in bytes
static vlib_cli_command_t trace
(constructor) VLIB_CLI_COMMAND (trace)
#define CLIB_CACHE_LINE_ALIGN_MARK(mark)
u32 prev
Previous linked-list element pool index.
struct fifo_segment_slice_ fifo_segment_slice_t
uword virtual_mem
Slice sum of all fifo sizes.
uword n_fl_chunk_bytes
Chunk bytes on freelist.
struct svm_fifo_chunk_ * next
pointer to next chunk in linked-lists
svm_fifo_t * free_fifos
Freelists by fifo size.
#define SVM_FIFO_MAX_EVT_SUBSCRIBERS
clib_spinlock_t chunk_lock
u32 * num_chunks
Allocated chunks by chunk size.
svm_fifo_t * fifos
Linked list of active RX fifos.
u32 start_byte
chunk start byte
void fsh_virtual_mem_update(fifo_segment_header_t *fsh, u32 slice_index, int n_bytes)
rb_node_index_t deq_rb_index
deq node index if chunk in rbtree
u8 data[0]
start of chunk data
u32 length
Length of segment.
u32 next
Next linked-list element pool index.
rb_node_index_t enq_rb_index
enq node index if chunk in rbtree
struct _svm_fifo svm_fifo_t
u32 start
Start of segment, normalized.
svm_fifo_chunk_t ** free_chunks
Freelists by chunk size.
struct svm_fifo_chunk_ svm_fifo_chunk_t