-
-/* Allocated in shared memory */
-
-/*
- * Ring-allocation scheme for client API messages
- *
- * Only one proc/thread has control of a given message buffer.
- * To free a buffer allocated from one of these rings, we clear
- * a field in the buffer (header), and leave.
- *
- * No locks, no hits, no errors...
- */
-typedef struct ring_alloc_
-{
- unix_shared_memory_queue_t *rp;
- u16 size;
- u16 nitems;
- u32 hits;
- u32 misses;
-} ring_alloc_t;
-
-/*
- * Initializers for the (shared-memory) rings
- * _(size, n). Note: each msg has an 8 byte header.
- * Might want to change that to an index sometime.
- */
-#define foreach_vl_aring_size \
-_(64+8, 1024) \
-_(256+8, 128) \
-_(1024+8, 64)
-
-#define foreach_clnt_aring_size \
-_(1024+8, 1024) \
-_(2048+8, 128) \
-_(4096+8, 8)
-
-typedef struct vl_shmem_hdr_
-{
- int version;
-
- /* getpid () for the VLIB client process */
- volatile int vl_pid;
-
- /* Client sends VLIB msgs here. */
- unix_shared_memory_queue_t *vl_input_queue;
-
- /* Vector of rings; one for each size. */
-
- /* VLIB allocates buffers to send msgs to clients here. */
- ring_alloc_t *vl_rings;
-
- /* Clients allocate buffer to send msgs to VLIB here. */
- ring_alloc_t *client_rings;
-
- /* Number of detected application restarts */
- u32 application_restarts;
-
- /* Number of messages reclaimed during application restart */
- u32 restart_reclaims;
-
-} vl_shmem_hdr_t;
-
-#define VL_SHM_VERSION 2
-
-#define VL_API_EPOCH_MASK 0xFF
-#define VL_API_EPOCH_SHIFT 8