xref: /haiku/src/system/libroot/posix/sys/xsi_msg_queue.cpp (revision f1fafe317f3b018f7d4d5e209aef1dbb35f77ad7)
1f22e1421SSalvatore Benedetto /*
2f22e1421SSalvatore Benedetto  * Copyright 2008, Haiku Inc. All rights reserved.
3f22e1421SSalvatore Benedetto  * Distributed under the terms of the MIT License.
4f22e1421SSalvatore Benedetto  *
5f22e1421SSalvatore Benedetto  * Authors:
6f22e1421SSalvatore Benedetto  *		Salvatore Benedetto <salvatore.benedetto@gmail.com>
7f22e1421SSalvatore Benedetto  */
8f22e1421SSalvatore Benedetto 
9f22e1421SSalvatore Benedetto #include <sys/msg.h>
10f22e1421SSalvatore Benedetto 
11f22e1421SSalvatore Benedetto #include <errno.h>
12f22e1421SSalvatore Benedetto #include <fcntl.h>
13f22e1421SSalvatore Benedetto #include <stdarg.h>
14f22e1421SSalvatore Benedetto #include <stdlib.h>
15*f1fafe31SAugustin Cavalier #include <pthread.h>
16f22e1421SSalvatore Benedetto 
17f22e1421SSalvatore Benedetto #include <OS.h>
18f22e1421SSalvatore Benedetto 
19ae901935SOliver Tappe #include <errno_private.h>
20f22e1421SSalvatore Benedetto #include <syscall_utils.h>
21f22e1421SSalvatore Benedetto #include <syscalls.h>
22f22e1421SSalvatore Benedetto 
23f22e1421SSalvatore Benedetto 
24f22e1421SSalvatore Benedetto int
msgctl(int messageQueueID,int command,struct msqid_ds * buffer)25f22e1421SSalvatore Benedetto msgctl(int messageQueueID, int command, struct msqid_ds *buffer)
26f22e1421SSalvatore Benedetto {
27f22e1421SSalvatore Benedetto 	RETURN_AND_SET_ERRNO(_kern_xsi_msgctl(messageQueueID, command, buffer));
28f22e1421SSalvatore Benedetto }
29f22e1421SSalvatore Benedetto 
30f22e1421SSalvatore Benedetto 
31f22e1421SSalvatore Benedetto int
msgget(key_t key,int messageQueueFlags)32f22e1421SSalvatore Benedetto msgget(key_t key, int messageQueueFlags)
33f22e1421SSalvatore Benedetto {
34f22e1421SSalvatore Benedetto 	RETURN_AND_SET_ERRNO(_kern_xsi_msgget(key, messageQueueFlags));
35f22e1421SSalvatore Benedetto }
36f22e1421SSalvatore Benedetto 
37f22e1421SSalvatore Benedetto 
38f22e1421SSalvatore Benedetto ssize_t
msgrcv(int messageQueueID,void * messagePointer,size_t messageSize,long messageType,int messageFlags)39f22e1421SSalvatore Benedetto msgrcv(int messageQueueID, void *messagePointer, size_t messageSize,
40f22e1421SSalvatore Benedetto 	long messageType, int messageFlags)
41f22e1421SSalvatore Benedetto {
4224df6592SIngo Weinhold 	RETURN_AND_SET_ERRNO_TEST_CANCEL(_kern_xsi_msgrcv(messageQueueID,
4324df6592SIngo Weinhold 		messagePointer, messageSize, messageType, messageFlags));
44f22e1421SSalvatore Benedetto }
45f22e1421SSalvatore Benedetto 
46f22e1421SSalvatore Benedetto 
47f22e1421SSalvatore Benedetto int
msgsnd(int messageQueueID,const void * messagePointer,size_t messageSize,int messageFlags)48f22e1421SSalvatore Benedetto msgsnd(int messageQueueID, const void *messagePointer, size_t messageSize,
49f22e1421SSalvatore Benedetto 	int messageFlags)
50f22e1421SSalvatore Benedetto {
5124df6592SIngo Weinhold 	RETURN_AND_SET_ERRNO_TEST_CANCEL(_kern_xsi_msgsnd(messageQueueID,
5224df6592SIngo Weinhold 		messagePointer, messageSize, messageFlags));
53f22e1421SSalvatore Benedetto }
54