Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
session: segment handle in accept/connect notifications
[vpp.git]
/
src
/
svm
/
svm_fifo.h
diff --git
a/src/svm/svm_fifo.h
b/src/svm/svm_fifo.h
index
1ac5b63
..
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,6
+62,8
@@
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;
volatile u32 want_tx_evt; /**< producer wants nudge */
CLIB_CACHE_LINE_ALIGN_MARK (end_shared);
u32 head;
volatile u32 want_tx_evt; /**< producer wants nudge */
@@
-111,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
@@
-167,7
+171,7
@@
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
}
static inline void