Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Use acquire/release ordering when accessing svm_fifo shared variable cursize
[vpp.git]
/
src
/
svm
/
svm_fifo_segment.c
diff --git
a/src/svm/svm_fifo_segment.c
b/src/svm/svm_fifo_segment.c
index
ce1d5a0
..
a42225c
100644
(file)
--- a/
src/svm/svm_fifo_segment.c
+++ b/
src/svm/svm_fifo_segment.c
@@
-190,7
+190,7
@@
svm_fifo_segment_init (svm_fifo_segment_private_t * s)
oldheap = ssvm_push_heap (sh);
fsh = clib_mem_alloc (sizeof (*fsh));
oldheap = ssvm_push_heap (sh);
fsh = clib_mem_alloc (sizeof (*fsh));
- memset (fsh, 0, sizeof (*fsh));
+
clib_
memset (fsh, 0, sizeof (*fsh));
s->h = sh->opaque[0] = fsh;
ssvm_pop_heap (oldheap);
s->h = sh->opaque[0] = fsh;
ssvm_pop_heap (oldheap);
@@
-211,7
+211,7
@@
svm_fifo_segment_create (svm_fifo_segment_create_args_t * a)
/* Allocate a fresh segment */
pool_get (sm->segments, s);
/* Allocate a fresh segment */
pool_get (sm->segments, s);
- memset (s, 0, sizeof (*s));
+
clib_
memset (s, 0, sizeof (*s));
s->ssvm.ssvm_size = a->segment_size;
s->ssvm.i_am_master = 1;
s->ssvm.ssvm_size = a->segment_size;
s->ssvm.i_am_master = 1;
@@
-247,7
+247,7
@@
svm_fifo_segment_create_process_private (svm_fifo_segment_create_args_t * a)
u32 pagesize = clib_mem_get_page_size ();
pool_get (sm->segments, s);
u32 pagesize = clib_mem_get_page_size ();
pool_get (sm->segments, s);
- memset (s, 0, sizeof (*s));
+
clib_
memset (s, 0, sizeof (*s));
rnd_size = (a->segment_size + (pagesize - 1)) & ~pagesize;
rnd_size = (a->segment_size + (pagesize - 1)) & ~pagesize;
@@
-278,7
+278,7
@@
svm_fifo_segment_create_process_private (svm_fifo_segment_create_args_t * a)
sh = clib_mem_alloc_aligned (sizeof (*sh), CLIB_CACHE_LINE_BYTES);
s->ssvm.sh = sh;
sh = clib_mem_alloc_aligned (sizeof (*sh), CLIB_CACHE_LINE_BYTES);
s->ssvm.sh = sh;
- memset (sh, 0, sizeof (*sh));
+
clib_
memset (sh, 0, sizeof (*sh));
sh->heap = heap;
svm_fifo_segment_init (s);
sh->heap = heap;
svm_fifo_segment_init (s);
@@
-299,7
+299,7
@@
svm_fifo_segment_attach (svm_fifo_segment_create_args_t * a)
/* Allocate a fresh segment */
pool_get (sm->segments, s);
/* Allocate a fresh segment */
pool_get (sm->segments, s);
- memset (s, 0, sizeof (*s));
+
clib_
memset (s, 0, sizeof (*s));
s->ssvm.ssvm_size = a->segment_size;
s->ssvm.my_pid = getpid ();
s->ssvm.ssvm_size = a->segment_size;
s->ssvm.my_pid = getpid ();
@@
-329,7
+329,7
@@
svm_fifo_segment_delete (svm_fifo_segment_private_t * s)
svm_fifo_segment_main_t *sm = &svm_fifo_segment_main;
ssvm_delete (&s->ssvm);
svm_fifo_segment_main_t *sm = &svm_fifo_segment_main;
ssvm_delete (&s->ssvm);
- memset (s, 0xfe, sizeof (*s));
+
clib_
memset (s, 0xfe, sizeof (*s));
pool_put (sm->segments, s);
}
pool_put (sm->segments, s);
}
@@
-387,9
+387,10
@@
svm_fifo_segment_alloc_fifo (svm_fifo_segment_private_t * s,
{
fsh->free_fifos[freelist_index] = f->next;
/* (re)initialize the fifo, as in svm_fifo_create */
{
fsh->free_fifos[freelist_index] = f->next;
/* (re)initialize the fifo, as in svm_fifo_create */
- memset (f, 0, sizeof (*f));
+
clib_
memset (f, 0, sizeof (*f));
f->nitems = data_size_in_bytes;
f->ooos_list_head = OOO_SEGMENT_INVALID_INDEX;
f->nitems = data_size_in_bytes;
f->ooos_list_head = OOO_SEGMENT_INVALID_INDEX;
+ f->ct_session_index = SVM_FIFO_INVALID_SESSION_INDEX;
f->refcnt = 1;
f->freelist_index = freelist_index;
goto found;
f->refcnt = 1;
f->freelist_index = freelist_index;
goto found;
@@
-562,7
+563,7
@@
svm_fifo_segment_num_free_fifos (svm_fifo_segment_private_t * fifo_segment,
freelist_index = max_log2 (rounded_data_size)
- max_log2 (FIFO_SEGMENT_MIN_FIFO_SIZE);
freelist_index = max_log2 (rounded_data_size)
- max_log2 (FIFO_SEGMENT_MIN_FIFO_SIZE);
- if (freelist_index > vec_len (fsh->free_fifos))
+ if (freelist_index >
=
vec_len (fsh->free_fifos))
return 0;
f = fsh->free_fifos[freelist_index];
return 0;
f = fsh->free_fifos[freelist_index];