/* * \brief Connection to I/O-memory service * \author Norman Feske * \date 2008-08-22 */ /* * Copyright (C) 2008-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__IO_MEM_SESSION__CONNECTION_H_ #define _INCLUDE__IO_MEM_SESSION__CONNECTION_H_ #include #include namespace Genode { struct Io_mem_connection; } struct Genode::Io_mem_connection : Connection, Io_mem_session_client { /** * Issue session request * * \noapi */ Capability _session(Parent &, addr_t base, size_t size, bool write_combined) { return session("cap_quota=%u, ram_quota=6K, base=0x%p, size=0x%lx, wc=%s", CAP_QUOTA, base, size, write_combined ? "yes" : "no"); } /** * Constructor * * \param base physical base address of memory-mapped I/O resource * \param size size memory-mapped I/O resource * \param write_combined enable write-combined access to I/O memory */ Io_mem_connection(Env &env, addr_t base, size_t size, bool write_combined = false) : Connection(env, _session(env.parent(), base, size, write_combined)), Io_mem_session_client(cap()) { } /** * Constructor * * \noapi * \deprecated Use the constructor with 'Env &' as first * argument instead */ Io_mem_connection(addr_t base, size_t size, bool write_combined = false) __attribute__((deprecated)) : Connection(_session(*env_deprecated()->parent(), base, size, write_combined)), Io_mem_session_client(cap()) { } /** * Constructor * * \noapi * \deprecated Use the constructor with 'Env &' as first * argument instead * * This variant is solely meant to be called from deprecated functions. * It will be removed along with these functions. */ Io_mem_connection(bool, addr_t base, size_t size, bool write_combined = false) : Connection(_session(*env_deprecated()->parent(), base, size, write_combined)), Io_mem_session_client(cap()) { } }; #endif /* _INCLUDE__IO_MEM_SESSION__CONNECTION_H_ */