FD.io VPP
v19.04.4-rc0-5-ge88582fac
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 195 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 673 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 515 of file segment_manager.c.
void segment_manager_app_detach | ( | segment_manager_t * | sm | ) |
void segment_manager_dealloc_fifos | ( | svm_fifo_t * | rx_fifo, |
svm_fifo_t * | tx_fifo | ||
) |
Definition at line 604 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 710 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 435 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 389 of file segment_manager.c.
|
inlinestatic |
Definition at line 651 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 126 of file segment_manager.c.
svm_fifo_segment_private_t* segment_manager_get_segment_w_handle | ( | u64 | ) |
Definition at line 148 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 169 of file segment_manager.c.
u8 segment_manager_has_fifos | ( | segment_manager_t * | sm | ) |
Definition at line 360 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 291 of file segment_manager.c.
void segment_manager_init_del | ( | segment_manager_t * | sm | ) |
Definition at line 464 of file segment_manager.c.
void segment_manager_main_init | ( | segment_manager_main_init_args_t * | a | ) |
Definition at line 731 of file segment_manager.c.
|
inlinestatic |
Definition at line 121 of file segment_manager.h.
segment_manager_t* segment_manager_new | ( | ) |
Definition at line 276 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 132 of file segment_manager.c.
void segment_manager_segment_reader_unlock | ( | segment_manager_t * | sm | ) |
Definition at line 176 of file segment_manager.c.
void segment_manager_segment_writer_unlock | ( | segment_manager_t * | sm | ) |
Definition at line 183 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 477 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.