32#include <l4/sys/l4int.h>
321{
return (
l4_msg_regs_t*)((
char*)u + L4_UTCB_MSG_REGS_OFFSET); }
324{
return (
l4_buf_regs_t*)((
char*)u + L4_UTCB_BUF_REGS_OFFSET); }
330{
return (
l4_exc_regs_t*)((
char*)u + L4_UTCB_MSG_REGS_OFFSET); }
335 l4_utcb_br_u(u)->
bdr |= L4_UTCB_INHERIT_FPU;
337 l4_utcb_br_u(u)->
bdr &= ~L4_UTCB_INHERIT_FPU;
342#ifdef L4SYS_USE_UTCB_WRAP
343 return l4_utcb_wrap();
345 return l4_utcb_direct();
353{
return l4_utcb_mr_u(
l4_utcb()); }
356{
return l4_utcb_br_u(
l4_utcb()); }
359{
return l4_utcb_tcr_u(
l4_utcb()); }
362{
return l4_utcb_exc_u(
l4_utcb()); }
365{ l4_utcb_inherit_fpu_u(
l4_utcb(), switch_on); }
378 ((
union T*)(l4_utcb_br_u(utcb)->
br + pos))->t = val;
384{
return l4_timeout_abs_u(val, pos,
l4_utcb()); }
L4 compiler related defines.
unsigned long l4_umword_t
Unsigned machine word.
unsigned long l4_addr_t
Address type.
l4_uint64_t l4_kernel_clock_t
Kernel clock type.
unsigned long long l4_uint64_t
Unsigned 64bit value.
l4_timeout_s l4_timeout_abs(l4_kernel_clock_t pint, int br) L4_NOTHROW
Set an absolute timeout.
unsigned l4_utcb_mr64_idx(unsigned idx) L4_NOTHROW
Get index into 64bit message registers alias from native-sized index.
l4_msg_regs_t * l4_utcb_mr(void) L4_NOTHROW L4_PURE
Get the message-register block of a UTCB.
l4_thread_regs_t * l4_utcb_tcr(void) L4_NOTHROW L4_PURE
Get the thread-control-register block of a UTCB.
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.
l4_buf_regs_t * l4_utcb_br(void) L4_NOTHROW L4_PURE
Get the buffer-register block of a UTCB.
void l4_utcb_inherit_fpu(int switch_on) L4_NOTHROW
Enable or disable inheritance of FPU state to receiver.
l4_addr_t l4_utcb_exc_pfa(l4_exc_regs_t const *u) L4_NOTHROW
Function to get the L4 style page fault address out of an exception.
int l4_utcb_exc_is_ex_regs_exception(l4_exc_regs_t const *u) L4_NOTHROW
Check whether an exception IPC was triggered via l4_thread_ex_regs().
l4_exc_regs_t * l4_utcb_exc(void) L4_NOTHROW L4_PURE
Get the message-register block of a UTCB (for an exception IPC).
int l4_utcb_exc_is_pf(l4_exc_regs_t const *u) L4_NOTHROW
Check whether an exception IPC is a page fault.
l4_umword_t l4_utcb_exc_pc(l4_exc_regs_t const *u) L4_NOTHROW
Access function to get the program counter of the exception state.
l4_umword_t l4_utcb_exc_typeval(l4_exc_regs_t const *u) L4_NOTHROW
Get the value out of an exception UTCB that describes the type of exception.
void l4_utcb_exc_pc_set(l4_exc_regs_t *u, l4_addr_t pc) L4_NOTHROW
Set the program counter register in the exception state.
#define __END_DECLS
End section with C types and functions.
#define L4_CV
Define calling convention.
#define L4_NOTHROW
Mark a function declaration and definition as never throwing an exception.
#define L4_INLINE
L4 Inline function attribute.
#define __BEGIN_DECLS
Start section with C types and functions.
Common L4 ABI Data Types.
Encapsulation of the buffer-registers block in the UTCB.
l4_umword_t br[L4_UTCB_GENERIC_BUFFERS_SIZE]
Buffer registers.
l4_umword_t bdr
Buffer descriptor.
UTCB structure for exceptions.
Encapsulation of the thread-control-register block of the UTCB.
l4_umword_t free_marker
Kernel free marker.
l4_umword_t error
System call error codes.
l4_umword_t user[3]
User values (ignored and preserved by the kernel)
Basic timeout specification.
l4_uint16_t t
timeout value
Encapsulation of the message-register block in the UTCB.
l4_umword_t mr[L4_UTCB_GENERIC_DATA_SIZE]
Message registers.
l4_uint64_t mr64[L4_UTCB_GENERIC_DATA_SIZE/(sizeof(l4_uint64_t)/sizeof(l4_umword_t))]
Message registers 64bit alias.