X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fsvm%2Fqueue.h;h=856c17237d14ea592dd2369a5a018b647814c1eb;hb=298c69510ff4b64a262d465eb8877c4e7f4e60e0;hp=dc1fc36e0020e135ae164858001bc8a64d6d9208;hpb=e86a8edd3c14fb41ace2a12efd17bc7772bf623f;p=vpp.git diff --git a/src/svm/queue.h b/src/svm/queue.h index dc1fc36e002..856c17237d1 100644 --- a/src/svm/queue.h +++ b/src/svm/queue.h @@ -36,6 +36,24 @@ typedef struct _svm_queue char data[0]; } svm_queue_t; +typedef enum +{ + /** + * blocking call + */ + SVM_Q_WAIT = 0, + + /** + * non-blocking call + */ + SVM_Q_NOWAIT, + + /** + * blocking call, return on signal or time-out + */ + SVM_Q_TIMEDWAIT, +} svm_q_conditional_wait_t; + svm_queue_t *svm_queue_init (int nels, int elsize, int consumer_pid, @@ -43,7 +61,8 @@ svm_queue_t *svm_queue_init (int nels, void svm_queue_free (svm_queue_t * q); int svm_queue_add (svm_queue_t * q, u8 * elem, int nowait); int svm_queue_add2 (svm_queue_t * q, u8 * elem, u8 * elem2, int nowait); -int svm_queue_sub (svm_queue_t * q, u8 * elem, int nowait); +int svm_queue_sub (svm_queue_t * q, u8 * elem, svm_q_conditional_wait_t cond, + u32 time); int svm_queue_sub2 (svm_queue_t * q, u8 * elem); void svm_queue_lock (svm_queue_t * q); void svm_queue_unlock (svm_queue_t * q);