Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
host stack: update stale copyright
[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
a3181ee
..
e377160
100644
(file)
--- a/
src/svm/svm_fifo_segment.c
+++ b/
src/svm/svm_fifo_segment.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 2016 Cisco and/or its affiliates.
+ * Copyright (c) 2016
-2019
Cisco and/or its affiliates.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
@@
-15,8
+15,6
@@
#include <svm/svm_fifo_segment.h>
#include <svm/svm_fifo_segment.h>
-svm_fifo_segment_main_t svm_fifo_segment_main;
-
static void
allocate_new_fifo_chunk (svm_fifo_segment_header_t * fsh,
u32 data_size_in_bytes, int chunk_size)
static void
allocate_new_fifo_chunk (svm_fifo_segment_header_t * fsh,
u32 data_size_in_bytes, int chunk_size)
@@
-190,7
+188,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);
@@
-203,15
+201,15
@@
svm_fifo_segment_init (svm_fifo_segment_private_t * s)
* Create an svm fifo segment and initialize as master
*/
int
* Create an svm fifo segment and initialize as master
*/
int
-svm_fifo_segment_create (svm_fifo_segment_create_args_t * a)
+svm_fifo_segment_create (svm_fifo_segment_main_t * sm,
+ svm_fifo_segment_create_args_t * a)
{
{
- svm_fifo_segment_main_t *sm = &svm_fifo_segment_main;
svm_fifo_segment_private_t *s;
int rv;
/* Allocate a fresh segment */
pool_get (sm->segments, s);
svm_fifo_segment_private_t *s;
int rv;
/* 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;
@@
-237,9
+235,9
@@
svm_fifo_segment_create (svm_fifo_segment_create_args_t * a)
* Create an svm fifo segment in process-private memory
*/
int
* Create an svm fifo segment in process-private memory
*/
int
-svm_fifo_segment_create_process_private (svm_fifo_segment_create_args_t * a)
+svm_fifo_segment_create_process_private (svm_fifo_segment_main_t * sm,
+ svm_fifo_segment_create_args_t * a)
{
{
- svm_fifo_segment_main_t *sm = &svm_fifo_segment_main;
svm_fifo_segment_private_t *s;
ssvm_shared_header_t *sh;
u32 rnd_size = 0;
svm_fifo_segment_private_t *s;
ssvm_shared_header_t *sh;
u32 rnd_size = 0;
@@
-247,7
+245,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
+276,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);
@@
-291,15
+289,15
@@
svm_fifo_segment_create_process_private (svm_fifo_segment_create_args_t * a)
* Attach as slave to an svm fifo segment
*/
int
* Attach as slave to an svm fifo segment
*/
int
-svm_fifo_segment_attach (svm_fifo_segment_create_args_t * a)
+svm_fifo_segment_attach (svm_fifo_segment_main_t * sm,
+ svm_fifo_segment_create_args_t * a)
{
{
- svm_fifo_segment_main_t *sm = &svm_fifo_segment_main;
svm_fifo_segment_private_t *s;
int rv;
/* Allocate a fresh segment */
pool_get (sm->segments, s);
svm_fifo_segment_private_t *s;
int rv;
/* 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 ();
@@
-324,12
+322,11
@@
svm_fifo_segment_attach (svm_fifo_segment_create_args_t * a)
}
void
}
void
-svm_fifo_segment_delete (svm_fifo_segment_private_t * s)
+svm_fifo_segment_delete (svm_fifo_segment_main_t * sm,
+ svm_fifo_segment_private_t * s)
{
{
- svm_fifo_segment_main_t *sm = &svm_fifo_segment_main;
-
ssvm_delete (&s->ssvm);
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);
}
@@
-337,7
+334,7
@@
svm_fifo_segment_delete (svm_fifo_segment_private_t * s)
* Allocate fifo in svm segment
*/
svm_fifo_t *
* Allocate fifo in svm segment
*/
svm_fifo_t *
-svm_fifo_segment_alloc_fifo (svm_fifo_segment_private_t * s,
+svm_fifo_segment_alloc_fifo (svm_fifo_segment_private_t *
f
s,
u32 data_size_in_bytes,
svm_fifo_segment_freelist_t list_index)
{
u32 data_size_in_bytes,
svm_fifo_segment_freelist_t list_index)
{
@@
-361,7
+358,7
@@
svm_fifo_segment_alloc_fifo (svm_fifo_segment_private_t * s,
freelist_index = max_log2 (data_size_in_bytes)
- max_log2 (FIFO_SEGMENT_MIN_FIFO_SIZE);
freelist_index = max_log2 (data_size_in_bytes)
- max_log2 (FIFO_SEGMENT_MIN_FIFO_SIZE);
- sh = s->ssvm.sh;
+ sh =
f
s->ssvm.sh;
ssvm_lock_non_recursive (sh, 1);
fsh = (svm_fifo_segment_header_t *) sh->opaque[0];
ssvm_lock_non_recursive (sh, 1);
fsh = (svm_fifo_segment_header_t *) sh->opaque[0];
@@
-373,10
+370,6
@@
svm_fifo_segment_alloc_fifo (svm_fifo_segment_private_t * s,
f = fsh->free_fifos[freelist_index];
if (PREDICT_FALSE (!f))
{
f = fsh->free_fifos[freelist_index];
if (PREDICT_FALSE (!f))
{
- /* Preallocated and no fifo left. Don't even try */
- if (fsh->flags & FIFO_SEGMENT_F_IS_PREALLOCATED)
- goto done;
-
oldheap = ssvm_push_heap (sh);
allocate_new_fifo_chunk (fsh, data_size_in_bytes,
FIFO_SEGMENT_ALLOC_CHUNK_SIZE);
oldheap = ssvm_push_heap (sh);
allocate_new_fifo_chunk (fsh, data_size_in_bytes,
FIFO_SEGMENT_ALLOC_CHUNK_SIZE);
@@
-387,9
+380,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;
@@
-439,7
+433,6
@@
svm_fifo_segment_free_fifo (svm_fifo_segment_private_t * s, svm_fifo_t * f,
{
ssvm_shared_header_t *sh;
svm_fifo_segment_header_t *fsh;
{
ssvm_shared_header_t *sh;
svm_fifo_segment_header_t *fsh;
- void *oldheap;
int freelist_index;
ASSERT (f->refcnt > 0);
int freelist_index;
ASSERT (f->refcnt > 0);
@@
-455,7
+448,6
@@
svm_fifo_segment_free_fifo (svm_fifo_segment_private_t * s, svm_fifo_t * f,
ASSERT (freelist_index < vec_len (fsh->free_fifos));
ssvm_lock_non_recursive (sh, 2);
ASSERT (freelist_index < vec_len (fsh->free_fifos));
ssvm_lock_non_recursive (sh, 2);
- oldheap = ssvm_push_heap (sh);
switch (list_index)
{
switch (list_index)
{
@@
-489,32
+481,30
@@
svm_fifo_segment_free_fifo (svm_fifo_segment_private_t * s, svm_fifo_t * f,
}
fsh->n_active_fifos--;
}
fsh->n_active_fifos--;
- ssvm_pop_heap (oldheap);
ssvm_unlock_non_recursive (sh);
}
void
ssvm_unlock_non_recursive (sh);
}
void
-svm_fifo_segment_main_init (u64 baseva, u32 timeout_in_seconds)
+svm_fifo_segment_main_init (svm_fifo_segment_main_t * sm, u64 baseva,
+ u32 timeout_in_seconds)
{
{
- svm_fifo_segment_main_t *sm = &svm_fifo_segment_main;
-
sm->next_baseva = baseva;
sm->timeout_in_seconds = timeout_in_seconds;
}
u32
sm->next_baseva = baseva;
sm->timeout_in_seconds = timeout_in_seconds;
}
u32
-svm_fifo_segment_index (svm_fifo_segment_private_t * s)
+svm_fifo_segment_index (svm_fifo_segment_main_t * sm,
+ svm_fifo_segment_private_t * s)
{
{
- return s - s
vm_fifo_segment_main.
segments;
+ return s - s
m->
segments;
}
/**
* Retrieve svm segments pool. Used only for debug purposes.
*/
svm_fifo_segment_private_t *
}
/**
* Retrieve svm segments pool. Used only for debug purposes.
*/
svm_fifo_segment_private_t *
-svm_fifo_segment_segments_pool (
void
)
+svm_fifo_segment_segments_pool (
svm_fifo_segment_main_t * sm
)
{
{
- svm_fifo_segment_main_t *sm = &svm_fifo_segment_main;
return sm->segments;
}
return sm->segments;
}
@@
-578,8
+568,8
@@
svm_fifo_segment_num_free_fifos (svm_fifo_segment_private_t * fifo_segment,
}
void
}
void
-svm_fifo_segment_info (svm_fifo_segment_private_t * seg,
uword *
address,
-
u64
* size)
+svm_fifo_segment_info (svm_fifo_segment_private_t * seg,
char **
address,
+
size_t
* size)
{
if (ssvm_type (&seg->ssvm) == SSVM_SEGMENT_PRIVATE)
{
{
if (ssvm_type (&seg->ssvm) == SSVM_SEGMENT_PRIVATE)
{
@@
-590,14
+580,12
@@
svm_fifo_segment_info (svm_fifo_segment_private_t * seg, uword * address,
heap_header = mheap_header (seg->ssvm.sh->heap);
*size = heap_header->max_size;
#else
heap_header = mheap_header (seg->ssvm.sh->heap);
*size = heap_header->max_size;
#else
- mspace_get_address_and_size (seg->ssvm.sh->heap,
- (unsigned long long *) address,
- (unsigned long long *) size);
+ mspace_get_address_and_size (seg->ssvm.sh->heap, address, size);
#endif
}
else
{
#endif
}
else
{
- *address = seg->ssvm.sh->ssvm_va;
+ *address =
(char *)
seg->ssvm.sh->ssvm_va;
*size = seg->ssvm.ssvm_size;
}
}
*size = seg->ssvm.ssvm_size;
}
}