vcl: add worker unregister api
[vpp.git] / src / vcl / vppcom.h
index 513947a..6dfdd26 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 Cisco and/or its affiliates.
+ * Copyright (c) 2017-2019 Cisco and/or its affiliates.
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at:
@@ -152,7 +152,6 @@ typedef enum
   VPPCOM_ATTR_SET_TCP_KEEPINTVL,
   VPPCOM_ATTR_GET_TCP_USER_MSS,
   VPPCOM_ATTR_SET_TCP_USER_MSS,
-  VPPCOM_ATTR_GET_REFCNT,
   VPPCOM_ATTR_SET_SHUT,
   VPPCOM_ATTR_GET_SHUT,
 } vppcom_attr_op_t;
@@ -173,6 +172,8 @@ typedef struct vppcom_data_segment_
 
 typedef vppcom_data_segment_t vppcom_data_segments_t[2];
 
+typedef unsigned long vcl_si_set;
+
 /*
  * VPPCOM Public API Functions
  */
@@ -259,10 +260,9 @@ extern int vppcom_session_write (uint32_t session_handle, void *buf,
 extern int vppcom_session_write_msg (uint32_t session_handle, void *buf,
                                     size_t n);
 
-extern int vppcom_select (unsigned long n_bits,
-                         unsigned long *read_map,
-                         unsigned long *write_map,
-                         unsigned long *except_map, double wait_for_time);
+extern int vppcom_select (int n_bits, vcl_si_set * read_map,
+                         vcl_si_set * write_map, vcl_si_set * except_map,
+                         double wait_for_time);
 
 extern int vppcom_epoll_create (void);
 extern int vppcom_epoll_ctl (uint32_t vep_handle, int op,
@@ -283,7 +283,6 @@ extern int vppcom_poll (vcl_poll_t * vp, uint32_t n_sids,
 extern int vppcom_mq_epoll_fd (void);
 extern int vppcom_session_index (vcl_session_handle_t session_handle);
 extern int vppcom_session_worker (vcl_session_handle_t session_handle);
-extern int vppcom_session_handle (uint32_t session_index);
 
 extern int vppcom_session_read_segments (uint32_t session_handle,
                                         vppcom_data_segments_t ds);
@@ -304,11 +303,24 @@ extern int vppcom_data_segment_copy (void *buf, vppcom_data_segments_t ds,
  */
 extern int vppcom_worker_register (void);
 
+/**
+ * Unregister current worker
+ */
+extern void vppcom_worker_unregister (void);
+
 /**
  * Retrieve current worker index
  */
 extern int vppcom_worker_index (void);
 
+/**
+ * Returns the current worker's message queues epoll fd
+ *
+ * This only works if vcl is configured to do eventfd based message queue
+ * notifications.
+ */
+extern int vppcom_worker_mqs_epfd (void);
+
 /* *INDENT-OFF* */
 #ifdef __cplusplus
 }