/* * \brief Fiasco.OC specific capability mapping. * \author Stefan Kalkowski * \date 2012-02-22 */ /* * Copyright (C) 2012-2013 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 _CORE__INCLUDE__CAP_MAPPING_H_ #define _CORE__INCLUDE__CAP_MAPPING_H_ /* core includes */ #include #include namespace Genode { /** * A Cap_mapping embodies a capability of core, and its mapped * copy in another protection domain. */ class Cap_mapping : Noncopyable { private: /** * Helper function for construction purposes. * * Allocates a new capability id and Core_cap_index and inserts * it in the Cap_map. * * \return pointer to newly constructed Core_cap_index object */ inline Core_cap_index* _get_cap(); public: Native_capability local; /* reference to cap that is mapped */ Native_thread_id remote; /* index in cap-space of the other pd */ Cap_mapping(bool alloc=false, Native_thread_id r = Fiasco::L4_INVALID_CAP); Cap_mapping(Native_capability cap, Native_thread_id r = Fiasco::L4_INVALID_CAP); /** * Map the cap in local to corresponding task. * * \param task capability of task to map to */ void map(Native_task task); }; } #endif /* _CORE__INCLUDE__CAP_MAPPING_H_ */