diff --git a/repos/libports/include/libc-plugin/fd_alloc.h b/repos/libports/include/libc-plugin/fd_alloc.h index b3c0a02cb..2748fad15 100644 --- a/repos/libports/include/libc-plugin/fd_alloc.h +++ b/repos/libports/include/libc-plugin/fd_alloc.h @@ -73,7 +73,7 @@ namespace Libc { /** * Constructor */ - File_descriptor_allocator(); + File_descriptor_allocator(Genode::Allocator &md_alloc); /** * Allocate file descriptor diff --git a/repos/libports/src/lib/libc/fd_alloc.cc b/repos/libports/src/lib/libc/fd_alloc.cc index a89a7fbf1..ae9f444f0 100644 --- a/repos/libports/src/lib/libc/fd_alloc.cc +++ b/repos/libports/src/lib/libc/fd_alloc.cc @@ -16,32 +16,32 @@ #include #include #include +#include /* libc plugin interface */ #include -namespace Libc { - - File_descriptor_allocator *file_descriptor_allocator() - { - static bool constructed = 0; - static char placeholder[sizeof(File_descriptor_allocator)]; - if (!constructed) { - Genode::construct_at(placeholder); - constructed = 1; - } - - return reinterpret_cast(placeholder); - } -} - - using namespace Libc; using namespace Genode; -File_descriptor_allocator::File_descriptor_allocator() -: Allocator_avl_tpl(Genode::env()->heap()) +File_descriptor_allocator *Libc::file_descriptor_allocator() +{ + static bool constructed = false; + static char placeholder[sizeof(File_descriptor_allocator)]; + static Libc::Allocator md_alloc; + + if (!constructed) { + Genode::construct_at(placeholder, md_alloc); + constructed = true; + } + + return reinterpret_cast(placeholder); +} + + +File_descriptor_allocator::File_descriptor_allocator(Genode::Allocator &md_alloc) +: Allocator_avl_tpl(&md_alloc) { add_range(0, MAX_NUM_FDS); } diff --git a/repos/libports/src/lib/libc/libc_mmap_registry.h b/repos/libports/src/lib/libc/libc_mmap_registry.h index 0013ae8f3..5ddee1d27 100644 --- a/repos/libports/src/lib/libc/libc_mmap_registry.h +++ b/repos/libports/src/lib/libc/libc_mmap_registry.h @@ -12,6 +12,9 @@ #include #include +/* Genode libc includes */ +#include + /* libc-internal includes */ #include