mirror of
https://github.com/genodelabs/genode.git
synced 2025-06-23 01:08:55 +00:00
dde_linux: eliminate global ctors in lx_kit
As the lx_kit library is used by the vfs_lxip plugin, it must not contain any static global constructor. Related to issue #3487
This commit is contained in:
committed by
Christian Helmuth
parent
c8b7710e5d
commit
90a91f3536
@ -13,20 +13,18 @@
|
||||
|
||||
#include <lx_kit/env.h>
|
||||
|
||||
/*
|
||||
* Lx_kit enviroment instance
|
||||
*/
|
||||
static Genode::Constructible<Lx_kit::Env> _env;
|
||||
static Lx_kit::Env *_env_ptr;
|
||||
|
||||
|
||||
Lx_kit::Env &Lx_kit::env()
|
||||
{
|
||||
return *_env;
|
||||
return *_env_ptr;
|
||||
}
|
||||
|
||||
|
||||
Lx_kit::Env &Lx_kit::construct_env(Genode::Env &env)
|
||||
{
|
||||
_env.construct(env);
|
||||
return *_env;
|
||||
static Lx_kit::Env _env(env);
|
||||
_env_ptr = &_env;
|
||||
return _env;
|
||||
}
|
||||
|
@ -335,19 +335,26 @@ class Lx_kit::Malloc : public Lx::Malloc
|
||||
** Lx::Malloc implementation **
|
||||
*******************************/
|
||||
|
||||
static Genode::Constructible<Lx_kit::Slab_backend_alloc> _mem_backend_alloc;
|
||||
static Genode::Constructible<Lx_kit::Slab_backend_alloc> _dma_backend_alloc;
|
||||
static Genode::Constructible<Lx_kit::Malloc> _mem_alloc;
|
||||
static Genode::Constructible<Lx_kit::Malloc> _dma_alloc;
|
||||
static Lx_kit::Slab_backend_alloc *_mem_backend_alloc_ptr;
|
||||
static Lx_kit::Slab_backend_alloc *_dma_backend_alloc_ptr;
|
||||
|
||||
static Lx_kit::Malloc *_mem_alloc_ptr;
|
||||
static Lx_kit::Malloc *_dma_alloc_ptr;
|
||||
|
||||
|
||||
void Lx::malloc_init(Genode::Env &env, Genode::Allocator &md_alloc)
|
||||
{
|
||||
_mem_backend_alloc.construct(env, md_alloc, Genode::CACHED);
|
||||
_dma_backend_alloc.construct(env, md_alloc, Genode::UNCACHED);
|
||||
static Lx_kit::Slab_backend_alloc mem_backend_alloc(env, md_alloc, Genode::CACHED);
|
||||
static Lx_kit::Slab_backend_alloc dma_backend_alloc(env, md_alloc, Genode::UNCACHED);
|
||||
|
||||
_mem_alloc.construct(*_mem_backend_alloc, Genode::CACHED);
|
||||
_dma_alloc.construct(*_dma_backend_alloc, Genode::UNCACHED);
|
||||
_mem_backend_alloc_ptr = &mem_backend_alloc;
|
||||
_dma_backend_alloc_ptr = &dma_backend_alloc;
|
||||
|
||||
static Lx_kit::Malloc mem_alloc(mem_backend_alloc, Genode::CACHED);
|
||||
static Lx_kit::Malloc dma_alloc(dma_backend_alloc, Genode::UNCACHED);
|
||||
|
||||
_mem_alloc_ptr = &mem_alloc;
|
||||
_dma_alloc_ptr = &dma_alloc;
|
||||
}
|
||||
|
||||
|
||||
@ -355,22 +362,22 @@ void Lx::malloc_init(Genode::Env &env, Genode::Allocator &md_alloc)
|
||||
* Cached memory backend allocator
|
||||
*/
|
||||
Lx::Slab_backend_alloc &Lx::Slab_backend_alloc::mem() {
|
||||
return *_mem_backend_alloc; }
|
||||
return *_mem_backend_alloc_ptr; }
|
||||
|
||||
|
||||
/**
|
||||
* DMA memory backend allocator
|
||||
*/
|
||||
Lx::Slab_backend_alloc &Lx::Slab_backend_alloc::dma() {
|
||||
return *_dma_backend_alloc; }
|
||||
return *_dma_backend_alloc_ptr; }
|
||||
|
||||
|
||||
/**
|
||||
* Cached memory allocator
|
||||
*/
|
||||
Lx::Malloc &Lx::Malloc::mem() { return *_mem_alloc; }
|
||||
Lx::Malloc &Lx::Malloc::mem() { return *_mem_alloc_ptr; }
|
||||
|
||||
/**
|
||||
* DMA memory allocator
|
||||
*/
|
||||
Lx::Malloc &Lx::Malloc::dma() { return *_dma_alloc; }
|
||||
Lx::Malloc &Lx::Malloc::dma() { return *_dma_alloc_ptr; }
|
||||
|
Reference in New Issue
Block a user