aboutsummaryrefslogtreecommitdiffstats
path: root/src/vlibmemory
diff options
context:
space:
mode:
authorMohsin Kazmi <sykazmi@cisco.com>2018-01-04 18:57:26 +0100
committerDave Barach <openvpp@barachs.net>2018-01-22 18:17:23 +0000
commit3fca567ff438145e28dd1318ad5b1734c1091257 (patch)
tree7101b4ae130f2731e549f82ab98af8bfbabc6571 /src/vlibmemory
parente82488f10f20f464961c5c7b381b4a419bca0bbc (diff)
svm: queue sub: Add conditional timed wait
On reviece side svm queue only permits blocking and non-blocking calls. This patch adds timed wait blocking functionality which returns either on signal/event or on given time out. It also preserves the original behavior, so it will not hurt client applications which are using svm queue. Change-Id: Ic10632170330a80afb8bc781d4ccddfe4da2c69a Signed-off-by: Mohsin Kazmi <sykazmi@cisco.com>
Diffstat (limited to 'src/vlibmemory')
-rw-r--r--src/vlibmemory/memory_client.c4
-rw-r--r--src/vlibmemory/memory_shared.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/vlibmemory/memory_client.c b/src/vlibmemory/memory_client.c
index a0b5cc99cd4..deb913b63e3 100644
--- a/src/vlibmemory/memory_client.c
+++ b/src/vlibmemory/memory_client.c
@@ -218,7 +218,7 @@ vl_client_connect (const char *name, int ctx_quota, int input_queue_size)
for (i = 0; i < 1000; i++)
{
qstatus = svm_queue_sub (vl_input_queue, (u8 *) & rp,
- 1 /* nowait */ );
+ SVM_Q_NOWAIT, 0);
if (qstatus == 0)
goto read_one_msg;
ts.tv_sec = 0;
@@ -305,7 +305,7 @@ vl_client_disconnect (void)
am->shmem_hdr = 0;
break;
}
- if (svm_queue_sub (vl_input_queue, (u8 *) & rp, 1) < 0)
+ if (svm_queue_sub (vl_input_queue, (u8 *) & rp, SVM_Q_NOWAIT, 0) < 0)
continue;
/* drain the queue */
diff --git a/src/vlibmemory/memory_shared.c b/src/vlibmemory/memory_shared.c
index c9ace1b141d..5b7d735dab9 100644
--- a/src/vlibmemory/memory_shared.c
+++ b/src/vlibmemory/memory_shared.c
@@ -577,7 +577,7 @@ vl_map_shmem (const char *region_name, int is_vlib)
mutex_ok:
am->vlib_rp = vlib_rp;
- while (svm_queue_sub (q, (u8 *) & old_msg, 1 /* nowait */ )
+ while (svm_queue_sub (q, (u8 *) & old_msg, SVM_Q_NOWAIT, 0)
!= -2 /* queue underflow */ )
{
vl_msg_api_free_nolock ((void *) old_msg);