FD.io VPP
v21.06-3-gbb25fbf28
Vector Packet Processing
|
Go to the source code of this file.
Data Structures | |
struct | fifo_segment_t |
struct | fifo_segment_main_t |
struct | fifo_segment_create_args_t |
Macros | |
#define | FIFO_SEGMENT_MIN_LOG2_FIFO_SIZE 12 |
4kB min fifo size More... | |
#define | FIFO_SEGMENT_MIN_FIFO_SIZE 4096 |
4kB min fifo size More... | |
#define | FIFO_SEGMENT_MAX_FIFO_SIZE (2ULL << 30) |
2GB max fifo size More... | |
#define | FIFO_SEGMENT_ALLOC_BATCH_SIZE 32 /* Allocation quantum */ |
#define | foreach_segment_mem_status |
#define | fifo_segment_flags(_fs) _fs->h->flags |
Typedefs | |
typedef enum fifo_segment_flags_ | fifo_segment_flags_t |
Enumerations | |
enum | fifo_segment_ftype_t { FIFO_SEGMENT_FTYPE_NONE = -1, FIFO_SEGMENT_RX_FIFO = 0, FIFO_SEGMENT_TX_FIFO, FIFO_SEGMENT_N_FTYPES } |
enum | fifo_segment_flags_ { FIFO_SEGMENT_F_IS_PREALLOCATED = 1 << 0, FIFO_SEGMENT_F_WILL_DELETE = 1 << 1, FIFO_SEGMENT_F_MEM_LIMIT = 1 << 2 } |
enum | fifo_segment_mem_status_t { MEMORY_N_PRESSURE } |
Variables | |
format_function_t | format_fifo_segment |
format_function_t | format_fifo_segment_type |
#define FIFO_SEGMENT_ALLOC_BATCH_SIZE 32 /* Allocation quantum */ |
Definition at line 34 of file fifo_segment.h.
Definition at line 93 of file fifo_segment.h.
#define FIFO_SEGMENT_MAX_FIFO_SIZE (2ULL << 30) |
2GB max fifo size
Definition at line 33 of file fifo_segment.h.
#define FIFO_SEGMENT_MIN_FIFO_SIZE 4096 |
4kB min fifo size
Definition at line 32 of file fifo_segment.h.
#define FIFO_SEGMENT_MIN_LOG2_FIFO_SIZE 12 |
4kB min fifo size
Definition at line 31 of file fifo_segment.h.
#define foreach_segment_mem_status |
Definition at line 43 of file fifo_segment.h.
typedef enum fifo_segment_flags_ fifo_segment_flags_t |
enum fifo_segment_flags_ |
Enumerator | |
---|---|
FIFO_SEGMENT_F_IS_PREALLOCATED | |
FIFO_SEGMENT_F_WILL_DELETE | |
FIFO_SEGMENT_F_MEM_LIMIT |
Definition at line 36 of file fifo_segment.h.
enum fifo_segment_ftype_t |
Enumerator | |
---|---|
FIFO_SEGMENT_FTYPE_NONE | |
FIFO_SEGMENT_RX_FIFO | |
FIFO_SEGMENT_TX_FIFO | |
FIFO_SEGMENT_N_FTYPES |
Definition at line 23 of file fifo_segment.h.
Enumerator | |
---|---|
MEMORY_N_PRESSURE |
Definition at line 49 of file fifo_segment.h.
void* fifo_segment_alloc | ( | fifo_segment_t * | fs, |
uword | size | ||
) |
Fifo segment reset mem limit flag.
fs | fifo segment |
size | size requested |
Definition at line 1392 of file fifo_segment.c.
svm_fifo_chunk_t* fifo_segment_alloc_chunk_w_slice | ( | fifo_segment_t * | fs, |
u32 | slice_index, | ||
u32 | chunk_size | ||
) |
Definition at line 1054 of file fifo_segment.c.
svm_fifo_t* fifo_segment_alloc_fifo_w_offset | ( | fifo_segment_t * | fs, |
uword | offset | ||
) |
Definition at line 891 of file fifo_segment.c.
svm_fifo_t* fifo_segment_alloc_fifo_w_slice | ( | fifo_segment_t * | fs, |
u32 | slice_index, | ||
u32 | data_bytes, | ||
fifo_segment_ftype_t | ftype | ||
) |
Allocate fifo in fifo segment.
fs | fifo segment for fifo |
data_bytes | size of default fifo chunk in bytes |
ftype | fifo type fifo_segment_ftype_t |
Definition at line 846 of file fifo_segment.c.
int fifo_segment_attach | ( | fifo_segment_main_t * | sm, |
fifo_segment_create_args_t * | a | ||
) |
Attach as slave to a fifo segment.
Definition at line 381 of file fifo_segment.c.
void fifo_segment_attach_fifo | ( | fifo_segment_t * | fs, |
svm_fifo_t ** | f, | ||
u32 | slice_index | ||
) |
Definition at line 1011 of file fifo_segment.c.
uword fifo_segment_available_bytes | ( | fifo_segment_t * | fs | ) |
Definition at line 1414 of file fifo_segment.c.
uword fifo_segment_cached_bytes | ( | fifo_segment_t * | fs | ) |
Fifo segment number of cached bytes.
Returns fifo segment's number of cached bytes.
fs | fifo segment |
Definition at line 1408 of file fifo_segment.c.
uword fifo_segment_chunk_offset | ( | fifo_segment_t * | fs, |
svm_fifo_chunk_t * | c | ||
) |
void fifo_segment_cleanup | ( | fifo_segment_t * | fs | ) |
Definition at line 826 of file fifo_segment.c.
void fifo_segment_collect_chunk | ( | fifo_segment_t * | fs, |
u32 | slice_index, | ||
svm_fifo_chunk_t * | c | ||
) |
Definition at line 1065 of file fifo_segment.c.
int fifo_segment_create | ( | fifo_segment_main_t * | sm, |
fifo_segment_create_args_t * | a | ||
) |
Create a fifo segment and initialize as master.
Definition at line 347 of file fifo_segment.c.
void fifo_segment_delete | ( | fifo_segment_main_t * | sm, |
fifo_segment_t * | fs | ||
) |
Definition at line 420 of file fifo_segment.c.
void fifo_segment_detach_fifo | ( | fifo_segment_t * | fs, |
svm_fifo_t ** | f | ||
) |
Definition at line 984 of file fifo_segment.c.
fifo_segment_mem_status_t fifo_segment_determine_status | ( | fifo_segment_header_t * | fsh, |
u8 | usage | ||
) |
Definition at line 1463 of file fifo_segment.c.
svm_fifo_t* fifo_segment_duplicate_fifo | ( | fifo_segment_t * | fs, |
svm_fifo_t * | f | ||
) |
uword fifo_segment_fifo_offset | ( | svm_fifo_t * | f | ) |
uword fifo_segment_fl_chunk_bytes | ( | fifo_segment_t * | fs | ) |
Number of bytes on chunk free lists.
fs | fifo segment |
Definition at line 1420 of file fifo_segment.c.
uword fifo_segment_free_bytes | ( | fifo_segment_t * | fs | ) |
Fifo segment estimate of number of free bytes.
Returns fifo segment's internal estimate of the number of free bytes. To force a synchronization between the segment and the underlying memory allocator, call fifo_segment_update_free_bytes
fs | fifo segment |
Definition at line 1402 of file fifo_segment.c.
void fifo_segment_free_client_fifo | ( | fifo_segment_t * | fs, |
svm_fifo_t * | f | ||
) |
Free fifo allocated by external applications.
@params fs fifo segment for fifo
f | fifo to be freed |
Definition at line 978 of file fifo_segment.c.
void fifo_segment_free_fifo | ( | fifo_segment_t * | fs, |
svm_fifo_t * | f | ||
) |
Free fifo allocated in fifo segment.
fs | fifo segment for fifo |
f | fifo to be freed |
Definition at line 918 of file fifo_segment.c.
fifo_segment_mem_status_t fifo_segment_get_mem_status | ( | fifo_segment_t * | fs | ) |
Definition at line 1489 of file fifo_segment.c.
u8 fifo_segment_get_mem_usage | ( | fifo_segment_t * | fs | ) |
Definition at line 1452 of file fifo_segment.c.
fifo_segment_t* fifo_segment_get_segment | ( | fifo_segment_main_t * | sm, |
u32 | fs_index | ||
) |
fifo_segment_t* fifo_segment_get_segment_if_valid | ( | fifo_segment_main_t * | sm, |
u32 | segment_index | ||
) |
svm_fifo_t* fifo_segment_get_slice_fifo_list | ( | fifo_segment_t * | fs, |
u32 | slice_index | ||
) |
Definition at line 1443 of file fifo_segment.c.
u8 fifo_segment_has_fifos | ( | fifo_segment_t * | fs | ) |
Definition at line 1437 of file fifo_segment.c.
u32 fifo_segment_index | ( | fifo_segment_main_t * | sm, |
fifo_segment_t * | fs | ||
) |
Definition at line 429 of file fifo_segment.c.
void fifo_segment_info | ( | fifo_segment_t * | seg, |
char ** | address, | ||
size_t * | size | ||
) |
int fifo_segment_init | ( | fifo_segment_t * | fs | ) |
Initialize fifo segment shared header.
Definition at line 295 of file fifo_segment.c.
void fifo_segment_main_init | ( | fifo_segment_main_t * | sm, |
u64 | baseva, | ||
u32 | timeout_in_seconds | ||
) |
svm_msg_q_t* fifo_segment_msg_q_alloc | ( | fifo_segment_t * | fs, |
u32 | mq_index, | ||
svm_msg_q_cfg_t * | cfg | ||
) |
Allocate message queue on segment.
fs | fifo segment for mq |
mq_index | index in private mqs vector to use to attach |
cfg | configuration for mq |
Definition at line 1078 of file fifo_segment.c.
svm_msg_q_t* fifo_segment_msg_q_attach | ( | fifo_segment_t * | fs, |
uword | offset, | ||
u32 | mq_index | ||
) |
Attach message queue at fifo segment offset.
fs | fifo segment for mq |
offset | offset for shared mq on the segment |
mq_index | index in private mqs vector to use to attach |
Definition at line 1105 of file fifo_segment.c.
uword fifo_segment_msg_q_offset | ( | fifo_segment_t * | fs, |
u32 | mq_index | ||
) |
Message queue offset on segment.
fs | fifo segment for mq |
mq_index | index of mq in private mqs vector |
Definition at line 1162 of file fifo_segment.c.
void fifo_segment_msg_qs_discover | ( | fifo_segment_t * | fs, |
int * | fds, | ||
u32 | n_fds | ||
) |
Discover mqs on mq only segment.
fs | fifo segment for mq |
fds | array of fds is mqs use eventfds |
n_fds | number of fds |
Definition at line 1130 of file fifo_segment.c.
u32 fifo_segment_num_fifos | ( | fifo_segment_t * | fs | ) |
Get number of active fifos.
Definition at line 1274 of file fifo_segment.c.
u32 fifo_segment_num_free_chunks | ( | fifo_segment_t * | fs, |
u32 | size | ||
) |
Find number of free chunks of given size.
fs | fifo segment |
size | chunk size of interest or ~0 if all should be counted |
Definition at line 1358 of file fifo_segment.c.
u32 fifo_segment_num_free_fifos | ( | fifo_segment_t * | fs | ) |
Definition at line 1298 of file fifo_segment.c.
|
inlinestatic |
Definition at line 116 of file fifo_segment.h.
int fifo_segment_prealloc_fifo_chunks | ( | fifo_segment_t * | fs, |
u32 | slice_index, | ||
u32 | chunk_size, | ||
u32 | batch_size | ||
) |
Try to preallocate fifo chunks on segment.
Tries to preallocate chunks of requested size on segment and adds them to chunk freelist.
fs | fifo segment |
chunk_size | size of chunks to be allocated in bytes |
batch_size | number of chunks to be allocated |
Definition at line 1185 of file fifo_segment.c.
int fifo_segment_prealloc_fifo_hdrs | ( | fifo_segment_t * | fs, |
u32 | slice_index, | ||
u32 | batch_size | ||
) |
Try to preallocate fifo headers.
Tries to preallocate fifo headers and adds them to freelist.
fs | fifo segment |
batch_size | number of chunks to be allocated |
Definition at line 1174 of file fifo_segment.c.
void fifo_segment_preallocate_fifo_pairs | ( | fifo_segment_t * | fs, |
u32 | rx_fifo_size, | ||
u32 | tx_fifo_size, | ||
u32 * | n_fifo_pairs | ||
) |
Pre-allocates fifo pairs in fifo segment.
The number of fifos pre-allocated is the minimum of the requested number of pairs and the maximum number that fit within the segment. If the maximum is hit, the number of fifo pairs requested is updated by subtracting the number of fifos that have been successfully allocated.
fs | fifo segment for fifo |
rx_fifo_size | data size of rx fifos |
tx_fifo_size | data size of tx fifos |
n_fifo_pairs | number of pairs requested. Prior to returning, this is decremented by the the number of pairs allocated. |
Definition at line 1208 of file fifo_segment.c.
|
inlinestatic |
Definition at line 110 of file fifo_segment.h.
uword fifo_segment_size | ( | fifo_segment_t * | fs | ) |
Fifo segment allocated size.
Returns fifo segment's allocated size
fs | fifo segment |
Definition at line 1374 of file fifo_segment.c.
svm_fifo_chunk_t* fsh_alloc_chunk | ( | fifo_segment_header_t * | fsh, |
u32 | slice_index, | ||
u32 | chunk_size | ||
) |
Allocate chunks in fifo segment.
fsh | fifo segment header |
slice_index | slice where chunks should be alocated |
chunk_size | chunk size needed |
Definition at line 761 of file fifo_segment.c.
void fsh_collect_chunks | ( | fifo_segment_header_t * | fsh, |
u32 | slice_index, | ||
svm_fifo_chunk_t * | c | ||
) |
Return chunks to fifo segment.
fsh | fifo segment header |
slice_index | slice where chunks should be returned |
c | pointer to first chunk in 0 terminated linked list |
Definition at line 794 of file fifo_segment.c.
u8 fsh_has_reached_mem_limit | ( | fifo_segment_header_t * | fsh | ) |
Fifo segment has reached mem limit.
fsh | fifo segment header |
Definition at line 1380 of file fifo_segment.c.
void fsh_reset_mem_limit | ( | fifo_segment_header_t * | fsh | ) |
Fifo segment reset mem limit flag.
fs | fifo segment |
Definition at line 1386 of file fifo_segment.c.
format_function_t format_fifo_segment |
Definition at line 358 of file fifo_segment.h.
format_function_t format_fifo_segment_type |
Definition at line 359 of file fifo_segment.h.