base: rename 'Volatile_object' to 'Reconstructible'

Fixes #2151
This commit is contained in:
Norman Feske
2016-12-01 17:37:08 +01:00
parent 6fa87e62dd
commit 25a7ea3d40
76 changed files with 421 additions and 383 deletions

View File

@ -44,7 +44,7 @@ class Genode::Platform_pd : public Address_space
Cnode _cspace_cnode_1st; Cnode _cspace_cnode_1st;
Lazy_volatile_object<Cnode> _cspace_cnode_2nd[1UL << CSPACE_SIZE_LOG2_1ST]; Constructible<Cnode> _cspace_cnode_2nd[1UL << CSPACE_SIZE_LOG2_1ST];
Native_capability _parent; Native_capability _parent;

View File

@ -16,7 +16,7 @@
/* Genode includes */ /* Genode includes */
#include <util/bit_allocator.h> #include <util/bit_allocator.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <base/log.h> #include <base/log.h>
#include <base/thread.h> #include <base/thread.h>
#include <base/session_label.h> #include <base/session_label.h>
@ -101,7 +101,7 @@ class Genode::Vm_space
* objects (where we cannot pass any arguments to the * objects (where we cannot pass any arguments to the
* constructors of the individual objects). * constructors of the individual objects).
*/ */
Lazy_volatile_object<Cnode> _cnode; Constructible<Cnode> _cnode;
public: public:

View File

@ -14,7 +14,7 @@
#ifndef _INCLUDE__BASE__ATTACHED_ROM_DATASPACE_H_ #ifndef _INCLUDE__BASE__ATTACHED_ROM_DATASPACE_H_
#define _INCLUDE__BASE__ATTACHED_ROM_DATASPACE_H_ #define _INCLUDE__BASE__ATTACHED_ROM_DATASPACE_H_
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <util/xml_node.h> #include <util/xml_node.h>
#include <base/attached_dataspace.h> #include <base/attached_dataspace.h>
#include <rom_session/connection.h> #include <rom_session/connection.h>
@ -35,7 +35,7 @@ class Genode::Attached_rom_dataspace
* always be valid once constructed, a 'Attached_rom_dataspace' has * always be valid once constructed, a 'Attached_rom_dataspace' has
* to handle the validity of the dataspace. * to handle the validity of the dataspace.
*/ */
Lazy_volatile_object<Attached_dataspace> _ds; Constructible<Attached_dataspace> _ds;
/** /**
* Try to attach the ROM module, ignore invalid dataspaces * Try to attach the ROM module, ignore invalid dataspaces

View File

@ -311,7 +311,7 @@ class Genode::Child : protected Rpc_object<Parent>,
Env_connection<Rom_connection> _binary { _policy, Env_connection<Rom_connection> _binary { _policy,
_id_space, Parent::Env::binary(), _policy.binary_name() }; _id_space, Parent::Env::binary(), _policy.binary_name() };
Lazy_volatile_object<Env_connection<Rom_connection> > _linker { _policy, Constructible<Env_connection<Rom_connection> > _linker { _policy,
_id_space, Parent::Env::linker(), _policy.linker_name() }; _id_space, Parent::Env::linker(), _policy.linker_name() };
/* call 'Child_policy::init' methods for the environment sessions */ /* call 'Child_policy::init' methods for the environment sessions */

View File

@ -14,7 +14,7 @@
#ifndef _INCLUDE__BASE__ENTRYPOINT_H_ #ifndef _INCLUDE__BASE__ENTRYPOINT_H_
#define _INCLUDE__BASE__ENTRYPOINT_H_ #define _INCLUDE__BASE__ENTRYPOINT_H_
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <util/noncopyable.h> #include <util/noncopyable.h>
#include <base/rpc_server.h> #include <base/rpc_server.h>
#include <base/signal.h> #include <base/signal.h>
@ -68,12 +68,12 @@ class Genode::Entrypoint : Genode::Noncopyable
Env &_env; Env &_env;
Volatile_object<Rpc_entrypoint> _rpc_ep; Reconstructible<Rpc_entrypoint> _rpc_ep;
Signal_proxy_component _signal_proxy {*this}; Signal_proxy_component _signal_proxy {*this};
Capability<Signal_proxy> _signal_proxy_cap = _rpc_ep->manage(&_signal_proxy); Capability<Signal_proxy> _signal_proxy_cap = _rpc_ep->manage(&_signal_proxy);
Volatile_object<Signal_receiver> _sig_rec; Reconstructible<Signal_receiver> _sig_rec;
void (*_suspended_callback) () = nullptr; void (*_suspended_callback) () = nullptr;
void (*_resumed_callback) () = nullptr; void (*_resumed_callback) () = nullptr;
@ -85,13 +85,13 @@ class Genode::Entrypoint : Genode::Noncopyable
* resume mechanism. * resume mechanism.
*/ */
void _handle_suspend() { } void _handle_suspend() { }
Lazy_volatile_object<Genode::Signal_handler<Entrypoint>> _suspend_dispatcher; Constructible<Genode::Signal_handler<Entrypoint>> _suspend_dispatcher;
void _dispatch_signal(Signal &sig); void _dispatch_signal(Signal &sig);
void _process_incoming_signals(); void _process_incoming_signals();
Lazy_volatile_object<Signal_proxy_thread> _signal_proxy_thread; Constructible<Signal_proxy_thread> _signal_proxy_thread;
friend class Startup; friend class Startup;

View File

@ -15,7 +15,7 @@
#define _INCLUDE__BASE__HEAP_H_ #define _INCLUDE__BASE__HEAP_H_
#include <util/list.h> #include <util/list.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <ram_session/ram_session.h> #include <ram_session/ram_session.h>
#include <region_map/region_map.h> #include <region_map/region_map.h>
#include <base/allocator_avl.h> #include <base/allocator_avl.h>
@ -71,7 +71,7 @@ class Genode::Heap : public Allocator
}; };
Lock _lock; Lock _lock;
Volatile_object<Allocator_avl> _alloc; /* local allocator */ Reconstructible<Allocator_avl> _alloc; /* local allocator */
Dataspace_pool _ds_pool; /* list of dataspaces */ Dataspace_pool _ds_pool; /* list of dataspaces */
size_t _quota_limit; size_t _quota_limit;
size_t _quota_used; size_t _quota_used;

View File

@ -83,7 +83,7 @@ class Genode::Local_connection : Local_connection_base
typedef typename CONNECTION::Session_type SESSION; typedef typename CONNECTION::Session_type SESSION;
Lazy_volatile_object <typename SESSION::Client> _client; Constructible <typename SESSION::Client> _client;
public: public:

View File

@ -16,7 +16,7 @@
#include <util/xml_generator.h> #include <util/xml_generator.h>
#include <util/list.h> #include <util/list.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <session/capability.h> #include <session/capability.h>
#include <base/id_space.h> #include <base/id_space.h>
#include <base/env.h> #include <base/env.h>
@ -60,17 +60,17 @@ class Genode::Session_state : public Parent::Client, public Parent::Server,
Factory *_factory = nullptr; Factory *_factory = nullptr;
Volatile_object<Id_space<Parent::Client>::Element> _id_at_client; Reconstructible<Id_space<Parent::Client>::Element> _id_at_client;
Args _args; Args _args;
Affinity _affinity; Affinity _affinity;
public: public:
Lazy_volatile_object<Id_space<Parent::Server>::Element> id_at_server; Constructible<Id_space<Parent::Server>::Element> id_at_server;
/* ID for session requests towards the parent */ /* ID for session requests towards the parent */
Lazy_volatile_object<Id_space<Parent::Client>::Element> id_at_parent; Constructible<Id_space<Parent::Client>::Element> id_at_parent;
Parent::Client parent_client; Parent::Client parent_client;

View File

