// vi:set ft=cpp: -*- Mode: C++ -*- /** * \file * \brief IPC helper */ /* * (c) 2008-2009 Adam Lackorzynski , * Alexander Warg * economic rights: Technische Universität Dresden (Germany) * * 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 #include #include namespace L4 { #ifdef __EXCEPTIONS /** * \brief Throw an L4 IPC error as exception. * * \ingroup helper * \param o The client side object, for which the IPC was invoked. * \param err The IPC result code (error code). * \utcb{utcb} */ inline void throw_ipc_exception(L4::Cap const &o, l4_msgtag_t const &err, l4_utcb_t *utcb) { (void)o; if (err.has_error()) throw (L4::Com_error(l4_error_u(err, utcb))); } /** * \brief Throw an L4 IPC error as exception. * * \ingroup helper * \param o The client side object, for which the IPC was invoked. * \param err The IPC result code (error code). * \utcb{utcb} */ inline void throw_ipc_exception(void const *o, l4_msgtag_t const &err, l4_utcb_t *utcb) { throw_ipc_exception(L4::Cap(o), err, utcb); } #endif }