#include <vpp/api/vpe_all_api_h.h>
#undef vl_endianfun
-vlib_main_t vlib_global_main;
-vlib_main_t **vlib_mains;
-
typedef struct {
u8 connected_to_vlib;
pthread_t rx_thread_handle;
bool rx_is_running = false;
bool timeout_thread_cancelled = false;
+/* Only ever allocate one heap */
+bool mem_initialized = false;
+
static void
init (void)
{
vl_client_disconnect();
vl_client_api_unmap();
- vac_callback = 0;
+ //vac_callback = 0;
cleanup();
vl_shmem_hdr_t *shmem_hdr;
/* svm_queue_sub(below) returns {-1, -2} */
- if (!pm->connected_to_vlib) return -3;
+ if (!pm->connected_to_vlib)
+ return VAC_NOT_CONNECTED;
*l = 0;
/* svm_queue_sub(below) returns {-1, -2} */
- if (am->our_pid == 0) return (-4);
+ if (am->our_pid == 0)
+ return (VAC_SHM_NOT_READY);
/* Poke timeout thread */
if (timeout)
vl_msg_api_free((void *) msg);
/* Client might forget to resume RX thread on failure */
vac_rx_resume ();
- return -1;
+ return VAC_TIMEOUT;
}
/*
svm_queue_t *q;
vac_main_t *pm = &vac_main;
- if (!pm->connected_to_vlib) return -1;
+ if (!pm->connected_to_vlib)
+ return VAC_NOT_CONNECTED;
if (!mp) return (-1);
memcpy(mp, p, l);
}
int
-vac_get_msg_index (unsigned char * name)
+vac_get_msg_index (char * name)
{
- return vl_msg_api_get_msg_index (name);
+ return vl_msg_api_get_msg_index ((u8 *)name);
}
int
void
vac_mem_init (size_t size)
{
+ if (mem_initialized)
+ return;
if (size == 0)
clib_mem_init (0, 1 << 30); // default
else
clib_mem_init (0, size);
+ mem_initialized = true;
}