FD.io VPP
v19.08.3-2-gbabecb413
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | segment_manager_main_init_args_ |
Macros | |
#define | SEGMENT_MANAGER_INVALID_APP_INDEX ((u32) ~0) |
Typedefs | |
typedef struct _segment_manager_props | segment_manager_props_t |
typedef struct _segment_manager | segment_manager_t |
typedef struct segment_manager_main_init_args_ | segment_manager_main_init_args_t |
#define SEGMENT_MANAGER_INVALID_APP_INDEX ((u32) ~0) |
Definition at line 68 of file segment_manager.h.
typedef struct segment_manager_main_init_args_ segment_manager_main_init_args_t |
typedef struct _segment_manager_props segment_manager_props_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 85 of file segment_manager.c.
segment_manager_t* segment_manager_alloc | ( | void | ) |
Definition at line 293 of file segment_manager.c.
svm_msg_q_t* segment_manager_alloc_queue | ( | fifo_segment_t * | segment, |
segment_manager_props_t * | props | ||
) |
Allocates shm queue in the first segment.
Must be called with lock held
Definition at line 749 of file segment_manager.c.
int segment_manager_alloc_session_fifos | ( | segment_manager_t * | sm, |
svm_fifo_t ** | rx_fifo, | ||
svm_fifo_t ** | tx_fifo | ||
) |
Definition at line 551 of file segment_manager.c.
void segment_manager_app_detach | ( | segment_manager_t * | sm | ) |
int segment_manager_collect_fifo_chunks | ( | segment_manager_t * | sm, |
svm_fifo_t * | f | ||
) |
Collect fifo chunks that are no longer used.
This should not be called unless SVM_FIFO_F_COLLECT_CHUNKS is set for the fifo. The chunks are returned to the fifo segment freelist.
sm | segment manager that owns the fifo |
f | fifo whose chunks are to be collected |
Definition at line 696 of file segment_manager.c.
void segment_manager_dealloc_fifos | ( | svm_fifo_t * | rx_fifo, |
svm_fifo_t * | tx_fifo | ||
) |
Definition at line 638 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 793 of file segment_manager.c.
void segment_manager_del_segment | ( | segment_manager_t * | sm, |
fifo_segment_t * | fs | ||
) |
Remove segment without lock.
Definition at line 173 of file segment_manager.c.
void segment_manager_del_sessions | ( | segment_manager_t * | sm | ) |
Cleanup segment manager sessions.
Initiates disconnects for all sessions 'owned' by a segment manager by leveraging the backpointers that fifos keep.
sm | segment manager whose sessions are to be disconnected |
Cleanup segment manager sessions.
Definition at line 471 of file segment_manager.c.
svm_msg_q_t* segment_manager_event_queue | ( | segment_manager_t * | sm | ) |
void segment_manager_format_sessions | ( | segment_manager_t * | sm, |
int | verbose | ||
) |
Definition at line 889 of file segment_manager.c.
void segment_manager_free | ( | segment_manager_t * | sm | ) |
Cleanup segment manager.
sm | segment manager to be freed |
Definition at line 380 of file segment_manager.c.
segment_manager_t* segment_manager_get | ( | u32 | index | ) |
segment_manager_t* segment_manager_get_if_valid | ( | u32 | index | ) |
fifo_segment_t* segment_manager_get_segment | ( | segment_manager_t * | sm, |
u32 | segment_index | ||
) |
Reads a segment from the segment manager's pool without lock.
Definition at line 224 of file segment_manager.c.
fifo_segment_t* segment_manager_get_segment_w_handle | ( | u64 | sh | ) |
Definition at line 253 of file segment_manager.c.
fifo_segment_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 274 of file segment_manager.c.
int segment_manager_grow_fifo | ( | segment_manager_t * | sm, |
svm_fifo_t * | f, | ||
u32 | size | ||
) |
Grows fifo owned by segment manager.
sm | segment manager that owns the fifo |
f | fifo to be grown |
size | amount of bytes to add to fifo |
Definition at line 683 of file segment_manager.c.
u8 segment_manager_has_fifos | ( | segment_manager_t * | sm | ) |
Definition at line 442 of file segment_manager.c.
u32 segment_manager_index | ( | segment_manager_t * | sm | ) |
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 308 of file segment_manager.c.
void segment_manager_init_free | ( | segment_manager_t * | sm | ) |
Initiate segment manager cleanup.
sm | segment manager to be freed |
Definition at line 409 of file segment_manager.c.
void segment_manager_main_init | ( | segment_manager_main_init_args_t * | a | ) |
Definition at line 814 of file segment_manager.c.
segment_manager_props_t* segment_manager_props_init | ( | segment_manager_props_t * | sm | ) |
u64 segment_manager_segment_handle | ( | segment_manager_t * | sm, |
fifo_segment_t * | segment | ||
) |
Definition at line 230 of file segment_manager.c.
void segment_manager_segment_reader_unlock | ( | segment_manager_t * | sm | ) |
Definition at line 281 of file segment_manager.c.
void segment_manager_segment_writer_unlock | ( | segment_manager_t * | sm | ) |
int segment_manager_shrink_fifo | ( | segment_manager_t * | sm, |
svm_fifo_t * | f, | ||
u32 | size, | ||
u8 | is_producer | ||
) |
Request to shrink fifo owned by segment manager.
If this is not called by the producer, no attempt is made to reduce the size until the producer tries to enqueue more data. To collect the chunks that are to be removed call segment_manager_collect_fifo_chunks
Size reduction does not affect fifo chunk boundaries. Therefore chunks are not split and the amount of bytes to be removed can be equal to or less than what was requested.
sm | segment manager that owns the fifo |
f | fifo to be shrunk |
size | amount of bytes to remove from fifo |
is_producer | flag that indicates is caller is the producer for the fifo. |
Definition at line 709 of file segment_manager.c.
int segment_manager_try_alloc_fifos | ( | fifo_segment_t * | fs, |
u32 | rx_fifo_size, | ||
u32 | tx_fifo_size, | ||
svm_fifo_t ** | rx_fifo, | ||
svm_fifo_t ** | tx_fifo | ||
) |
Definition at line 515 of file segment_manager.c.