#include <vnet/session/application_interface.h>
#include <vcl/vppcom.h>
-#include <vcl/vcl_event.h>
#include <vcl/vcl_debug.h>
#if (CLIB_DEBUG > 0)
typedef struct
{
+ CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
#define _(type, name) type name;
foreach_app_session_field
#undef _
/** Vector acting as buffer for mq messages */
svm_msg_q_msg_t *mq_msg_vector;
+
+ /** Vector of unhandled events */
+ session_event_t *unhandled_evts_vector;
+
+ /** Used also as a thread stop key buffer */
+ pthread_t thread_id;
} vcl_worker_t;
typedef struct vppcom_main_t_
/** Workers */
vcl_worker_t *workers;
+ /** Lock to protect worker registrations */
+ clib_spinlock_t workers_lock;
+
#ifdef VCL_ELOG
/* VPP Event-logger */
elog_main_t elog_main;
/* VNET_API_ERROR_FOO -> "Foo" hash table */
uword *error_string_by_error_number;
- /* Obsolete */
-
- /* Event thread */
- vce_event_thread_t event_thread;
-
- /* IO thread */
- vppcom_session_io_thread_t session_io_thread;
} vppcom_main_t;
extern vppcom_main_t *vcm;
void vppcom_app_send_attach (void);
void vppcom_app_send_detach (void);
void vppcom_send_connect_sock (vcl_session_t * session);
-void vppcom_send_disconnect_session (u64 vpp_handle, u32 session_index);
+void vppcom_send_disconnect_session (u64 vpp_handle);
void vppcom_send_bind_sock (vcl_session_t * session);
void vppcom_send_unbind_sock (u64 vpp_handle);
void vppcom_api_hookup (void);