Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
GBP: add allowed ethertypes to contracts
[vpp.git]
/
src
/
svm
/
svm_fifo.h
diff --git
a/src/svm/svm_fifo.h
b/src/svm/svm_fifo.h
index
ec32fd5
..
9bba85f
100644
(file)
--- a/
src/svm/svm_fifo.h
+++ b/
src/svm/svm_fifo.h
@@
-36,8
+36,10
@@
typedef struct
format_function_t format_ooo_segment;
format_function_t format_ooo_list;
format_function_t format_ooo_segment;
format_function_t format_ooo_list;
-#define SVM_FIFO_TRACE (0)
-#define OOO_SEGMENT_INVALID_INDEX ((u32)~0)
+#define SVM_FIFO_TRACE (0)
+#define OOO_SEGMENT_INVALID_INDEX ((u32)~0)
+#define SVM_FIFO_INVALID_SESSION_INDEX ((u32)~0)
+#define SVM_FIFO_INVALID_INDEX ((u32)~0)
typedef struct
{
typedef struct
{
@@
-60,8
+62,11
@@
typedef struct _svm_fifo
u8 master_thread_index;
u8 client_thread_index;
u32 segment_manager;
u8 master_thread_index;
u8 client_thread_index;
u32 segment_manager;
+ u32 segment_index;
+ u32 ct_session_index; /**< Local session index for vpp */
CLIB_CACHE_LINE_ALIGN_MARK (end_shared);
u32 head;
CLIB_CACHE_LINE_ALIGN_MARK (end_shared);
u32 head;
+ volatile u32 want_tx_evt; /**< producer wants nudge */
CLIB_CACHE_LINE_ALIGN_MARK (end_consumer);
/* producer */
CLIB_CACHE_LINE_ALIGN_MARK (end_consumer);
/* producer */
@@
-110,19
+115,19
@@
u8 *svm_fifo_replay (u8 * s, svm_fifo_t * f, u8 no_read, u8 verbose);
static inline u32
svm_fifo_max_dequeue (svm_fifo_t * f)
{
static inline u32
svm_fifo_max_dequeue (svm_fifo_t * f)
{
- return
f->cursize
;
+ return
clib_atomic_load_acq_n (&f->cursize)
;
}
static inline int
svm_fifo_is_full (svm_fifo_t * f)
{
}
static inline int
svm_fifo_is_full (svm_fifo_t * f)
{
- return (
f->cursize
== f->nitems);
+ return (
clib_atomic_load_acq_n (&f->cursize)
== f->nitems);
}
static inline int
svm_fifo_is_empty (svm_fifo_t * f)
{
}
static inline int
svm_fifo_is_empty (svm_fifo_t * f)
{
- return (
f->cursize
== 0);
+ return (
clib_atomic_load_acq_n (&f->cursize)
== 0);
}
static inline u32
}
static inline u32
@@
-166,7
+171,19
@@
svm_fifo_set_event (svm_fifo_t * f)
always_inline void
svm_fifo_unset_event (svm_fifo_t * f)
{
always_inline void
svm_fifo_unset_event (svm_fifo_t * f)
{
- __sync_lock_release (&f->has_event);
+ clib_atomic_release (&f->has_event);
+}
+
+static inline void
+svm_fifo_set_want_tx_evt (svm_fifo_t * f, u8 want_evt)
+{
+ f->want_tx_evt = want_evt;
+}
+
+static inline u8
+svm_fifo_want_tx_evt (svm_fifo_t * f)
+{
+ return f->want_tx_evt;
}
svm_fifo_t *svm_fifo_create (u32 data_size_in_bytes);
}
svm_fifo_t *svm_fifo_create (u32 data_size_in_bytes);