FD.io VPP  v19.04.2-12-g66b1689
Vector Packet Processing
svm_fifo_segment.h File Reference
+ Include dependency graph for svm_fifo_segment.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  svm_fifo_segment_header_t
 
struct  svm_fifo_segment_private_t
 
struct  svm_fifo_segment_main_t
 
struct  svm_fifo_segment_create_args_t
 

Macros

#define FIFO_SEGMENT_MIN_FIFO_SIZE   4096
 
#define FIFO_SEGMENT_MAX_FIFO_SIZE   (2 << 30) /* 2GB max fifo size */
 
#define FIFO_SEGMENT_ALLOC_CHUNK_SIZE   32 /* Allocation quantum */
 
#define FIFO_SEGMENT_F_IS_PREALLOCATED   (1 << 0)
 
#define FIFO_SEGMENT_F_WILL_DELETE   (1 << 1)
 
#define svm_fifo_segment_flags(_seg)   _seg->h->flags
 

Enumerations

enum  svm_fifo_segment_freelist_t { FIFO_SEGMENT_FREELIST_NONE = -1, FIFO_SEGMENT_RX_FREELIST = 0, FIFO_SEGMENT_TX_FREELIST, FIFO_SEGMENT_N_FREELISTS }
 

Functions

static svm_fifo_segment_private_tsvm_fifo_segment_get_segment (svm_fifo_segment_main_t *sm, u32 segment_index)
 
static u8 svm_fifo_segment_has_fifos (svm_fifo_segment_private_t *fifo_segment)
 
static svm_fifo_tsvm_fifo_segment_get_fifo_list (svm_fifo_segment_private_t *fifo_segment)
 
int svm_fifo_segment_init (svm_fifo_segment_private_t *s)
 Initialize svm fifo segment shared header. More...
 
int svm_fifo_segment_create (svm_fifo_segment_main_t *sm, svm_fifo_segment_create_args_t *a)
 Create an svm fifo segment and initialize as master. More...
 
int svm_fifo_segment_create_process_private (svm_fifo_segment_main_t *sm, svm_fifo_segment_create_args_t *)
 Create an svm fifo segment in process-private memory. More...
 
void svm_fifo_segment_preallocate_fifo_pairs (svm_fifo_segment_private_t *s, u32 rx_fifo_size, u32 tx_fifo_size, u32 *n_fifo_pairs)
 Pre-allocates fifo pairs in fifo segment. More...
 
int svm_fifo_segment_attach (svm_fifo_segment_main_t *sm, svm_fifo_segment_create_args_t *a)
 Attach as slave to an svm fifo segment. More...
 
void svm_fifo_segment_delete (svm_fifo_segment_main_t *sm, svm_fifo_segment_private_t *s)
 
svm_fifo_tsvm_fifo_segment_alloc_fifo (svm_fifo_segment_private_t *s, u32 data_size_in_bytes, svm_fifo_segment_freelist_t index)
 Allocate fifo in svm segment. More...
 
void svm_fifo_segment_free_fifo (svm_fifo_segment_private_t *s, svm_fifo_t *f, svm_fifo_segment_freelist_t index)
 
void svm_fifo_segment_main_init (svm_fifo_segment_main_t *sm, u64 baseva, u32 timeout_in_seconds)
 
u32 svm_fifo_segment_index (svm_fifo_segment_main_t *sm, svm_fifo_segment_private_t *s)
 
u32 svm_fifo_segment_num_fifos (svm_fifo_segment_private_t *fifo_segment)
 Get number of active fifos. More...
 
u32 svm_fifo_segment_num_free_fifos (svm_fifo_segment_private_t *fifo_segment, u32 fifo_size_in_bytes)
 
void svm_fifo_segment_info (svm_fifo_segment_private_t *seg, char **address, size_t *size)
 
svm_fifo_segment_private_tsvm_fifo_segment_segments_pool (svm_fifo_segment_main_t *sm)
 Retrieve svm segments pool. More...
 

Variables

format_function_t format_svm_fifo_segment
 
format_function_t format_svm_fifo_segment_type
 

Macro Definition Documentation

#define FIFO_SEGMENT_ALLOC_CHUNK_SIZE   32 /* Allocation quantum */

Definition at line 32 of file svm_fifo_segment.h.

#define FIFO_SEGMENT_F_IS_PREALLOCATED   (1 << 0)

Definition at line 34 of file svm_fifo_segment.h.

#define FIFO_SEGMENT_F_WILL_DELETE   (1 << 1)

Definition at line 35 of file svm_fifo_segment.h.

#define FIFO_SEGMENT_MAX_FIFO_SIZE   (2 << 30) /* 2GB max fifo size */

