aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIJsbrand Wijnands <ice@cisco.com>2020-05-04 17:57:33 +0200
committerAndrew Yourtchenko <ayourtch@gmail.com>2020-08-18 09:54:33 +0000
commit84c13e6b0246ca037183d3f8f3916777bc22ed56 (patch)
tree4d9f60278bd452515b313c5b03ecf8bdeb6240f1
parenta3ac7bc3c818169fef9fd169adafe71492b4441f (diff)
vcl: allow vcl worker index to be set by applications
When using vppcom_session* apis to setup TCP sessions in applications build outside of the VPP repository, it is necessary to set the worker_index explicitly when these apis are called from the none-VCL worker threads. An example is when data is to be sent to the TCP session that is originated from a different thread, like the main program thread or from the bin api thread. This change allows the application to set it. Type: fix Signed-off-by: IJsbrand Wijnands <ice@cisco.com> Change-Id: I37f3654a49ea9a8cf3a0d3d0e672583018c12299 (cherry picked from commit 6017ff0dd7a27c062d0ad4687bfc70a69747ac55)
-rw-r--r--src/vcl/vppcom.c6
-rw-r--r--src/vcl/vppcom.h5
2 files changed, 11 insertions, 0 deletions
diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c
index a50d0abf2f4..0b61c5eb304 100644
--- a/src/vcl/vppcom.c
+++ b/src/vcl/vppcom.c
@@ -3635,6 +3635,12 @@ vppcom_worker_unregister (void)
vcl_set_worker_index (~0);
}
+void
+vppcom_worker_index_set (int index)
+{
+ vcl_set_worker_index (index);
+}
+
int
vppcom_worker_index (void)
{
diff --git a/src/vcl/vppcom.h b/src/vcl/vppcom.h
index 62613037575..771443021b3 100644
--- a/src/vcl/vppcom.h
+++ b/src/vcl/vppcom.h
@@ -334,6 +334,11 @@ extern void vppcom_worker_unregister (void);
extern int vppcom_worker_index (void);
/**
+ * Set current worker index
+ */
+extern void vppcom_worker_index_set (int);
+
+/**
* Returns the current worker's message queues epoll fd
*
* This only works if vcl is configured to do eventfd based message queue