Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
pnat: add support to wildcard IP Protocol field if not specified
[vpp.git]
/
src
/
vppinfra
/
pool.h
diff --git
a/src/vppinfra/pool.h
b/src/vppinfra/pool.h
index
9f9194f
..
2a35629
100644
(file)
--- a/
src/vppinfra/pool.h
+++ b/
src/vppinfra/pool.h
@@
-172,6
+172,9
@@
_pool_get (void **pp, void **ep, uword align, int zero, uword elt_sz)
uword len = 0;
void *p = pp[0];
void *e;
uword len = 0;
void *p = pp[0];
void *e;
+ vec_attr_t va = { .hdr_sz = sizeof (pool_header_t),
+ .elt_sz = elt_sz,
+ .align = align };
if (p)
{
if (p)
{
@@
-185,7
+188,7
@@
_pool_get (void **pp, void **ep, uword align, int zero, uword elt_sz)
ph->free_bitmap =
clib_bitmap_andnoti_notrim (ph->free_bitmap, index);
vec_set_len (ph->free_indices, n_free - 1);
ph->free_bitmap =
clib_bitmap_andnoti_notrim (ph->free_bitmap, index);
vec_set_len (ph->free_indices, n_free - 1);
-
CLIB_MEM_UNPOISON
(e, elt_sz);
+
clib_mem_unpoison
(e, elt_sz);
goto done;
}
goto done;
}
@@
-199,8
+202,7
@@
_pool_get (void **pp, void **ep, uword align, int zero, uword elt_sz)
len = vec_len (p);
/* Nothing on free list, make a new element and return it. */
len = vec_len (p);
/* Nothing on free list, make a new element and return it. */
- p =
- _vec_realloc_inline (p, len + 1, elt_sz, sizeof (pool_header_t), align, 0);
+ p = _vec_realloc_internal (p, len + 1, &va);
e = p + len * elt_sz;
_vec_update_pointer (pp, p);
e = p + len * elt_sz;
_vec_update_pointer (pp, p);
@@
-299,7
+301,7
@@
_pool_put_index (void *p, uword index, uword elt_sz)
else
vec_add1 (ph->free_indices, index);
else
vec_add1 (ph->free_indices, index);
-
CLIB_MEM_POISON
(p + index * elt_sz, elt_sz);
+
clib_mem_poison
(p + index * elt_sz, elt_sz);
}
#define pool_put_index(P, I) _pool_put_index ((void *) (P), I, _vec_elt_sz (P))
}
#define pool_put_index(P, I) _pool_put_index ((void *) (P), I, _vec_elt_sz (P))
@@
-312,6
+314,10
@@
_pool_alloc (void **pp, uword n_elts, uword align, void *heap, uword elt_sz)
{
pool_header_t *ph = pool_header (pp[0]);
uword len = vec_len (pp[0]);
{
pool_header_t *ph = pool_header (pp[0]);
uword len = vec_len (pp[0]);
+ const vec_attr_t va = { .hdr_sz = sizeof (pool_header_t),
+ .elt_sz = elt_sz,
+ .align = align,
+ .heap = heap };
if (ph && ph->max_elts)
{
if (ph && ph->max_elts)
{
@@
-319,10
+325,9
@@
_pool_alloc (void **pp, uword n_elts, uword align, void *heap, uword elt_sz)
os_out_of_memory ();
}
os_out_of_memory ();
}
- pp[0] = _vec_realloc_inline (pp[0], len + n_elts, elt_sz,
- sizeof (pool_header_t), align, heap);
+ pp[0] = _vec_resize_internal (pp[0], len + n_elts, &va);
_vec_set_len (pp[0], len, elt_sz);
_vec_set_len (pp[0], len, elt_sz);
-
CLIB_MEM_POISON
(pp[0] + len * elt_sz, n_elts * elt_sz);
+
clib_mem_poison
(pp[0] + len * elt_sz, n_elts * elt_sz);
ph = pool_header (pp[0]);
vec_resize (ph->free_indices, n_elts);
ph = pool_header (pp[0]);
vec_resize (ph->free_indices, n_elts);
@@
-342,6
+347,9
@@
_pool_dup (void *p, uword align, uword elt_sz)
{
pool_header_t *nph, *ph = pool_header (p);
uword len = vec_len (p);
{
pool_header_t *nph, *ph = pool_header (p);
uword len = vec_len (p);
+ const vec_attr_t va = { .hdr_sz = sizeof (pool_header_t),
+ .elt_sz = elt_sz,
+ .align = align };
void *n;
if (ph && ph->max_elts)
void *n;
if (ph && ph->max_elts)
@@
-350,7
+358,7
@@
_pool_dup (void *p, uword align, uword elt_sz)
os_out_of_memory ();
}
os_out_of_memory ();
}
- n = _vec_
realloc_inline (0, len, elt_sz, sizeof (pool_header_t), align, 0
);
+ n = _vec_
alloc_internal (len, &va
);
nph = pool_header (n);
clib_memset_u8 (nph, 0, sizeof (vec_header_t));
nph = pool_header (n);
clib_memset_u8 (nph, 0, sizeof (vec_header_t));
@@
-358,7
+366,7
@@
_pool_dup (void *p, uword align, uword elt_sz)
{
u32 *fi;
vec_foreach (fi, ph->free_indices)
{
u32 *fi;
vec_foreach (fi, ph->free_indices)
-
CLIB_MEM_UNPOISON
(p + elt_sz * fi[0], elt_sz);
+
clib_mem_unpoison
(p + elt_sz * fi[0], elt_sz);
clib_memcpy_fast (n, p, len * elt_sz);
clib_memcpy_fast (n, p, len * elt_sz);
@@
-368,8
+376,8
@@
_pool_dup (void *p, uword align, uword elt_sz)
vec_foreach (fi, ph->free_indices)
{
uword offset = elt_sz * fi[0];
vec_foreach (fi, ph->free_indices)
{
uword offset = elt_sz * fi[0];
-
CLIB_MEM_POISON
(p + offset, elt_sz);
-
CLIB_MEM_POISON
(n + offset, elt_sz);
+
clib_mem_poison
(p + offset, elt_sz);
+
clib_mem_poison
(n + offset, elt_sz);
}
}
}
}