FD.io VPP
v19.01.3-6-g70449b9b9
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | segment_manager_main_ |
struct | segment_manager_main_init_args_ |
Macros | |
#define | segment_manager_foreach_segment_w_lock(VAR, SM, BODY) |
#define | SEGMENT_MANAGER_INVALID_APP_INDEX ((u32) ~0) |
Typedefs | |
typedef struct _segment_manager_properties | segment_manager_properties_t |
typedef struct _segment_manager | segment_manager_t |
typedef struct segment_manager_main_ | segment_manager_main_t |
typedef struct segment_manager_main_init_args_ | segment_manager_main_init_args_t |
Variables | |
segment_manager_main_t | segment_manager_main |
segment_manager_t * | segment_managers |
Pool of segment managers. More... | |
#define segment_manager_foreach_segment_w_lock | ( | VAR, | |
SM, | |||
BODY | |||
) |
Definition at line 64 of file segment_manager.h.
#define SEGMENT_MANAGER_INVALID_APP_INDEX ((u32) ~0) |
Definition at line 89 of file segment_manager.h.
typedef struct segment_manager_main_init_args_ segment_manager_main_init_args_t |
typedef struct segment_manager_main_ segment_manager_main_t |
typedef struct _segment_manager_properties segment_manager_properties_t |
typedef struct _segment_manager segment_manager_t |
int segment_manager_add_first_segment | ( | segment_manager_t * | sm, |
u32 | segment_size | ||
) |
int segment_manager_add_segment | ( | segment_manager_t * | sm, |
u32 | segment_size | ||
) |
Adds segment to segment manager's pool.
If needed a writer's lock is acquired before allocating a new segment to avoid affecting any of the segments pool readers.
Definition at line 184 of file segment_manager.c.
svm_msg_q_t* segment_manager_alloc_queue | ( | svm_fifo_segment_private_t * | segment, |
segment_manager_properties_t * | props | ||
) |
Allocates shm queue in the first segment.
Must be called with lock held
Definition at line 661 of file segment_manager.c.
int segment_manager_alloc_session_fifos | ( | segment_manager_t * | sm, |
svm_fifo_t ** | server_rx_fifo, | ||
svm_fifo_t ** | server_tx_fifo, | ||
u32 * | fifo_segment_index | ||
) |
Definition at line 508 of file segment_manager.c.
void segment_manager_app_detach | ( | segment_manager_t * | sm | ) |
void segment_manager_dealloc_fifos | ( | u32 | segment_index, |
svm_fifo_t * | rx_fifo, | ||
svm_fifo_t * | tx_fifo | ||
) |
Definition at line 596 of file segment_manager.c.
void segment_manager_dealloc_queue | ( | segment_manager_t * | sm, |
svm_queue_t * | q | ||
) |
Frees shm queue allocated in the first segment.
Definition at line 698 of file segment_manager.c.
void segment_manager_del | ( | segment_manager_t * | sm | ) |
Removes segment manager.
Since the fifos allocated in the segment keep backpointers to the sessions prior to removing the segment, we call session disconnect. This subsequently propagates into transport.
Definition at line 428 of file segment_manager.c.
void segment_manager_del_segment | ( | segment_manager_t * | sm, |
svm_fifo_segment_private_t * | fs | ||
) |
Remove segment without lock.
Definition at line 74 of file segment_manager.c.
void segment_manager_del_sessions | ( | segment_manager_t * | sm | ) |
Initiate disconnects for all sessions 'owned' by a segment manager.
Definition at line 379 of file segment_manager.c.
|
inlinestatic |
Definition at line 639 of file segment_manager.c.
|
inlinestatic |
|
inlinestatic |
svm_fifo_segment_private_t* segment_manager_get_segment | ( | segment_manager_t * | , |
u32 | segment_index | ||
) |
Reads a segment from the segment manager's pool without lock.
Definition at line 115 of file segment_manager.c.
svm_fifo_segment_private_t* segment_manager_get_segment_w_handle | ( | u64 | ) |
Definition at line 137 of file segment_manager.c.
svm_fifo_segment_private_t* segment_manager_get_segment_w_lock | ( | segment_manager_t * | sm, |
u32 | segment_index | ||
) |
Reads a segment from the segment manager's pool and acquires reader lock.
Caller must drop the reader's lock by calling segment_manager_segment_reader_unlock once it finishes working with the segment.
Definition at line 158 of file segment_manager.c.
u8 segment_manager_has_fifos | ( | segment_manager_t * | sm | ) |
Definition at line 350 of file segment_manager.c.
|
inlinestatic |
int segment_manager_init | ( | segment_manager_t * | sm, |
u32 | first_seg_size, | ||
u32 | prealloc_fifo_pairs | ||
) |
Initializes segment manager based on options provided.
Returns error if ssvm segment(s) allocation fails.
Definition at line 281 of file segment_manager.c.
void segment_manager_init_del | ( | segment_manager_t * | sm | ) |
Definition at line 457 of file segment_manager.c.
void segment_manager_main_init | ( | segment_manager_main_init_args_t * | a | ) |
Definition at line 719 of file segment_manager.c.
|
inlinestatic |
Definition at line 121 of file segment_manager.h.
segment_manager_t* segment_manager_new | ( | ) |
Definition at line 266 of file segment_manager.c.
segment_manager_properties_t* segment_manager_properties_init | ( | segment_manager_properties_t * | sm | ) |
u64 segment_manager_segment_handle | ( | segment_manager_t * | sm, |
svm_fifo_segment_private_t * | segment | ||
) |
Definition at line 121 of file segment_manager.c.
void segment_manager_segment_reader_unlock | ( | segment_manager_t * | sm | ) |
Definition at line 165 of file segment_manager.c.
void segment_manager_segment_writer_unlock | ( | segment_manager_t * | sm | ) |
Definition at line 172 of file segment_manager.c.
int segment_manager_try_alloc_fifos | ( | svm_fifo_segment_private_t * | fs, |
u32 | rx_fifo_size, | ||
u32 | tx_fifo_size, | ||
svm_fifo_t ** | rx_fifo, | ||
svm_fifo_t ** | tx_fifo | ||
) |
Definition at line 470 of file segment_manager.c.
segment_manager_main_t segment_manager_main |
Definition at line 20 of file segment_manager.c.
segment_manager_t* segment_managers |
Pool of segment managers.