/* * \brief Component-local implementation of a RM session * \author Norman Feske * \date 2016-04-19 */ /* * Copyright (C) 2016-2017 Genode Labs GmbH * * This file is part of the Genode OS framework, which is distributed * under the terms of the GNU Affero General Public License version 3. */ #ifndef _INCLUDE__BASE__INTERNAL__LOCAL_RM_SESSION_H_ #define _INCLUDE__BASE__INTERNAL__LOCAL_RM_SESSION_H_ /* Genode includes */ #include #include /* base-internal includes */ #include #include #include namespace Genode { struct Local_rm_session; } struct Genode::Local_rm_session : Rm_session, Local_session { Allocator &md_alloc; Local_rm_session(Allocator &md_alloc, Id_space &id_space, Parent::Client::Id id) : Local_session(id_space, id, *this), md_alloc(md_alloc) { } Capability create(size_t size) override { Region_map *rm = new (md_alloc) Region_map_mmap(true, size); return Local_capability::local_cap(rm); } void destroy(Capability cap) override { Region_map *rm = Local_capability::deref(cap); Genode::destroy(md_alloc, rm); } }; #endif /* _INCLUDE__BASE__INTERNAL__LOCAL_RM_SESSION_H_ */