FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
Go to the source code of this file.
Macros | |
#define | SEGMENT_MANAGER_INVALID_APP_INDEX ((u32) ~0) |
Typedefs | |
typedef struct _segment_manager_props | segment_manager_props_t |
typedef enum seg_manager_flag_ | seg_manager_flag_t |
typedef struct _segment_manager | segment_manager_t |
Enumerations | |
enum | seg_manager_flag_ { SEG_MANAGER_F_DETACHED = 1 << 0, SEG_MANAGER_F_DETACHED_LISTENER = 1 << 1 } |
#define SEGMENT_MANAGER_INVALID_APP_INDEX ((u32) ~0) |
Definition at line 81 of file segment_manager.h.
typedef enum seg_manager_flag_ seg_manager_flag_t |
typedef struct _segment_manager_props segment_manager_props_t |
typedef struct _segment_manager segment_manager_t |
enum seg_manager_flag_ |
Enumerator | |
---|---|
SEG_MANAGER_F_DETACHED | |
SEG_MANAGER_F_DETACHED_LISTENER |
Definition at line 45 of file segment_manager.h.
int segment_manager_add_first_segment | ( | segment_manager_t * | sm, |
u32 | segment_size | ||
) |
int segment_manager_add_segment | ( | segment_manager_t * | sm, |
uword | segment_size, | ||
u8 | notify_app | ||
) |
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 91 of file segment_manager.c.
segment_manager_t* segment_manager_alloc | ( | void | ) |
Definition at line 321 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 899 of file segment_manager.c.
int segment_manager_alloc_session_fifos | ( | segment_manager_t * | sm, |
u32 | thread_index, | ||
svm_fifo_t ** | rx_fifo, | ||
svm_fifo_t ** | tx_fifo | ||
) |
Definition at line 722 of file segment_manager.c.
void segment_manager_app_detach | ( | segment_manager_t * | sm | ) |
u8 segment_manager_app_detached | ( | segment_manager_t * | sm | ) |
void segment_manager_attach_fifo | ( | segment_manager_t * | sm, |
svm_fifo_t ** | f, | ||
session_t * | s | ||
) |
Definition at line 863 of file segment_manager.c.
void segment_manager_dealloc_fifos | ( | svm_fifo_t * | rx_fifo, |
svm_fifo_t * | tx_fifo | ||
) |
Definition at line 810 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 939 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 188 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 581 of file segment_manager.c.
void segment_manager_del_sessions_filter | ( | segment_manager_t * | sm, |
session_state_t * | states | ||
) |
Initiate disconnects for sessions in specified state 'owned' by a segment manager.
Definition at line 634 of file segment_manager.c.
void segment_manager_detach_fifo | ( | segment_manager_t * | sm, |
svm_fifo_t ** | f | ||
) |
Definition at line 853 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 1047 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 456 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 254 of file segment_manager.c.
fifo_segment_t* segment_manager_get_segment_w_handle | ( | u64 | sh | ) |
Definition at line 275 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 296 of file segment_manager.c.
u8 segment_manager_has_fifos | ( | segment_manager_t * | sm | ) |
Definition at line 552 of file segment_manager.c.
u32 segment_manager_index | ( | segment_manager_t * | sm | ) |
int segment_manager_init | ( | segment_manager_t * | sm | ) |
Definition at line 332 of file segment_manager.c.
int segment_manager_init_first | ( | segment_manager_t * | sm | ) |
Initializes segment manager based on options provided.
Returns error if ssvm segment(s) allocation fails.
Definition at line 353 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 517 of file segment_manager.c.
void segment_manager_lock_and_del_segment | ( | segment_manager_t * | sm, |
u32 | fs_index | ||
) |
Definition at line 245 of file segment_manager.c.
void segment_manager_main_init | ( | void | ) |
Definition at line 268 of file segment_manager.c.
segment_manager_props_t* segment_manager_props_init | ( | segment_manager_props_t * | sm | ) |
Definition at line 53 of file segment_manager.c.
u64 segment_manager_segment_handle | ( | segment_manager_t * | sm, |
fifo_segment_t * | segment | ||
) |
Definition at line 260 of file segment_manager.c.
void segment_manager_segment_reader_unlock | ( | segment_manager_t * | sm | ) |
Definition at line 309 of file segment_manager.c.
void segment_manager_segment_writer_unlock | ( | segment_manager_t * | sm | ) |
void segment_manager_set_watermarks | ( | segment_manager_t * | sm, |
u8 | high_watermark, | ||
u8 | low_watermark | ||
) |
int segment_manager_try_alloc_fifos | ( | fifo_segment_t * | fs, |
u32 | thread_index, | ||
u32 | rx_fifo_size, | ||
u32 | tx_fifo_size, | ||
svm_fifo_t ** | rx_fifo, | ||
svm_fifo_t ** | tx_fifo | ||
) |
Definition at line 683 of file segment_manager.c.