// vi:set ft=cpp: -*- Mode: C++ -*- /* * (c) 2014 Alexander Warg * * This file is part of TUD:OS and distributed under the terms of the * GNU General Public License 2. * Please see the COPYING-GPL-2 file for details. * * As a special exception, you may use this file as part of a free software * library without restriction. Specifically, if other files instantiate * templates or use macros or inline functions from this file, or you compile * this file and link it with other files to produce an executable, this * file does not by itself cause the resulting executable to be covered by * the GNU General Public License. This exception does not however * invalidate any other reasons why the executable file might be covered by * the GNU General Public License. */ #pragma once #pragma GCC system_header #include #include #include #include #include /** * \file */ namespace L4 { namespace Ipc { namespace Msg { //------------------------------------------------------------------------- /** * Generate the definition of an RPC stub. * * \param name The fully qualified method name to be implemented, this means * `class::method`. * * This macro generates the definition (implementation) for the given RPC * interface method. */ #define L4_RPC_DEF(name) \ template struct L4::Ipc::Msg::Rpc_call \ /// \cond //---------------------------------------------------- //Implementation of the RPC call template R L4_EXPORT Rpc_call:: call(L4::Cap cap, typename _Elem::arg_type ...a, l4_utcb_t *utcb) noexcept { return Rpc_inline_call::call(cap, a..., utcb); } /// \endcond } // namespace Msg } // namespace Ipc } // namespace L4