Introduction   API Reference   Files   Index  

ipc.h File Reference

Common IPC definitions. More...

#include <l4/sys/types.h>

Go to the source code of this file.

Data Structures

struct  l4_msg_t
 Structure to describe long IPC. More...
struct  l4_ipc_deceit_ids_t
 Structure used to describe destination and true source if a chief wants to deceit. More...

Defines

#define L4_IPC_NIL_DESCRIPTOR
 Nil message descriptor.
#define L4_IPC_SHORT_MSG
 Short IPC (register-only) message descriptor.
#define L4_IPC_SHORT_FPAGE
 Short flexpage IPC (register-only) message descriptor, message words are interpreted as send flexpage descriptor.
#define L4_IPC_STRING_SHIFT   8
 IPC string shift.
#define L4_IPC_DWORD_SHIFT   13
 IPC dword shift.
#define L4_IPC_FLAG_NEXT_PERIOD   0x10000
 next period flag
#define L4_IPC_DOPE(dwords, strings)
 Build IPC message dope.
#define L4_IPC_MAPMSG(address, size)
 Build short flexpage receive message descriptor.
#define L4_IPC_IOMAPMSG(port, iosize)
 Build short I/O flexpage receive message descriptor.
#define L4_IPC_CAPMAPMSG(taskno, order)
 Build short capability flexpage receive message descriptor.
#define L4_IPC_ERROR_MASK   0xF0
 IPC error mask.
#define L4_IPC_DECEIT_MASK   0x01
 Deceit mask.
#define L4_IPC_FPAGE_MASK   0x02
 Fpage mask.
#define L4_IPC_REDIRECT_MASK   0x04
 Redirect mask.
#define L4_IPC_SRC_MASK   0x08
 Source mask.
#define L4_IPC_SND_ERR_MASK   0x10
 Send error mask.
#define L4_IPC_IS_ERROR(x)
 Test if IPC error occurred.
#define L4_IPC_MSG_DECEITED(x)
 Test if received message was deceited by a chief task.
#define L4_IPC_MSG_REDIRECTED(x)
 Test if the message was redirected to a chief task.
#define L4_IPC_SRC_INSIDE(x)
 Test if the message comes from outside or inside the clan.
#define L4_IPC_SND_ERROR(x)
 Test if send operation failed.
#define L4_IPC_ERROR(x)
 Get IPC error from IPC result message dope.
#define L4_IPC_ENOT_EXISTENT   0x10
 Non-existing destination or source.
#define L4_IPC_RETIMEOUT   0x20
 Timeout during receive operation.
#define L4_IPC_SETIMEOUT   0x30
 Timeout during send operation.
#define L4_IPC_RECANCELED   0x40
 Receive operation canceled.
#define L4_IPC_SECANCELED   0x50
 Send operation canceled.
#define L4_IPC_REMAPFAILED   0x60
 Map flexpage failed in receive operation.
#define L4_IPC_SEMAPFAILED   0x70
 Map flexpage failed in send operation.
#define L4_IPC_RESNDPFTO   0x80
 Send-pagefault timeout in receive operation.
#define L4_IPC_SESNDPFTO   0x90
 Send-pagefault timeout in send operation.
#define L4_IPC_RERCVPFTO   0xA0
 Receive-pagefault timeout in receive operation.
#define L4_IPC_SERCVPFTO   0xB0
 Receive-pagefault timeout in send operation.
#define L4_IPC_REABORTED   0xC0
 Receive operation aborted.
#define L4_IPC_SEABORTED   0xD0
 Send operation aborted.
#define L4_IPC_REMSGCUT   0xE0
 Cut receive message (due to (a) message buffer is too small, (b) not enough strings are accepted, (c) at least one string buffer is too small).
#define L4_IPC_SEMSGCUT   0xF0
 Cut send message (due to (a) message buffer is too small, (b) not enough strings are accepted, (c) at least one string buffer is too small).
#define L4_IPC_SHORT_MSG_NODONATE
 Short IPC (register-only) message descriptor w/o donation.
#define L4_IPC_DECEIT   1
 IPC: deceit bit.
#define L4_IPC_OPEN_IPC   1
 IPC: open IPC.

Functions

int l4_ipc_call_tag (l4_threadid_t dest, const void *snd_msg, l4_umword_t snd_dword0, l4_umword_t snd_dword1, l4_msgtag_t tag, void *rcv_msg, l4_umword_t *rcv_dword0, l4_umword_t *rcv_dword1, l4_timeout_t timeout, l4_msgdope_t *result, l4_msgtag_t *rtag)
 IPC Call, usual blocking RPC, tagged version.
