MCPcopy Create free account
hub / github.com/F-Stack/f-stack / split_elem

Function split_elem

dpdk/lib/eal/common/malloc_elem.c:290–313  ·  view source on GitHub ↗

* split an existing element into two smaller elements at the given * split_pt parameter. */

Source from the content-addressed store, hash-verified

288 * split_pt parameter.
289 */
290static void
291split_elem(struct malloc_elem *elem, struct malloc_elem *split_pt)
292{
293 struct malloc_elem *next_elem = elem->next;
294 const size_t old_elem_size = (uintptr_t)split_pt - (uintptr_t)elem;
295 const size_t new_elem_size = elem->size - old_elem_size;
296
297 malloc_elem_init(split_pt, elem->heap, elem->msl, new_elem_size,
298 elem->orig_elem, elem->orig_size, elem->dirty);
299 split_pt->prev = elem;
300 split_pt->next = next_elem;
301 if (next_elem)
302 next_elem->prev = split_pt;
303 else
304 elem->heap->last = split_pt;
305 elem->next = split_pt;
306 elem->size = old_elem_size;
307 set_trailer(elem);
308 if (elem->pad) {
309 /* Update inner padding inner element size. */
310 elem = RTE_PTR_ADD(elem, elem->pad);
311 elem->size = old_elem_size - elem->pad;
312 }
313}
314
315/*
316 * our malloc heap is a doubly linked list, so doubly remove our element.

Callers 3

malloc_elem_allocFunction · 0.85
malloc_elem_hide_regionFunction · 0.85
malloc_elem_resizeFunction · 0.85

Calls 2

malloc_elem_initFunction · 0.85
set_trailerFunction · 0.85

Tested by

no test coverage detected