@ -0,0 +1,171 @@
/*
* \brief Utility for in-place (re-)construction of objects
* \author Norman Feske
* \date 2014-01-10
*/
/*
* Copyright (C) 2014 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
#ifndef _INCLUDE__UTIL__RECONSTRUCTIBLE_H_
#define _INCLUDE__UTIL__RECONSTRUCTIBLE_H_
#include <util/construct_at.h>
#include <base/stdint.h>
#include <util/noncopyable.h>
namespace Genode {
template<typename> class Reconstructible;
template<typename> class Constructible;
}
/**
* Place holder for an object to be repeatedly constructed and destructed
*
* This class template acts as a smart pointer that refers to an object
* contained within the smart pointer itself. The contained object may be
* repeatedly constructed and destructed while staying in the same place. This
* is useful for replacing aggregated members during the lifetime of a compound
* object.
*
* \param MT type
*/
template <typename MT>
class Genode::Reconstructible : Noncopyable
{
private:
/**
* Static reservation of memory for the embedded object
*/
char _space[sizeof(MT)] __attribute__((aligned(sizeof(addr_t))));
/**
* True if the volatile object contains a constructed object
*/
bool _constructed = false;
template <typename... ARGS> void _do_construct(ARGS &&... args)
{
construct_at<MT>(_space, args...);
_constructed = true;
}
MT *_ptr() { return reinterpret_cast<MT *>(_space); }
MT const *_const_ptr() const { return reinterpret_cast<MT const *>(_space); }
void _check_constructed() const
{
if (!_constructed)
throw Deref_unconstructed_object();
}
protected:
/**
* Dummy type used as a hook for 'Constructible' to bypass the
* default constructor by invoking the 'Reconstructible(Lazy *)'
* constructor.
*/
struct Lazy { };
/**
* Constructor that omits the initial construction of the object
*/
Reconstructible(Lazy *) { }
public:
class Deref_unconstructed_object { };
/**
* Constructor
*
* The arguments are forwarded to the constructor of the embedded
* object.
*/
template <typename... ARGS>
Reconstructible(ARGS &&... args)
{
_do_construct(args...);
}
~Reconstructible() { destruct(); }
/**
* Construct new object in place
*
* If the 'Reconstructible' already hosts a constructed object, the old
* object will be destructed first.
*/
template <typename... ARGS>
void construct(ARGS &&... args)
{
destruct();
_do_construct(args...);
}
/**
* Destruct object
*/
void destruct()
{
if (!_constructed)
return;
/* invoke destructor */
_ptr()->~MT();
_constructed = false;
}
/**
* Return true of volatile object contains a constructed object
*/
bool constructed() const { return _constructed; }
/**
* Return true of volatile object contains a constructed object
*
* \deprecated use 'constructed' instead
*/
bool is_constructed() const { return constructed(); }
/**
* Access contained object
*/
MT *operator -> () { _check_constructed(); return _ptr(); }
MT const *operator -> () const { _check_constructed(); return _const_ptr(); }
MT &operator * () { _check_constructed(); return *_ptr(); }
MT const &operator * () const { _check_constructed(); return *_const_ptr(); }
void print(Output &out) const
{
if (_constructed)
_const_ptr()->print(out);
else
out.out_string("<unconstructed>");
}
};
/**
* Reconstructible object that holds no initially constructed object
*/
template <typename MT>
struct Genode::Constructible : Reconstructible<MT>
{
template <typename... ARGS>
Constructible(ARGS &&... args)
:
Reconstructible<MT>((typename Reconstructible<MT>::Lazy *)nullptr)
{ }
};
#endif /* _INCLUDE__UTIL__RECONSTRUCTIBLE_H_ */

View File

@ -2,6 +2,8 @@
* \brief Utility for manual in-place construction of objects * \brief Utility for manual in-place construction of objects
* \author Norman Feske * \author Norman Feske
* \date 2014-01-10 * \date 2014-01-10
*
* \deprecated use 'util/reconstructible.h' instead
*/ */
/* /*
@ -14,158 +16,23 @@
#ifndef _INCLUDE__UTIL__VOLATILE_OBJECT_H_ #ifndef _INCLUDE__UTIL__VOLATILE_OBJECT_H_
#define _INCLUDE__UTIL__VOLATILE_OBJECT_H_ #define _INCLUDE__UTIL__VOLATILE_OBJECT_H_
#include <util/construct_at.h> #include <util/reconstructible.h>
#include <base/stdint.h>
#include <util/noncopyable.h> #warning "'util/volatile_object.h' is deprecated, use 'util/reconstructible.h' instead (see https://github.com/genodelabs/genode/issues/2151)"
namespace Genode { namespace Genode {
template<typename> class Volatile_object;
template<typename> class Lazy_volatile_object; template <typename T>
struct Volatile_object : Reconstructible<T>
{
using Reconstructible<T>::Reconstructible;
};
template <typename T>
struct Lazy_volatile_object : Constructible<T>
{
using Constructible<T>::Constructible;
};
} }
/**
* Place holder for an object to be repeatedly constructed and destructed
*
* This class template acts as a smart pointer that refers to an object
* contained within the smart pointer itself. The contained object may be
* repeatedly constructed and destructed while staying in the same place. This
* is useful for replacing aggregated members during the lifetime of a compound
* object.
*
* \param MT type
*/
template <typename MT>
class Genode::Volatile_object : Noncopyable
{
private:
/**
* Static reservation of memory for the embedded object
*/
char _space[sizeof(MT)] __attribute__((aligned(sizeof(addr_t))));
/**
* True if the volatile object contains a constructed object
*/
bool _constructed = false;
template <typename... ARGS> void _do_construct(ARGS &&... args)
{
construct_at<MT>(_space, args...);
_constructed = true;
}
MT *_ptr() { return reinterpret_cast<MT *>(_space); }
MT const *_const_ptr() const { return reinterpret_cast<MT const *>(_space); }
void _check_constructed() const
{
if (!_constructed)
throw Deref_unconstructed_object();
}
protected:
/**
* Dummy type used as a hook for 'Lazy_volatile_object' to bypass the
* default constructor by invoking the 'Volatile_object(Lazy *)'
* constructor.
*/
struct Lazy { };
/**
* Constructor that omits the initial construction of the object
*/
Volatile_object(Lazy *) { }
public:
class Deref_unconstructed_object { };
/**
* Constructor
*
* The arguments are forwarded to the constructor of the embedded
* object.
*/
template <typename... ARGS>
Volatile_object(ARGS &&... args)
{
_do_construct(args...);
}
~Volatile_object() { destruct(); }
/**
* Construct new object in place
*
* If the 'Volatile_object' already hosts a constructed object, the old
* object will be destructed first.
*/
template <typename... ARGS>
void construct(ARGS &&... args)
{
destruct();
_do_construct(args...);
}
/**
* Destruct object
*/
void destruct()
{
if (!_constructed)
return;
/* invoke destructor */
_ptr()->~MT();
_constructed = false;
}
/**
* Return true of volatile object contains a constructed object
*/
bool constructed() const { return _constructed; }
/**
* Return true of volatile object contains a constructed object
*
* \deprecated use 'constructed' instead
*/
bool is_constructed() const { return constructed(); }
/**
* Access contained object
*/
MT *operator -> () { _check_constructed(); return _ptr(); }
MT const *operator -> () const { _check_constructed(); return _const_ptr(); }
MT &operator * () { _check_constructed(); return *_ptr(); }
MT const &operator * () const { _check_constructed(); return *_const_ptr(); }
void print(Output &out) const
{
if (_constructed)
_const_ptr()->print(out);
else
out.out_string("<unconstructed>");
}
};
/**
* Volatile object that holds no initially constructed object
*/
template <typename MT>
struct Genode::Lazy_volatile_object : Volatile_object<MT>
{
template <typename... ARGS>
Lazy_volatile_object(ARGS &&... args)
:
Volatile_object<MT>((typename Volatile_object<MT>::Lazy *)0)
{ }
};
#endif /* _INCLUDE__UTIL__VOLATILE_OBJECT_H_ */ #endif /* _INCLUDE__UTIL__VOLATILE_OBJECT_H_ */

View File

@ -302,7 +302,7 @@ int main()
Genode::size_t const ram_quota = platform()->ram_alloc()->avail() - 224*1024; Genode::size_t const ram_quota = platform()->ram_alloc()->avail() - 224*1024;
log("", ram_quota / (1024*1024), " MiB RAM assigned to init"); log("", ram_quota / (1024*1024), " MiB RAM assigned to init");
static Volatile_object<Core_child> static Reconstructible<Core_child>
init(services, *env()->ram_session(), env()->ram_session_cap(), init(services, *env()->ram_session(), env()->ram_session_cap(),
ram_quota, core_cpu, core_cpu_cap); ram_quota, core_cpu, core_cpu_cap);

View File

@ -58,7 +58,7 @@ namespace {
void block() { _sig_rec.wait_for_signal(); } void block() { _sig_rec.wait_for_signal(); }
}; };
Lazy_volatile_object<Blockade> _session_blockade; Constructible<Blockade> _session_blockade;
Env(Genode::Entrypoint &ep) : _ep(ep) { env_ptr = this; } Env(Genode::Entrypoint &ep) : _ep(ep) { env_ptr = this; }

View File

