29#include <l4/cxx/type_traits>
45[[noreturn]]
inline void throw_error(
long err,
char const *extra =
"")
68long chksys(
long err,
char const *extra =
"",
long ret = 0)
93 throw_error(ret ? ret : l4_error_u(t, utcb), extra);
113{
return chksys(t, extra, utcb); }
117long chksys(
long ret,
long err,
char const *extra =
"")
144#if __cplusplus >= 201103L
153#if __cplusplus >= 201103L
154 return cxx::forward<T>(cap);
180 chksys(l4_error_u(tag, utcb), extra);
Exception for duplicate element insertions.
Exception for a failed lookup (element not found).
Exception signalling insufficient memory.
Exception for an abstract runtime error.
@ L4_EEXIST
Already exists.
@ L4_ENOENT
No such entity.
struct l4_utcb_t l4_utcb_t
Opaque type for the UTCB.
l4_utcb_t * l4_utcb(void) L4_NOTHROW L4_PURE
Get the UTCB address.
#define L4_UNLIKELY(x)
Expression is unlikely to execute.
Common L4 ABI Data Types.
long chksys(long err, char const *extra="", long ret=0)
Generate C++ exception on error.
T chkcap(T &&cap, char const *extra="", long err=-L4_ENOMEM)
Check for valid capability or raise C++ exception.
l4_msgtag_t chkipc(l4_msgtag_t tag, char const *extra="", l4_utcb_t *utcb=l4_utcb())
Test a message tag for IPC errors.
void throw_error(long err, char const *extra="")
Generate C++ exception.
Message tag data structure.
long label() const L4_NOTHROW
Get the protocol value.
unsigned has_error() const L4_NOTHROW
Test if flags indicate an error.