#ifndef MQUEUE_H #define MQUEUE_H /* * This header file defines constants and function declarations used for * MINIX interprocess message queues. These are used primarily in file * mqueue.c */ #include #define MAX_RECEIVERS 4 #define MAX_MESSAGES 64 #define MAX_QUEUES 64 #define MAX_PAYLOAD 32 #define NAME_SIZE 32 #define DEFAULT_PRIO 0 #define EMPTY -1 #define NOT_EMPTY 1 typedef int mqd_t; typedef struct message_entity { u64_t timestamp; char msg[MAX_PAYLOAD]; endpoint_t src; endpoint_t dst[MAX_RECEIVERS]; unsigned int priority; } message_entity; typedef struct messageq { char name[NAME_SIZE]; int num_msgs; message_entity msge[MAX_MESSAGES]; int msg_slot_empty[MAX_MESSAGES]; } messageq; typedef struct message_queue { int num_queues; messageq msg[MAX_QUEUES]; int queue_slot_empty[MAX_QUEUES]; } message_queue; int initialize_message_queues(void); int deinitialize_message_queues(void); mqd_t mq_open(const char *name, int oflag); int mq_send(mqd_t mqdes, const char *msg_ptr, unsigned int msg_prio, endpoint_t src, endpoint_t dst[]); size_t mq_receive(mqd_t mqdes, char *msg_ptr, unsigned int msg_prio, endpoint_t dst); int mq_close(mqd_t mqdes); int clean_message_queue(mqd_t mqdes); int message_index_with_highprio(mqd_t mqdes, endpoint_t dst); #endif /* MQUEUE_H */