int l4_ipc_call (l4_threadid_t dest, const void *snd_msg, l4_umword_t snd_dword0, l4_umword_t snd_dword1, void *rcv_msg, l4_umword_t *rcv_dword0, l4_umword_t *rcv_dword1, l4_timeout_t timeout, l4_msgdope_t *result)
 IPC Call, usual blocking RPC.
int l4_ipc_reply_and_wait_tag (l4_threadid_t dest, const void *snd_msg, l4_umword_t snd_dword0, l4_umword_t snd_dword1, l4_msgtag_t tag, l4_threadid_t *src, void *rcv_msg, l4_umword_t *rcv_dword0, l4_umword_t *rcv_dword1, l4_timeout_t timeout, l4_msgdope_t *result, l4_msgtag_t *rtag)
 IPC reply and wait, send a reply to a client and wait for next message, tagged version.
int l4_ipc_reply_and_wait (l4_threadid_t dest, const void *snd_msg, l4_umword_t snd_dword0, l4_umword_t snd_dword1, l4_threadid_t *src, void *rcv_msg, l4_umword_t *rcv_dword0, l4_umword_t *rcv_dword1, l4_timeout_t timeout, l4_msgdope_t *result)
 IPC reply and wait, send a reply to a client and wait for next message.
int l4_ipc_wait_next_period (l4_threadid_t *src, void *rcv_msg, l4_umword_t *rcv_dword0, l4_umword_t *rcv_dword1, l4_timeout_t timeout, l4_msgdope_t *result)
 Wait for next period.
int l4_ipc_send_tag (l4_threadid_t dest, const void *snd_msg, l4_umword_t snd_dword0, l4_umword_t snd_dword1, l4_msgtag_t tag, l4_timeout_t timeout, l4_msgdope_t *result)
 IPC send, send a message to a thread, tagged version.
int l4_ipc_send (l4_threadid_t dest, const void *snd_msg, l4_umword_t snd_dword0, l4_umword_t snd_dword1, l4_timeout_t timeout, l4_msgdope_t *result)
 IPC send, send a message to a thread.
int l4_ipc_wait_tag (l4_threadid_t *src, void *rcv_msg, l4_umword_t *rcv_dword0, l4_umword_t *rcv_dword1, l4_timeout_t timeout, l4_msgdope_t *result, l4_msgtag_t *tag)
 IPC wait, wait for message from any source, tagged version.
int l4_ipc_wait (l4_threadid_t *src, void *rcv_msg, l4_umword_t *rcv_dword0, l4_umword_t *rcv_dword1, l4_timeout_t timeout, l4_msgdope_t *result)
 IPC wait, wait for message from any source.
int l4_ipc_receive_tag (l4_threadid_t src, void *rcv_msg, l4_umword_t *rcv_dword0, l4_umword_t *rcv_dword1, l4_timeout_t timeout, l4_msgdope_t *result, l4_msgtag_t *tag)
 IPC receive, wait for a message from a specified thread, tagged version.
int l4_ipc_receive (l4_threadid_t src, void *rcv_msg, l4_umword_t *rcv_dword0, l4_umword_t *rcv_dword1, l4_timeout_t timeout, l4_msgdope_t *result)
 IPC receive, wait for a message from a specified thread.
int l4_ipc_sleep (l4_timeout_t timeout)
 Sleep for an amount of time.
int l4_ipc_fpage_received (l4_msgdope_t msgdope)
 Check if received message contains flexpage.
int l4_ipc_is_fpage_granted (l4_fpage_t fp)
 Check if flexpage was granted.
int l4_ipc_is_fpage_writable (l4_fpage_t fp)
 Check if flexpage is writable.
long l4_is_rcv_map_descr (const void *msg)
 Return if message is fpage message.
long l4_is_long_rcv_descr (const void *msg)
 Return if receive message descriptor is a long IPC message descriptor.
long l4_is_long_snd_descr (const void *msg)
 Return if source message descriptor is a long IPC message descriptor.
const l4_msg_tl4_get_snd_msg_from_descr (const void *msg)
 Return message descriptor address from send message descriptor.
l4_msg_tl4_get_rcv_msg_from_descr (void *msg)
 Return message descriptor address from receive message descriptor.


Detailed Description

Common IPC definitions.

Definition in file L4API-l4v2/ipc.h.


Fiasco/L4 System Call C-Bindings Reference Manual,  © 1996-2008