From a79f7d234bc28b981540368d2cf49b44f8565649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Wed, 22 Feb 2017 13:26:33 +0100 Subject: [PATCH] libc: remove global env from fd_alloc Issue #2280. --- repos/libports/include/libc-plugin/fd_alloc.h | 2 +- repos/libports/src/lib/libc/fd_alloc.cc | 36 +++++++++---------- .../src/lib/libc/libc_mmap_registry.h | 3 ++ 3 files changed, 22 insertions(+), 19 deletions(-) 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