OrionLibC
Barry Importing existing Orion LibC 03048a9 (2 years, 2 months ago)diff --git a/include/sys/ipc.h b/include/sys/ipc.h new file mode 100644 index 0000000..e81e077 --- /dev/null +++ b/include/sys/ipc.h @@ -0,0 +1,38 @@ +#ifndef _SYS_IPC_H +#define _SYS_IPC_H + +#include <stdint.h> +#include <sys/types.h> + +/* Processes */ +enum Process { + NO_PROCESS, + SYSTEM, + + ANY = 0xFFFFFFFF +}; + +/* Message encodings */ +typedef union MessageContent MessageContent; +union MessageContent { + /* Generics */ + char raw[16]; + void *ptr; + uint32_t num; +} __attribute__((__transparent_union__)); + +/* Structure for a message */ +typedef struct Message Message; +struct Message { + pid_t from; + uint16_t type; + MessageContent msg; + Message *next; +} __attribute__((packed)); + +Message *nb_send_msg(pid_t to, uint16_t type, MessageContent *msg); +Message *send_msg(pid_t to, uint16_t type, MessageContent *msg); +pid_t nb_recv_msg(Message *buf, pid_t from); +pid_t recv_msg(Message *buf, pid_t from); + +#endif