diff --git a/base-nova/include/rm_session/client.h b/base-nova/include/rm_session/client.h new file mode 100644 index 0000000000..42673f5c70 --- /dev/null +++ b/base-nova/include/rm_session/client.h @@ -0,0 +1,59 @@ +/* + * \brief Client-side region manager session interface + * \author Christian Helmuth + * \author Alexander Boettcher + * \date 2006-07-11 + */ + +/* + * Copyright (C) 2006-2012 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__RM_SESSION__CLIENT_H_ +#define _INCLUDE__RM_SESSION__CLIENT_H_ + +#include +#include + +namespace Genode { + + struct Rm_session_client : Rpc_client + { + Dataspace_capability _rm_ds_cap; + + explicit Rm_session_client(Rm_session_capability session) + : Rpc_client(session) { } + + Local_addr attach(Dataspace_capability ds, size_t size, off_t offset, + bool use_local_addr, Local_addr local_addr, + bool executable = false) + { + return call(ds, size, offset, + use_local_addr, local_addr, + executable); + } + + void detach(Local_addr local_addr) { + call(local_addr); } + + Pager_capability add_client(Thread_capability thread) { + return call(thread); } + + void fault_handler(Signal_context_capability handler) { + call(handler); } + + State state() { + return call(); } + + Dataspace_capability dataspace() { + if (!_rm_ds_cap.valid()) + _rm_ds_cap = call(); + return _rm_ds_cap; + } + }; +} + +#endif /* _INCLUDE__RM_SESSION__CLIENT_H_ */