/* * \brief Connection to RM service * \author Norman Feske * \date 2008-08-22 */ /* * Copyright (C) 2008-2023 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__RM_SESSION__CONNECTION_H_ #define _INCLUDE__RM_SESSION__CONNECTION_H_ #include #include #include namespace Genode { struct Rm_connection; } struct Genode::Rm_connection : Connection, Rm_session_client { Rm_connection(Env &env) : Connection(env, Label(), Ram_quota { 64*1024 }, Args()), Rm_session_client(cap()) { } /** * Wrapper over 'create' that handles resource requests from the server */ Capability create(size_t size) override { enum { UPGRADE_ATTEMPTS = 16U }; return Genode::retry( [&] () { return Genode::retry( [&] () { return Rm_session_client::create(size); }, [&] () { upgrade_caps(2); }, UPGRADE_ATTEMPTS); }, [&] () { upgrade_ram(8*1024); }, UPGRADE_ATTEMPTS); } }; #endif /* _INCLUDE__RM_SESSION__CONNECTION_H_ */