Definition at line 31 of file svm_fifo_segment.h.

#define FIFO_SEGMENT_MIN_FIFO_SIZE   4096

Definition at line 30 of file svm_fifo_segment.h.

#define svm_fifo_segment_flags (   _seg)    _seg->h->flags

Definition at line 71 of file svm_fifo_segment.h.

Enumeration Type Documentation

Enumerator
FIFO_SEGMENT_FREELIST_NONE 
FIFO_SEGMENT_RX_FREELIST 
FIFO_SEGMENT_TX_FREELIST 
FIFO_SEGMENT_N_FREELISTS 

Definition at line 22 of file svm_fifo_segment.h.

Function Documentation

svm_fifo_t* svm_fifo_segment_alloc_fifo ( svm_fifo_segment_private_t s,
u32  data_size_in_bytes,
svm_fifo_segment_freelist_t  index 
)

Allocate fifo in svm segment.

Definition at line 337 of file svm_fifo_segment.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int svm_fifo_segment_attach ( svm_fifo_segment_main_t sm,
svm_fifo_segment_create_args_t a 
)

Attach as slave to an svm fifo segment.

Definition at line 292 of file svm_fifo_segment.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int svm_fifo_segment_create ( svm_fifo_segment_main_t sm,
svm_fifo_segment_create_args_t a 
)

Create an svm fifo segment and initialize as master.

Definition at line 204 of file svm_fifo_segment.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int svm_fifo_segment_create_process_private ( svm_fifo_segment_main_t sm,
svm_fifo_segment_create_args_t  
)

Create an svm fifo segment in process-private memory.

Definition at line 238 of file svm_fifo_segment.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void svm_fifo_segment_delete ( svm_fifo_segment_main_t sm,
svm_fifo_segment_private_t s 
)

Definition at line 325 of file svm_fifo_segment.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void svm_fifo_segment_free_fifo ( svm_fifo_segment_private_t s,
svm_fifo_t f,
svm_fifo_segment_freelist_t  index 
)

Definition at line 431 of file svm_fifo_segment.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static svm_fifo_t* svm_fifo_segment_get_fifo_list ( svm_fifo_segment_private_t fifo_segment)
inlinestatic

Definition at line 86 of file svm_fifo_segment.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static svm_fifo_segment_private_t* svm_fifo_segment_get_segment ( svm_fifo_segment_main_t sm,
u32  segment_index 
)
inlinestatic

Definition at line 74 of file svm_fifo_segment.h.

static u8 svm_fifo_segment_has_fifos ( svm_fifo_segment_private_t fifo_segment)
inlinestatic

Definition at line 80 of file svm_fifo_segment.h.

+ Here is the caller graph for this function:

u32 svm_fifo_segment_index ( svm_fifo_segment_main_t sm,
svm_fifo_segment_private_t s 
)

Definition at line 496 of file svm_fifo_segment.c.

+ Here is the caller graph for this function:

void svm_fifo_segment_info ( svm_fifo_segment_private_t seg,
char **  address,
size_t *  size 
)

Definition at line 571 of file svm_fifo_segment.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int svm_fifo_segment_init ( svm_fifo_segment_private_t s)

Initialize svm fifo segment shared header.

Definition at line 181 of file svm_fifo_segment.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void svm_fifo_segment_main_init ( svm_fifo_segment_main_t sm,
u64  baseva,
u32  timeout_in_seconds 
)

Definition at line 488 of file svm_fifo_segment.c.

+ Here is the caller graph for this function:

u32 svm_fifo_segment_num_fifos ( svm_fifo_segment_private_t fifo_segment)

Get number of active fifos.

Definition at line 515 of file svm_fifo_segment.c.

+ Here is the caller graph for this function:

u32 svm_fifo_segment_num_free_fifos ( svm_fifo_segment_private_t fifo_segment,
u32  fifo_size_in_bytes 
)

Definition at line 521 of file svm_fifo_segment.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void svm_fifo_segment_preallocate_fifo_pairs ( svm_fifo_segment_private_t s,
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.

Definition at line 66 of file svm_fifo_segment.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

svm_fifo_segment_private_t* svm_fifo_segment_segments_pool ( svm_fifo_segment_main_t sm)

Retrieve svm segments pool.

Used only for debug purposes.

Definition at line 506 of file svm_fifo_segment.c.

+ Here is the caller graph for this function:

Variable Documentation

format_function_t format_svm_fifo_segment

Definition at line 125 of file svm_fifo_segment.h.

format_function_t format_svm_fifo_segment_type

Definition at line 126 of file svm_fifo_segment.h.