@ -96,7 +96,7 @@ class Log_console : public Console
void reconnect() void reconnect()
{ {
/* /*
* We cannot use a 'Volatile_object' because we have to skip * We cannot use a 'Reconstructible' because we have to skip
* the object destruction inside a freshly forked process. * the object destruction inside a freshly forked process.
* Otherwise, the attempt to destruct the capability contained * Otherwise, the attempt to destruct the capability contained
* in the 'Log' object would result in an inconsistent ref counter * in the 'Log' object would result in an inconsistent ref counter

View File

@ -18,7 +18,7 @@
#include <base/thread.h> #include <base/thread.h>
#include <base/sleep.h> #include <base/sleep.h>
#include <base/trace/events.h> #include <base/trace/events.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
/* base-internal includes */ /* base-internal includes */
#include <base/internal/globals.h> #include <base/internal/globals.h>
@ -37,7 +37,7 @@ class Signal_handler_thread : Thread, Lock
* thread because on some platforms (e.g., Fiasco.OC), the calling * thread because on some platforms (e.g., Fiasco.OC), the calling
* thread context is used for implementing the signal-source protocol. * thread context is used for implementing the signal-source protocol.
*/ */
Lazy_volatile_object<Signal_source_client> _signal_source; Constructible<Signal_source_client> _signal_source;
void entry() void entry()
{ {
@ -76,11 +76,11 @@ class Signal_handler_thread : Thread, Lock
/* /*
* The signal-handler thread will be constructed before global constructors are * The signal-handler thread will be constructed before global constructors are
* called and, consequently, must not be a global static object. Otherwise, the * called and, consequently, must not be a global static object. Otherwise, the
* Lazy_volatile_object constructor will be executed twice. * 'Constructible' constructor will be executed twice.
*/ */
static Lazy_volatile_object<Signal_handler_thread> & signal_handler_thread() static Constructible<Signal_handler_thread> & signal_handler_thread()
{ {
static Lazy_volatile_object<Signal_handler_thread> inst; static Constructible<Signal_handler_thread> inst;
return inst; return inst;
} }

View File

@ -18,7 +18,7 @@
#include <base/env.h> #include <base/env.h>
#include <base/heap.h> #include <base/heap.h>
#include <util/string.h> #include <util/string.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
/* base-internal includes */ /* base-internal includes */
#include <base/internal/globals.h> #include <base/internal/globals.h>

View File

@ -76,7 +76,7 @@ struct Linker::File
struct Linker::Elf_file : File struct Linker::Elf_file : File
{ {
Env &env; Env &env;
Lazy_volatile_object<Rom_connection> rom_connection; Constructible<Rom_connection> rom_connection;
Rom_session_client rom; Rom_session_client rom;
Ram_dataspace_capability ram_cap[Phdr::MAX_PHDR]; Ram_dataspace_capability ram_cap[Phdr::MAX_PHDR];
bool const loaded; bool const loaded;

View File

@ -20,7 +20,7 @@
#include <region_map/client.h> #include <region_map/client.h>
#include <base/allocator_avl.h> #include <base/allocator_avl.h>
#include <util/retry.h> #include <util/retry.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
/* base-internal includes */ /* base-internal includes */
#include <base/internal/page_size.h> #include <base/internal/page_size.h>
@ -60,7 +60,7 @@ class Linker::Region_map
public: public:
typedef Lazy_volatile_object<Region_map> Constructible_region_map; typedef Constructible<Region_map> Constructible_region_map;
static Constructible_region_map &r(); static Constructible_region_map &r();

View File

@ -17,7 +17,7 @@
#include <base/exception.h> #include <base/exception.h>
#include <base/env.h> #include <base/env.h>
#include <base/shared_object.h> #include <base/shared_object.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <util/fifo.h> #include <util/fifo.h>
#include <util/misc_math.h> #include <util/misc_math.h>
#include <util/string.h> #include <util/string.h>

View File

@ -89,7 +89,7 @@ class Linker::Elf_object : public Object, public Fifo<Elf_object>::Element
/* /*
* Optional ELF file, skipped for initial 'Ld' initialization * Optional ELF file, skipped for initial 'Ld' initialization
*/ */
Lazy_volatile_object<Elf_file> _elf_file; Constructible<Elf_file> _elf_file;
bool _object_init(Object::Name const &name, Elf::Addr reloc_base) bool _object_init(Object::Name const &name, Elf::Addr reloc_base)
@ -557,9 +557,9 @@ class Linker::Config
}; };
static Genode::Lazy_volatile_object<Heap> &heap() static Genode::Constructible<Heap> &heap()
{ {
return *unmanaged_singleton<Lazy_volatile_object<Heap>>(); return *unmanaged_singleton<Constructible<Heap>>();
} }

View File

@ -18,7 +18,7 @@
#include <base/component.h> #include <base/component.h>
#include <base/heap.h> #include <base/heap.h>
#include <base/attached_rom_dataspace.h> #include <base/attached_rom_dataspace.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <cpu_session/connection.h> #include <cpu_session/connection.h>
#include <cpu_thread/client.h> #include <cpu_thread/client.h>
@ -44,7 +44,7 @@ struct Helper : Thread
void entry() void entry()
{ {
Lazy_volatile_object<Helper> helper[CHILDREN]; Constructible<Helper> helper[CHILDREN];
for (unsigned i = 0; i < CHILDREN; ++i) for (unsigned i = 0; i < CHILDREN; ++i)
helper[i].construct(_env); helper[i].construct(_env);
@ -65,7 +65,7 @@ static void test_stack_alloc(Env &env)
*/ */
enum { HELPER = 10, CHILDREN = 9 }; enum { HELPER = 10, CHILDREN = 9 };
Lazy_volatile_object<Helper<CHILDREN> > helper[HELPER]; Constructible<Helper<CHILDREN> > helper[HELPER];
for (unsigned i = 0; i < HELPER; ++i) helper[i].construct(env); for (unsigned i = 0; i < HELPER; ++i) helper[i].construct(env);
for (unsigned i = 0; i < HELPER; ++i) helper[i]->start(); for (unsigned i = 0; i < HELPER; ++i) helper[i]->start();

View File

@ -21,7 +21,7 @@
#include <dataspace/capability.h> #include <dataspace/capability.h>
#include <framebuffer_session/framebuffer_session.h> #include <framebuffer_session/framebuffer_session.h>
#include <timer_session/connection.h> #include <timer_session/connection.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <os/attached_dataspace.h> #include <os/attached_dataspace.h>
#include <os/attached_ram_dataspace.h> #include <os/attached_ram_dataspace.h>
#include <os/attached_rom_dataspace.h> #include <os/attached_rom_dataspace.h>
@ -78,7 +78,7 @@ class Framebuffer::Session_component : public Genode::Rpc_object<Session>
{ {
private: private:
template <typename T> using Lazy = Genode::Lazy_volatile_object<T>; template <typename T> using Lazy = Genode::Constructible<T>;
Driver _driver; Driver _driver;
Genode::Attached_rom_dataspace &_config; Genode::Attached_rom_dataspace &_config;

View File

@ -1,4 +1,4 @@
/** /*
* \brief Helper class to make the Genode Env globally available * \brief Helper class to make the Genode Env globally available
* \author Sebastian Sumpf * \author Sebastian Sumpf
* \date 2016-06-21 * \date 2016-06-21
@ -17,7 +17,7 @@
#include <base/attached_rom_dataspace.h> #include <base/attached_rom_dataspace.h>
#include <base/env.h> #include <base/env.h>
#include <base/heap.h> #include <base/heap.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
namespace Lx_kit { namespace Lx_kit {
class Env; class Env;

View File

@ -16,7 +16,7 @@
#define _LX_KIT__INTERNAL__IO_PORT_H_ #define _LX_KIT__INTERNAL__IO_PORT_H_
/* Genode includes */ /* Genode includes */
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <io_port_session/client.h> #include <io_port_session/client.h>
namespace Lx { class Io_port; } namespace Lx { class Io_port; }
@ -28,7 +28,7 @@ class Lx::Io_port
unsigned _base = 0; unsigned _base = 0;
unsigned _size = 0; unsigned _size = 0;
Genode::Io_port_session_capability _cap; Genode::Io_port_session_capability _cap;
Genode::Lazy_volatile_object<Genode::Io_port_session_client> _port; Genode::Constructible<Genode::Io_port_session_client> _port;
bool _valid(unsigned port) { bool _valid(unsigned port) {
return _cap.valid() && port >= _base && port < _base + _size; } return _cap.valid() && port >= _base && port < _base + _size; }

View File

@ -17,7 +17,7 @@
#include <base/tslab.h> #include <base/tslab.h>
#include <os/server.h> #include <os/server.h>
#include <timer_session/connection.h> #include <timer_session/connection.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
/* Linux kit includes */ /* Linux kit includes */
#include <lx_kit/internal/list.h> #include <lx_kit/internal/list.h>

View File

@ -27,7 +27,7 @@
#include <irq_session/connection.h> #include <irq_session/connection.h>
#include <util/list.h> #include <util/list.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
namespace Platform { struct Device; } namespace Platform { struct Device; }
@ -35,7 +35,7 @@ namespace Platform { struct Device; }
struct Platform::Device : Platform::Abstract_device, Genode::List<Device>::Element struct Platform::Device : Platform::Abstract_device, Genode::List<Device>::Element
{ {
unsigned irq_num; unsigned irq_num;
Genode::Lazy_volatile_object<Genode::Irq_connection> irq_connection; Genode::Constructible<Genode::Irq_connection> irq_connection;
Device(unsigned irq) : irq_num(irq) { } Device(unsigned irq) : irq_num(irq) { }

View File

@ -16,7 +16,7 @@
/* /*
* Lx_kit enviroment instance * Lx_kit enviroment instance
*/ */
static Genode::Lazy_volatile_object<Lx_kit::Env> _env; static Genode::Constructible<Lx_kit::Env> _env;
Lx_kit::Env &Lx_kit::env() Lx_kit::Env &Lx_kit::env()

View File

@ -20,7 +20,7 @@
#include <nitpicker_gfx/box_painter.h> #include <nitpicker_gfx/box_painter.h>
#include <nitpicker_gfx/texture_painter.h> #include <nitpicker_gfx/texture_painter.h>
#include <os/attached_dataspace.h> #include <os/attached_dataspace.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <os/texture_rgb565.h> #include <os/texture_rgb565.h>
#include <os/texture_rgb888.h> #include <os/texture_rgb888.h>
@ -102,7 +102,7 @@ struct Backdrop::Main
} }
}; };
Lazy_volatile_object<Buffer> buffer; Constructible<Buffer> buffer;
Nitpicker::Session::View_handle view_handle = nitpicker.create_view(); Nitpicker::Session::View_handle view_handle = nitpicker.create_view();

View File

@ -15,7 +15,7 @@
#define _CONFIG_H_ #define _CONFIG_H_
/* Genode includes */ /* Genode includes */
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <os/session_policy.h> #include <os/session_policy.h>
#include <util/color.h> #include <util/color.h>
@ -28,7 +28,7 @@ namespace Decorator {
typedef Genode::String<200> Window_title; typedef Genode::String<200> Window_title;
using Genode::Allocator; using Genode::Allocator;
using Genode::Volatile_object; using Genode::Reconstructible;
} }
@ -114,7 +114,7 @@ class Decorator::Config
Genode::Allocator &_alloc; Genode::Allocator &_alloc;
Volatile_object<Buffered_xml> _buffered_config; Reconstructible<Buffered_xml> _buffered_config;
/** /**
* Maximum number of configured window controls * Maximum number of configured window controls

View File

@ -61,7 +61,7 @@ class Launcher::Fading_dialog : private Input_event_handler
Slave::Connection<Rom_connection> _hover_rom; Slave::Connection<Rom_connection> _hover_rom;
Lazy_volatile_object<Attached_dataspace> _hover_ds; Constructible<Attached_dataspace> _hover_ds;
/* hovered element reported by menu view */ /* hovered element reported by menu view */
Slave::Connection<Report::Connection> _hover_report; Slave::Connection<Report::Connection> _hover_report;

View File

@ -14,7 +14,7 @@
/* Genode includes */ /* Genode includes */
#include <base/component.h> #include <base/component.h>
#include <decorator/xml_utils.h> #include <decorator/xml_utils.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <os/attached_rom_dataspace.h> #include <os/attached_rom_dataspace.h>
#include <nitpicker_session/connection.h> #include <nitpicker_session/connection.h>

View File

@ -81,7 +81,7 @@ class Launcher::Panel_dialog : Input_event_handler, Dialog_generator,
Xml_node xml() const { return _xml; } Xml_node xml() const { return _xml; }
}; };
Lazy_volatile_object<Buffered_xml> _config; Constructible<Buffered_xml> _config;
List<Element> _elements; List<Element> _elements;

View File

@ -26,7 +26,7 @@ struct Menu_view::Main
{ {
Nitpicker::Connection nitpicker; Nitpicker::Connection nitpicker;
Lazy_volatile_object<Nitpicker_buffer> buffer; Constructible<Nitpicker_buffer> buffer;
Nitpicker::Session::View_handle view_handle = nitpicker.create_view(); Nitpicker::Session::View_handle view_handle = nitpicker.create_view();

View File

@ -27,7 +27,7 @@
#include <os/pixel_rgb565.h> #include <os/pixel_rgb565.h>
#include <os/pixel_alpha8.h> #include <os/pixel_alpha8.h>
#include <os/texture_rgb888.h> #include <os/texture_rgb888.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <nitpicker_gfx/text_painter.h> #include <nitpicker_gfx/text_painter.h>
namespace Menu_view { namespace Menu_view {

View File

@ -56,7 +56,7 @@ struct Decorator::Main : Window_factory_base
Signal_handler<Main> _pointer_handler = { Signal_handler<Main> _pointer_handler = {
_env.ep(), *this, &Main::_handle_pointer_update }; _env.ep(), *this, &Main::_handle_pointer_update };
Lazy_volatile_object<Attached_rom_dataspace> _pointer; Constructible<Attached_rom_dataspace> _pointer;
Window_base::Hover _hover; Window_base::Hover _hover;

View File

@ -19,7 +19,7 @@
#include <decorator/window.h> #include <decorator/window.h>
#include <nitpicker_session/connection.h> #include <nitpicker_session/connection.h>
#include <os/attached_dataspace.h> #include <os/attached_dataspace.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
/* demo includes */ /* demo includes */
#include <util/lazy_value.h> #include <util/lazy_value.h>
@ -232,14 +232,14 @@ class Decorator::Window : public Window_base, public Animator::Item
* decorations. * decorations.
*/ */
Nitpicker::Connection _nitpicker_top_bottom; Nitpicker::Connection _nitpicker_top_bottom;
Genode::Lazy_volatile_object<Nitpicker_buffer> _buffer_top_bottom; Genode::Constructible<Nitpicker_buffer> _buffer_top_bottom;
/** /**
* Nitpicker session that contains the left and right window * Nitpicker session that contains the left and right window
* decorations. * decorations.
*/ */
Nitpicker::Connection _nitpicker_left_right; Nitpicker::Connection _nitpicker_left_right;
Genode::Lazy_volatile_object<Nitpicker_buffer> _buffer_left_right; Genode::Constructible<Nitpicker_buffer> _buffer_left_right;
Nitpicker_view _bottom_view { _nitpicker, _nitpicker_top_bottom }, Nitpicker_view _bottom_view { _nitpicker, _nitpicker_top_bottom },
_right_view { _nitpicker, _nitpicker_left_right }, _right_view { _nitpicker, _nitpicker_left_right },

View File

@ -22,7 +22,7 @@
#include <os/pixel_rgb565.h> #include <os/pixel_rgb565.h>
#include <os/pixel_alpha8.h> #include <os/pixel_alpha8.h>
#include <os/static_root.h> #include <os/static_root.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <nitpicker_gfx/texture_painter.h> #include <nitpicker_gfx/texture_painter.h>
#include <util/lazy_value.h> #include <util/lazy_value.h>
#include <timer_session/connection.h> #include <timer_session/connection.h>
@ -49,8 +49,8 @@ namespace Nit_fader {
using Genode::Attached_ram_dataspace; using Genode::Attached_ram_dataspace;
using Genode::Texture; using Genode::Texture;
using Genode::Surface; using Genode::Surface;
using Genode::Volatile_object; using Genode::Reconstructible;
using Genode::Lazy_volatile_object; using Genode::Constructible;
typedef Genode::Pixel_rgb565 Pixel_rgb565; typedef Genode::Pixel_rgb565 Pixel_rgb565;
typedef Genode::Pixel_alpha8 Pixel_alpha8; typedef Genode::Pixel_alpha8 Pixel_alpha8;
@ -140,7 +140,7 @@ class Nit_fader::Framebuffer_session_component
Nitpicker::Connection &_nitpicker; Nitpicker::Connection &_nitpicker;
Src_buffer &_src_buffer; Src_buffer &_src_buffer;
Lazy_volatile_object<Dst_buffer> _dst_buffer; Constructible<Dst_buffer> _dst_buffer;
Lazy_value<int> _fade; Lazy_value<int> _fade;
@ -263,7 +263,7 @@ class Nit_fader::Nitpicker_session_component
Server::Entrypoint &_ep; Server::Entrypoint &_ep;
Volatile_object<Src_buffer> _src_buffer { Area(1, 1), false }; Reconstructible<Src_buffer> _src_buffer { Area(1, 1), false };
Nitpicker::Connection _nitpicker; Nitpicker::Connection _nitpicker;

View File

@ -17,7 +17,7 @@
#include <framebuffer_session/client.h> #include <framebuffer_session/client.h>
#include <cap_session/connection.h> #include <cap_session/connection.h>
#include <os/attached_rom_dataspace.h> #include <os/attached_rom_dataspace.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <util/xml_node.h> #include <util/xml_node.h>
/* local includes */ /* local includes */

View File

@ -21,7 +21,7 @@
#include <os/attached_rom_dataspace.h> #include <os/attached_rom_dataspace.h>
#include <os/reporter.h> #include <os/reporter.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <util/xml_node.h> #include <util/xml_node.h>
#include <acpica/acpica.h> #include <acpica/acpica.h>
@ -111,7 +111,7 @@ struct Acpica::Main
Genode::Attached_rom_dataspace config { env, "config" }; Genode::Attached_rom_dataspace config { env, "config" };
Genode::Signal_handler<Acpica::Main> sci_irq; Genode::Signal_handler<Acpica::Main> sci_irq;
Genode::Lazy_volatile_object<Genode::Irq_connection> sci_conn; Genode::Constructible<Genode::Irq_connection> sci_conn;
Acpica::Reportstate * report = nullptr; Acpica::Reportstate * report = nullptr;

View File

@ -12,7 +12,7 @@
*/ */
/* Genode includes */ /* Genode includes */
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <acpica/acpica.h> #include <acpica/acpica.h>
#include <platform_session/client.h> #include <platform_session/client.h>
@ -46,7 +46,7 @@ struct Acpica::Env
: env(env), heap(heap) { } : env(env), heap(heap) { }
}; };
static Genode::Lazy_volatile_object<Acpica::Env> instance; static Genode::Constructible<Acpica::Env> instance;
Genode::Allocator & Acpica::heap() { return instance->heap; } Genode::Allocator & Acpica::heap() { return instance->heap; }

View File

@ -26,7 +26,7 @@ namespace Genode {
/** /**
* Return singleton instance of config * Return singleton instance of config
*/ */
Volatile_object<Config> &config(); Reconstructible<Config> &config();
} }

View File

@ -14,7 +14,7 @@
#ifndef _INCLUDE__OS__DYNAMIC_ROM_SESSION_H_ #ifndef _INCLUDE__OS__DYNAMIC_ROM_SESSION_H_
#define _INCLUDE__OS__DYNAMIC_ROM_SESSION_H_ #define _INCLUDE__OS__DYNAMIC_ROM_SESSION_H_
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <base/rpc_server.h> #include <base/rpc_server.h>
#include <base/session_label.h> #include <base/session_label.h>
#include <base/attached_ram_dataspace.h> #include <base/attached_ram_dataspace.h>
@ -64,7 +64,7 @@ class Genode::Dynamic_rom_session : public Rpc_object<Rom_session>
size_t _ds_size = 4096; size_t _ds_size = 4096;
Lazy_volatile_object<Attached_ram_dataspace> _ds; Constructible<Attached_ram_dataspace> _ds;
void _notify_client() void _notify_client()
{ {

View File

@ -14,7 +14,7 @@
#ifndef _INCLUDE__OS__REPORTER_H_ #ifndef _INCLUDE__OS__REPORTER_H_
#define _INCLUDE__OS__REPORTER_H_ #define _INCLUDE__OS__REPORTER_H_
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <os/attached_dataspace.h> #include <os/attached_dataspace.h>
#include <report_session/connection.h> #include <report_session/connection.h>
#include <util/xml_generator.h> #include <util/xml_generator.h>
@ -47,7 +47,7 @@ class Genode::Reporter : Noncopyable
: report(name, buffer_size) { } : report(name, buffer_size) { }
}; };
Lazy_volatile_object<Connection> _conn; Constructible<Connection> _conn;
/** /**
* Return size of report buffer * Return size of report buffer

View File

@ -15,13 +15,13 @@
#define _INCLUDE__REPORT_ROM__ROM_MODULE_H_ #define _INCLUDE__REPORT_ROM__ROM_MODULE_H_
/* Genode includes */ /* Genode includes */
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <os/session_policy.h> #include <os/session_policy.h>
#include <base/attached_ram_dataspace.h> #include <base/attached_ram_dataspace.h>
namespace Rom { namespace Rom {
using Genode::size_t; using Genode::size_t;
using Genode::Lazy_volatile_object; using Genode::Constructible;
using Genode::Attached_ram_dataspace; using Genode::Attached_ram_dataspace;
class Module; class Module;
@ -138,7 +138,7 @@ struct Rom::Module : Module_list::Element, Readable_module
* allow for the immediate release of the underlying backing store when * allow for the immediate release of the underlying backing store when
* the module gets destructed. * the module gets destructed.
*/ */
Lazy_volatile_object<Attached_ram_dataspace> _ds; Constructible<Attached_ram_dataspace> _ds;
/** /**
* Content size, which may less than the capacilty of '_ds'. * Content size, which may less than the capacilty of '_ds'.

View File

@ -49,7 +49,7 @@ class Rom::Session_component : public Genode::Rpc_object<Genode::Rom_session>,
throw Genode::Root::Invalid_args(); } throw Genode::Root::Invalid_args(); }
} }
Lazy_volatile_object<Genode::Attached_ram_dataspace> _ds; Constructible<Genode::Attached_ram_dataspace> _ds;
size_t _content_size = 0; size_t _content_size = 0;

View File

@ -0,0 +1,67 @@
build "core init test/reconstructible"
create_boot_directory
install_config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="RAM"/>
<service name="CPU"/>
<service name="RM"/>
<service name="PD"/>
<service name="LOG"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<start name="test-reconstructible">
<resource name="RAM" quantum="1M"/>
</start>
</config>
}
build_boot_image "core init test-reconstructible"
append qemu_args "-nographic -m 64"
run_genode_until {child "test-reconstructible" exited with exit value 0.*\n} 10
grep_output {-> test-reconstructible}
compare_output_to {
[init -> test-reconstructible] --- test-reconstructible started ---
[init -> test-reconstructible] construct Object 1
[init -> test-reconstructible] construct Object 2
[init -> test-reconstructible] -- create Compound object --
[init -> test-reconstructible] construct Member_with_reference
[init -> test-reconstructible] construct Compound
[init -> test-reconstructible] compound.member.constructed returns 1
[init -> test-reconstructible] compound.lazy_member.constructed returns 0
[init -> test-reconstructible] -- construct lazy member --
[init -> test-reconstructible] construct Member_with_reference
[init -> test-reconstructible] compound.lazy_member.constructed returns 1
[init -> test-reconstructible] -- call method on member (with reference to Object 1) --
[init -> test-reconstructible] const method called on Object 1
[init -> test-reconstructible] -- reconstruct member with Object 2 as reference --
[init -> test-reconstructible] destruct Member_with_reference
[init -> test-reconstructible] construct Member_with_reference
[init -> test-reconstructible] -- call method on member --
[init -> test-reconstructible] const method called on Object 2
[init -> test-reconstructible] -- destruct member --
[init -> test-reconstructible] destruct Member_with_reference
[init -> test-reconstructible] -- try to call method on member, catch exception --
[init -> test-reconstructible] got exception, as expected
[init -> test-reconstructible] -- destruct Compound and Objects 1 and 2 --
[init -> test-reconstructible] destruct Compound
[init -> test-reconstructible] destruct Member_with_reference
[init -> test-reconstructible] destruct Object 2
[init -> test-reconstructible] destruct Object 1
[init -> test-reconstructible] -- construct Throwing object
[init -> test-reconstructible] construct Throwing -> don't throw
[init -> test-reconstructible] destruct Throwing
[init -> test-reconstructible] construct Throwing -> throw exception
[init -> test-reconstructible] -- catched exception as expected
[init -> test-reconstructible] --- test-reconstructible finished ---
}

View File

@ -1,67 +0,0 @@
build "core init test/volatile_object"
create_boot_directory
install_config {
<config>
<parent-provides>
<service name="ROM"/>
<service name="RAM"/>
<service name="CPU"/>
<service name="RM"/>
<service name="PD"/>
<service name="LOG"/>
</parent-provides>
<default-route>
<any-service> <parent/> <any-child/> </any-service>
</default-route>
<start name="test-volatile_object">
<resource name="RAM" quantum="1M"/>
</start>
</config>
}
build_boot_image "core init test-volatile_object"
append qemu_args "-nographic -m 64"
run_genode_until {child "test-volatile_object" exited with exit value 0.*\n} 10
grep_output {-> test-volatile_object}
compare_output_to {
[init -> test-volatile_object] --- test-volatile_object started ---
[init -> test-volatile_object] construct Object 1
[init -> test-volatile_object] construct Object 2
[init -> test-volatile_object] -- create Compound object --
[init -> test-volatile_object] construct Member_with_reference
[init -> test-volatile_object] construct Compound
[init -> test-volatile_object] compound.member.constructed returns 1
[init -> test-volatile_object] compound.lazy_member.constructed returns 0
[init -> test-volatile_object] -- construct lazy member --
[init -> test-volatile_object] construct Member_with_reference
[init -> test-volatile_object] compound.lazy_member.constructed returns 1
[init -> test-volatile_object] -- call method on member (with reference to Object 1) --
[init -> test-volatile_object] const method called on Object 1
[init -> test-volatile_object] -- reconstruct member with Object 2 as reference --
[init -> test-volatile_object] destruct Member_with_reference
[init -> test-volatile_object] construct Member_with_reference
[init -> test-volatile_object] -- call method on member --
[init -> test-volatile_object] const method called on Object 2
[init -> test-volatile_object] -- destruct member --
[init -> test-volatile_object] destruct Member_with_reference
[init -> test-volatile_object] -- try to call method on member, catch exception --
[init -> test-volatile_object] got exception, as expected
[init -> test-volatile_object] -- destruct Compound and Objects 1 and 2 --
[init -> test-volatile_object] destruct Compound
[init -> test-volatile_object] destruct Member_with_reference
[init -> test-volatile_object] destruct Object 2
[init -> test-volatile_object] destruct Object 1
[init -> test-volatile_object] -- construct Throwing object
[init -> test-volatile_object] construct Throwing -> don't throw
[init -> test-volatile_object] destruct Throwing
[init -> test-volatile_object] construct Throwing -> throw exception
[init -> test-volatile_object] -- catched exception as expected
[init -> test-volatile_object] --- test-volatile_object finished ---
}

View File

@ -16,7 +16,7 @@
#include <base/attached_rom_dataspace.h> #include <base/attached_rom_dataspace.h>
#include <util/print_lines.h> #include <util/print_lines.h>
#include <base/component.h> #include <base/component.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
namespace Rom_logger { struct Main; } namespace Rom_logger { struct Main; }
@ -27,7 +27,7 @@ struct Rom_logger::Main
Genode::Attached_rom_dataspace _config_rom { _env, "config" }; Genode::Attached_rom_dataspace _config_rom { _env, "config" };
Genode::Lazy_volatile_object<Genode::Attached_rom_dataspace> _rom_ds; Genode::Constructible<Genode::Attached_rom_dataspace> _rom_ds;
typedef Genode::String<100> Rom_name; typedef Genode::String<100> Rom_name;

View File

@ -18,7 +18,7 @@
#include <os/attached_rom_dataspace.h> #include <os/attached_rom_dataspace.h>
#include <util/print_lines.h> #include <util/print_lines.h>
#include <os/server.h> #include <os/server.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <base/heap.h> #include <base/heap.h>
#include <base/allocator_avl.h> #include <base/allocator_avl.h>
@ -49,7 +49,7 @@ struct Rom_to_file::Main
File_system::Connection _fs; File_system::Connection _fs;
Lazy_volatile_object<Attached_rom_dataspace> _rom_ds; Constructible<Attached_rom_dataspace> _rom_ds;
typedef Genode::String<100> Rom_name; typedef Genode::String<100> Rom_name;

View File

@ -11,7 +11,7 @@
* under the terms of the GNU General Public License version 2. * under the terms of the GNU General Public License version 2.
*/ */
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <util/xml_node.h> #include <util/xml_node.h>
#include <util/color.h> #include <util/color.h>
#include <os/attached_rom_dataspace.h> #include <os/attached_rom_dataspace.h>
@ -199,7 +199,7 @@ struct Main
Label label; Label label;
Color color; Color color;
Genode::Volatile_object<Status_bar_buffer> status_bar_buffer { nitpicker }; Genode::Reconstructible<Status_bar_buffer> status_bar_buffer { nitpicker };
Nitpicker::Session::View_handle const view { nitpicker.create_view() }; Nitpicker::Session::View_handle const view { nitpicker.create_view() };

View File

@ -48,7 +48,7 @@ struct Xray_trigger::Main
/** /**
* Hover model as reported by nitpicker * Hover model as reported by nitpicker
*/ */
Genode::Lazy_volatile_object<Genode::Attached_rom_dataspace> _hover_ds; Genode::Constructible<Genode::Attached_rom_dataspace> _hover_ds;
/** /**
* Reporter for posting the result of our policy decision * Reporter for posting the result of our policy decision

View File

@ -1122,7 +1122,7 @@ class Acpi_table
/* BIOS range to scan for RSDP */ /* BIOS range to scan for RSDP */
enum { BIOS_BASE = 0xe0000, BIOS_SIZE = 0x20000 }; enum { BIOS_BASE = 0xe0000, BIOS_SIZE = 0x20000 };
Genode::Lazy_volatile_object<Genode::Attached_io_mem_dataspace> _mmio; Genode::Constructible<Genode::Attached_io_mem_dataspace> _mmio;
/** /**
* Search for RSDP pointer signature in area * Search for RSDP pointer signature in area

View File

@ -18,7 +18,7 @@
#include <os/attached_mmio.h> #include <os/attached_mmio.h>
#include <os/server.h> #include <os/server.h>
#include <util/retry.h> #include <util/retry.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
static bool constexpr verbose = false; static bool constexpr verbose = false;

View File

@ -181,9 +181,9 @@ struct Ata_driver : Port_driver
typedef ::String<Identity::Serial_number> Serial_string; typedef ::String<Identity::Serial_number> Serial_string;
typedef ::String<Identity::Model_number> Model_string; typedef ::String<Identity::Model_number> Model_string;
Genode::Lazy_volatile_object<Identity> info; Genode::Constructible<Identity> info;
Genode::Lazy_volatile_object<Serial_string> serial; Genode::Constructible<Serial_string> serial;
Genode::Lazy_volatile_object<Model_string> model; Genode::Constructible<Model_string> model;
Io_command *io_cmd = nullptr; Io_command *io_cmd = nullptr;
Block::Packet_descriptor pending[32]; Block::Packet_descriptor pending[32];

View File

@ -14,7 +14,7 @@
#include <irq_session/connection.h> #include <irq_session/connection.h>
#include <platform_session/connection.h> #include <platform_session/connection.h>
#include <platform_device/client.h> #include <platform_device/client.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <ahci.h> #include <ahci.h>
@ -36,8 +36,8 @@ struct X86_hba : Platform::Hba
Platform::Connection pci { env }; Platform::Connection pci { env };
Platform::Device_capability pci_device_cap; Platform::Device_capability pci_device_cap;
Lazy_volatile_object<Platform::Device_client> pci_device; Constructible<Platform::Device_client> pci_device;
Lazy_volatile_object<Irq_session_client> irq; Constructible<Irq_session_client> irq;
addr_t res_base; addr_t res_base;
size_t res_size; size_t res_size;

View File

@ -12,7 +12,7 @@
*/ */
/* Genode includes */ /* Genode includes */
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <os/attached_io_mem_dataspace.h> #include <os/attached_io_mem_dataspace.h>
#include <os/attached_ram_dataspace.h> #include <os/attached_ram_dataspace.h>
#include <os/static_root.h> #include <os/static_root.h>
@ -37,7 +37,7 @@ class Framebuffer::Session_component : public Genode::Rpc_object<Framebuffer::Se
size_t const _width; size_t const _width;
size_t const _height; size_t const _height;
Lazy_volatile_object<Attached_ram_dataspace> _bb_mem; Constructible<Attached_ram_dataspace> _bb_mem;
Attached_io_mem_dataspace _fb_mem; Attached_io_mem_dataspace _fb_mem;
Timer::Connection _timer; Timer::Connection _timer;

View File

@ -37,7 +37,7 @@ class Platform::Irq_session_component : public Genode::Rpc_object<Genode::Irq_se
Genode::Irq_sigh _irq_sigh; Genode::Irq_sigh _irq_sigh;
Genode::Irq_session::Info _msi_info; Genode::Irq_session::Info _msi_info;
Genode::Lazy_volatile_object<Genode::Irq_connection> _irq_conn; Genode::Constructible<Genode::Irq_connection> _irq_conn;
public: public:

View File

@ -14,7 +14,7 @@
#include <base/component.h> #include <base/component.h>
#include <base/env.h> #include <base/env.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <os/attached_rom_dataspace.h> #include <os/attached_rom_dataspace.h>
@ -35,11 +35,11 @@ struct Platform::Main
Genode::Env &_env; Genode::Env &_env;
Genode::Sliced_heap sliced_heap { _env.ram(), _env.rm() }; Genode::Sliced_heap sliced_heap { _env.ram(), _env.rm() };
Genode::Lazy_volatile_object<Genode::Attached_rom_dataspace> acpi_rom; Genode::Constructible<Genode::Attached_rom_dataspace> acpi_rom;
Genode::Lazy_volatile_object<Platform::Root> root; Genode::Constructible<Platform::Root> root;
Genode::Lazy_volatile_object<Genode::Attached_rom_dataspace> system_state; Genode::Constructible<Genode::Attached_rom_dataspace> system_state;
Genode::Lazy_volatile_object<Genode::Attached_rom_dataspace> acpi_ready; Genode::Constructible<Genode::Attached_rom_dataspace> acpi_ready;
Genode::Signal_handler<Platform::Main> _acpi_report; Genode::Signal_handler<Platform::Main> _acpi_report;
Genode::Signal_handler<Platform::Main> _system_report; Genode::Signal_handler<Platform::Main> _system_report;

View File

@ -42,7 +42,7 @@ class Platform::Device_component : public Genode::Rpc_object<Platform::Device>,
unsigned short _irq_line; unsigned short _irq_line;
Irq_session_component *_irq_session = nullptr; Irq_session_component *_irq_session = nullptr;
Genode::Lazy_volatile_object<Genode::Io_mem_connection> _io_mem_config_extended; Genode::Constructible<Genode::Io_mem_connection> _io_mem_config_extended;
class Io_mem : public Genode::Io_mem_connection, class Io_mem : public Genode::Io_mem_connection,
public Genode::List<Io_mem>::Element public Genode::List<Io_mem>::Element

View File

@ -22,7 +22,7 @@
#include <util/mmio.h> #include <util/mmio.h>
#include <util/retry.h> #include <util/retry.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
/* os */ /* os */
#include <io_mem_session/connection.h> #include <io_mem_session/connection.h>
@ -84,7 +84,7 @@ class Platform::Rmrr : public Genode::List<Platform::Rmrr>::Element
Genode::Io_mem_dataspace_capability _cap; Genode::Io_mem_dataspace_capability _cap;
Genode::List<Bdf> _bdf_list; Genode::List<Bdf> _bdf_list;
Genode::Lazy_volatile_object<Genode::Io_mem_connection> _io_mem; Genode::Constructible<Genode::Io_mem_connection> _io_mem;
public: public:

View File

@ -80,12 +80,12 @@ Config::Config()
{ } { }
Volatile_object<Config> &Genode::config() Reconstructible<Config> &Genode::config()
{ {
static bool config_failed = false; static bool config_failed = false;
if (!config_failed) { if (!config_failed) {
try { try {
static Volatile_object<Config> config_inst; static Reconstructible<Config> config_inst;
return config_inst; return config_inst;
} catch (Genode::Rom_connection::Rom_connection_failed) { } catch (Genode::Rom_connection::Rom_connection_failed) {
Genode::error("Could not obtain config file"); Genode::error("Could not obtain config file");

View File

@ -16,7 +16,7 @@
#include <log_session/connection.h> #include <log_session/connection.h>
#include <vfs/single_file_system.h> #include <vfs/single_file_system.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
namespace Vfs { class Log_file_system; } namespace Vfs { class Log_file_system; }
@ -28,8 +28,8 @@ class Vfs::Log_file_system : public Single_file_system
typedef Genode::String<64> Label; typedef Genode::String<64> Label;
Label _label; Label _label;
Genode::Lazy_volatile_object<Genode::Log_connection> _log_connection; Genode::Constructible<Genode::Log_connection> _log_connection;
Genode::Lazy_volatile_object<Genode::Log_session_client> _log_client; Genode::Constructible<Genode::Log_session_client> _log_client;
Genode::Log_session & _log_session(Genode::Env &env) Genode::Log_session & _log_session(Genode::Env &env)
{ {

View File

@ -12,7 +12,7 @@
*/ */
/* Genode includes */ /* Genode includes */
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <util/arg_string.h> #include <util/arg_string.h>
#include <base/heap.h> #include <base/heap.h>
#include <base/component.h> #include <base/component.h>
@ -30,7 +30,7 @@ namespace Dynamic_rom {
using Genode::Rpc_object; using Genode::Rpc_object;
using Genode::Sliced_heap; using Genode::Sliced_heap;
using Genode::Env; using Genode::Env;
using Genode::Lazy_volatile_object; using Genode::Constructible;
using Genode::Signal_context_capability; using Genode::Signal_context_capability;
using Genode::Signal_handler; using Genode::Signal_handler;
using Genode::Xml_node; using Genode::Xml_node;
@ -54,7 +54,7 @@ class Dynamic_rom::Session_component : public Rpc_object<Genode::Rom_session>
unsigned _last_content_idx = ~0; unsigned _last_content_idx = ~0;
Signal_context_capability _sigh; Signal_context_capability _sigh;
Lazy_volatile_object<Genode::Attached_ram_dataspace> _ram_ds; Constructible<Genode::Attached_ram_dataspace> _ram_ds;
void _notify_client() void _notify_client()
{ {

View File

@ -167,7 +167,7 @@ class Loader::Session_component : public Rpc_object<Session>
Signal_context_capability view_ready_sigh; Signal_context_capability view_ready_sigh;
Lazy_volatile_object<Nitpicker::Session_component> session; Constructible<Nitpicker::Session_component> session;
Local_nitpicker_factory(Entrypoint &ep, Ram_session &ram) Local_nitpicker_factory(Entrypoint &ep, Ram_session &ram)
: _ep(ep), _ram(ram) { } : _ep(ep), _ram(ram) { }
@ -215,7 +215,7 @@ class Loader::Session_component : public Rpc_object<Session>
Local_nitpicker_factory _nitpicker_factory { _env.ep(), _local_ram }; Local_nitpicker_factory _nitpicker_factory { _env.ep(), _local_ram };
Local_nitpicker_service _nitpicker_service { _nitpicker_factory }; Local_nitpicker_service _nitpicker_service { _nitpicker_factory };
Signal_context_capability _fault_sigh; Signal_context_capability _fault_sigh;
Lazy_volatile_object<Child> _child; Constructible<Child> _child;
/** /**
* Return virtual nitpicker session component * Return virtual nitpicker session component

View File

@ -29,7 +29,7 @@ namespace Genode {
Attached_ram_dataspace _fg; Attached_ram_dataspace _fg;
Attached_ram_dataspace _bg; Attached_ram_dataspace _bg;
Lazy_volatile_object<Attached_rom_dataspace> _parent_rom; Constructible<Attached_rom_dataspace> _parent_rom;
bool _bg_has_pending_data; bool _bg_has_pending_data;

View File

@ -18,13 +18,13 @@
#include <net/ipv4.h> #include <net/ipv4.h>
#include <net/ethernet.h> #include <net/ethernet.h>
#include <util/avl_tree.h> #include <util/avl_tree.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
namespace Net { namespace Net {
class Arp_cache; class Arp_cache;
class Arp_cache_entry; class Arp_cache_entry;
using Arp_cache_entry_slot = Genode::Lazy_volatile_object<Arp_cache_entry>; using Arp_cache_entry_slot = Genode::Constructible<Arp_cache_entry>;
} }

View File

@ -1132,7 +1132,7 @@ struct Nitpicker::Main
Framebuffer_screen(Framebuffer::Session &fb) : framebuffer(fb) { } Framebuffer_screen(Framebuffer::Session &fb) : framebuffer(fb) { }
}; };
Genode::Volatile_object<Framebuffer_screen> fb_screen = { framebuffer }; Genode::Reconstructible<Framebuffer_screen> fb_screen = { framebuffer };
void handle_fb_mode(); void handle_fb_mode();
@ -1150,7 +1150,7 @@ struct Nitpicker::Main
* on the first call of 'handle_config'. * on the first call of 'handle_config'.
*/ */
Genode::Heap domain_registry_heap { env.ram(), env.rm() }; Genode::Heap domain_registry_heap { env.ram(), env.rm() };
Genode::Volatile_object<Domain_registry> domain_registry { Genode::Reconstructible<Domain_registry> domain_registry {
domain_registry_heap, Genode::Xml_node("<config/>") }; domain_registry_heap, Genode::Xml_node("<config/>") };
User_state user_state = { global_keys, fb_screen->screen.size() }; User_state user_state = { global_keys, fb_screen->screen.size() };

View File

@ -12,7 +12,7 @@
*/ */
/* Genode includes */ /* Genode includes */
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <util/arg_string.h> #include <util/arg_string.h>
#include <util/xml_generator.h> #include <util/xml_generator.h>
#include <base/heap.h> #include <base/heap.h>
@ -27,7 +27,7 @@ namespace Rom_filter {
using Genode::Rpc_object; using Genode::Rpc_object;
using Genode::Sliced_heap; using Genode::Sliced_heap;
using Genode::env; using Genode::env;
using Genode::Lazy_volatile_object; using Genode::Constructible;
using Genode::Xml_generator; using Genode::Xml_generator;
using Genode::size_t; using Genode::size_t;
@ -61,7 +61,7 @@ class Rom_filter::Session_component : public Rpc_object<Genode::Rom_session>,
Session_list &_sessions; Session_list &_sessions;
Lazy_volatile_object<Genode::Attached_ram_dataspace> _ram_ds; Constructible<Genode::Attached_ram_dataspace> _ram_ds;
public: public:
@ -157,7 +157,7 @@ struct Rom_filter::Main : Input_rom_registry::Input_rom_changed_fn,
Input_rom_registry _input_rom_registry { *env()->heap(), _ep, *this }; Input_rom_registry _input_rom_registry { *env()->heap(), _ep, *this };
Genode::Lazy_volatile_object<Genode::Attached_ram_dataspace> _xml_ds; Genode::Constructible<Genode::Attached_ram_dataspace> _xml_ds;
size_t _xml_output_len = 0; size_t _xml_output_len = 0;

View File

@ -47,7 +47,7 @@ class Track : Thread_deprecated<8192>
{ {
private: private:
Lazy_volatile_object<Audio_out::Connection> _audio_out[CHN_CNT]; Constructible<Audio_out::Connection> _audio_out[CHN_CNT];
String<64> const _name; String<64> const _name;

View File

@ -45,7 +45,7 @@ class Click
{ {
private: private:
Lazy_volatile_object<Audio_out::Connection> _audio_out[CHANNELS]; Constructible<Audio_out::Connection> _audio_out[CHANNELS];
Attached_rom_dataspace _sample_ds; Attached_rom_dataspace _sample_ds;
char const * const _base = _sample_ds.local_addr<char const>(); char const * const _base = _sample_ds.local_addr<char const>();

View File

@ -165,7 +165,7 @@ void Component::construct(Genode::Env &env)
log("--- bomb started ---"); log("--- bomb started ---");
/* try to create timer session, if it fails, bomb is our parent */ /* try to create timer session, if it fails, bomb is our parent */
static Lazy_volatile_object<Timer::Connection> timer; static Constructible<Timer::Connection> timer;
try { timer.construct(env); } catch (Parent::Service_denied) { } try { timer.construct(env); } catch (Parent::Service_denied) { }
if (timer.constructed()) if (timer.constructed())

View File

@ -141,7 +141,7 @@ struct Faulting_child_test
{ {
static char const *name() { return "failure detection in immediate child"; } static char const *name() { return "failure detection in immediate child"; }
Lazy_volatile_object<Test_child> _child; Constructible<Test_child> _child;
void start_iteration(Env &env, Signal_context_capability fault_sigh) void start_iteration(Env &env, Signal_context_capability fault_sigh)
{ {
@ -158,7 +158,7 @@ struct Faulting_loader_child_test
{ {
static char const *name() { return "failure detection in loaded child"; } static char const *name() { return "failure detection in loaded child"; }
Lazy_volatile_object<Loader::Connection> loader; Constructible<Loader::Connection> loader;
void start_iteration(Env &env, Signal_context_capability fault_sigh) void start_iteration(Env &env, Signal_context_capability fault_sigh)
{ {
@ -201,7 +201,7 @@ struct Faulting_loader_grand_child_test
static size_t config_size() { return strlen(config()); } static size_t config_size() { return strlen(config()); }
Lazy_volatile_object<Loader::Connection> loader; Constructible<Loader::Connection> loader;
void start_iteration(Env &env, Signal_context_capability fault_sigh) void start_iteration(Env &env, Signal_context_capability fault_sigh)
{ {
@ -227,9 +227,9 @@ struct Main
{ {
Env &_env; Env &_env;
Lazy_volatile_object<Iterative_test<Faulting_child_test> > _test_1; Constructible<Iterative_test<Faulting_child_test> > _test_1;
Lazy_volatile_object<Iterative_test<Faulting_loader_child_test> > _test_2; Constructible<Iterative_test<Faulting_loader_child_test> > _test_2;
Lazy_volatile_object<Iterative_test<Faulting_loader_grand_child_test> > _test_3; Constructible<Iterative_test<Faulting_loader_grand_child_test> > _test_3;
Signal_handler<Main> _test_1_finished_handler { Signal_handler<Main> _test_1_finished_handler {
_env.ep(), *this, &Main::_handle_test_1_finished }; _env.ep(), *this, &Main::_handle_test_1_finished };

View File

@ -19,14 +19,14 @@
#include <dataspace/client.h> #include <dataspace/client.h>
#include <framebuffer_session/connection.h> #include <framebuffer_session/connection.h>
#include <os/attached_dataspace.h> #include <os/attached_dataspace.h>
#include <util/volatile_object.h> #include <util/reconstructible.h>
class Test_environment class Test_environment
{ {
private: private:
using Ds = Genode::Lazy_volatile_object<Genode::Attached_dataspace>; using Ds = Genode::Constructible<Genode::Attached_dataspace>;
enum Color { enum Color {
BLACK = 0x0, BLACK = 0x0,

View File

@ -1,5 +1,5 @@
/* /*
* \brief Test for 'Volatile_object' * \brief Test for 'Reconstructible'
* \author Norman Feske * \author Norman Feske
* \date 2013-01-10 * \date 2013-01-10
*/ */
@ -12,11 +12,11 @@
*/ */
/* Genode includes */ /* Genode includes */
#include <util/volatile_object.h> #include <util/reconstructible.h>
#include <base/log.h> #include <base/log.h>
using Genode::Volatile_object; using Genode::Reconstructible;
using Genode::Lazy_volatile_object; using Genode::Constructible;
using Genode::log; using Genode::log;
@ -59,8 +59,8 @@ struct Member_with_reference
struct Compound struct Compound
{ {
Volatile_object<Member_with_reference> member; Reconstructible<Member_with_reference> member;
Lazy_volatile_object<Member_with_reference> lazy_member; Constructible<Member_with_reference> lazy_member;
Compound(Object &object) Compound(Object &object)
: :
@ -115,7 +115,7 @@ int main(int, char **)
{ {
using namespace Genode; using namespace Genode;
log("--- test-volatile_object started ---"); log("--- test-reconstructible started ---");
{ {
Object object_1(1); Object object_1(1);
@ -149,7 +149,7 @@ int main(int, char **)
log("-- try to call method on member, catch exception --"); log("-- try to call method on member, catch exception --");
try { try {
call_const_method(compound); } call_const_method(compound); }
catch (typename Volatile_object<Member_with_reference>::Deref_unconstructed_object) { catch (typename Reconstructible<Member_with_reference>::Deref_unconstructed_object) {
log("got exception, as expected"); } log("got exception, as expected"); }
log("-- destruct Compound and Objects 1 and 2 --"); log("-- destruct Compound and Objects 1 and 2 --");
@ -159,14 +159,14 @@ int main(int, char **)
log("-- construct Throwing object"); log("-- construct Throwing object");
Bool const b_false(false), b_true(true); Bool const b_false(false), b_true(true);
Volatile_object<Throwing> inst(b_false); Reconstructible<Throwing> inst(b_false);
inst.construct(b_true); inst.construct(b_true);
Genode::error("expected contructor to throw"); Genode::error("expected contructor to throw");
} catch (int i) { } catch (int i) {
log("-- catched exception as expected"); log("-- catched exception as expected");
} }
log("--- test-volatile_object finished ---"); log("--- test-reconstructible finished ---");
return 0; return 0;
} }

View File

@ -1,3 +1,3 @@
TARGET = test-volatile_object TARGET = test-reconstructible
SRC_CC = main.cc SRC_CC = main.cc
LIBS = base LIBS = base

View File

@ -117,7 +117,7 @@ class Noux_connection
/* /*
* Obtain new noux connection. Note that we cannot reconstruct * Obtain new noux connection. Note that we cannot reconstruct
* the connection via a 'Volatile_object' because this would * the connection via a 'Reconstructible' because this would
* result in an inconsistent referernce count when attempting * result in an inconsistent referernce count when attempting
* to destruct the session capability in the just-cleared * to destruct the session capability in the just-cleared
* capability space. * capability space.

View File

@ -94,12 +94,12 @@ class Noux::Rom_session_component : public Rpc_object<Rom_session>
~Vfs_dataspace() { root_dir.release(name.string(), ds); } ~Vfs_dataspace() { root_dir.release(name.string(), ds); }
}; };
Lazy_volatile_object<Vfs_dataspace> _rom_from_vfs; Constructible<Vfs_dataspace> _rom_from_vfs;
/** /**
* Wrapped ROM session at core * Wrapped ROM session at core
*/ */
Lazy_volatile_object<Rom_connection> _rom_from_parent; Constructible<Rom_connection> _rom_from_parent;
Dataspace_capability _init_ds_cap(Name const &name) Dataspace_capability _init_ds_cap(Name const &name)
{ {