mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-22 18:22:41 +00:00
libc: allocate more backing store in memory allocator
Add the size of the 'Dataspace' object and AVL-node slab blocks like in the 'Genode::Heap' implementation. Fixes #2925
This commit is contained in:
parent
2ec48c32cb
commit
3a1c1d1fd5
@ -96,11 +96,12 @@ void *Libc::Mem_alloc_impl::alloc(size_t size, size_t align_log2)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Calculate block size of needed backing store. The block must hold the
|
* Calculate block size of needed backing store. The block must hold the
|
||||||
* requested 'size' with the requested alignment and a new Dataspace
|
* requested 'size' with the requested alignment, a new Dataspace structure
|
||||||
* structure if the allocation above failed.
|
* and space for AVL-node slab blocks if the allocation above failed.
|
||||||
* Finally, we align the size to a 4K page.
|
* Finally, we align the size to a 4K page.
|
||||||
*/
|
*/
|
||||||
size_t request_size = size + max((1 << align_log2), 1024);
|
size_t request_size = size + max((1 << align_log2), 1024) +
|
||||||
|
Allocator_avl::slab_block_size() + sizeof(Dataspace);
|
||||||
|
|
||||||
if (request_size < _chunk_size*sizeof(umword_t)) {
|
if (request_size < _chunk_size*sizeof(umword_t)) {
|
||||||
request_size = _chunk_size*sizeof(umword_t);
|
request_size = _chunk_size*sizeof(umword_t);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user