X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsegment_manager.h;h=0e5f62414e5f8fa88f9529e2f701fd0fd5adc1b4;hb=14260393c096b270ef318d74b481911c7def0496;hp=62e5e97e70334d64a95c820f19c741d9622c6706;hpb=f8f516a8b0ccab2f5d9796f90419bf2661c750af;p=vpp.git diff --git a/src/vnet/session/segment_manager.h b/src/vnet/session/segment_manager.h index 62e5e97e703..0e5f62414e5 100644 --- a/src/vnet/session/segment_manager.h +++ b/src/vnet/session/segment_manager.h @@ -17,27 +17,24 @@ #include #include -#include +#include #include #include #include typedef struct _segment_manager_properties { - /** Session fifo sizes. */ - u32 rx_fifo_size; - u32 tx_fifo_size; - u32 evt_q_size; - - /** Configured additional segment size */ - u32 add_segment_size; - - /** Flag that indicates if additional segments should be created */ - u8 add_segment; - - /** Segment type: if set to SSVM_N_TYPES, private segments are used */ - ssvm_segment_type_t segment_type; - + u32 rx_fifo_size; /**< receive fifo size */ + u32 tx_fifo_size; /**< transmit fifo size */ + u32 evt_q_size; /**< event queue length */ + u32 segment_size; /**< first segment size */ + u32 prealloc_fifos; /**< preallocated fifo pairs */ + u32 add_segment_size; /**< additional segment size */ + u8 add_segment:1; /**< can add new segments flag */ + u8 use_mq_eventfd:1; /**< use eventfds for mqs flag */ + u8 reserved:6; /**< reserved flags */ + ssvm_segment_type_t segment_type; /**< seg type: if set to SSVM_N_TYPES, + private segments are used */ } segment_manager_properties_t; typedef struct _segment_manager @@ -48,8 +45,8 @@ typedef struct _segment_manager /** rwlock that protects the segments pool */ clib_rwlock_t segments_rwlock; - /** Owner app index */ - u32 app_index; + /** Owner app worker index */ + u32 app_wrk_index; /** * First segment should not be deleted unless segment manger is deleted. @@ -61,7 +58,7 @@ typedef struct _segment_manager /** * App event queue allocated in first segment */ - svm_queue_t *event_queue; + svm_msg_q_t *event_queue; } segment_manager_t; #define segment_manager_foreach_segment_w_lock(VAR, SM, BODY) \ @@ -114,7 +111,7 @@ segment_manager_index (segment_manager_t * sm) return sm - segment_manager_main.segment_managers; } -always_inline svm_queue_t * +always_inline svm_msg_q_t * segment_manager_event_queue (segment_manager_t * sm) { return sm->event_queue; @@ -152,8 +149,10 @@ int segment_manager_try_alloc_fifos (svm_fifo_segment_private_t * fs, svm_fifo_t ** tx_fifo); void segment_manager_dealloc_fifos (u32 segment_index, svm_fifo_t * rx_fifo, svm_fifo_t * tx_fifo); -svm_queue_t *segment_manager_alloc_queue (svm_fifo_segment_private_t * fs, - u32 queue_size); +u32 segment_manager_evt_q_expected_size (u32 q_size); +svm_msg_q_t *segment_manager_alloc_queue (svm_fifo_segment_private_t * fs, + segment_manager_properties_t * + props); void segment_manager_dealloc_queue (segment_manager_t * sm, svm_queue_t * q); void segment_manager_app_detach (segment_manager_t * sm);