|
@@ -2,22 +2,23 @@
|
|
|
* mq_send.c - functions for sending to message queue.
|
|
|
*/
|
|
|
|
|
|
-#include <errno.h>
|
|
|
-#include <stddef.h>
|
|
|
#include <sys/syscall.h>
|
|
|
+
|
|
|
+#ifdef __NR_mq_timedsend
|
|
|
+
|
|
|
+#include <stddef.h>
|
|
|
#include <mqueue.h>
|
|
|
-#warning FIXME: hard dependency on ADVANCED REALTIME feature
|
|
|
|
|
|
+#ifdef __UCLIBC_HAS_THREADS_NATIVE__
|
|
|
librt_hidden_proto(mq_timedsend)
|
|
|
+#else
|
|
|
|
|
|
-#ifndef __UCLIBC_HAS_THREADS_NATIVE__
|
|
|
-#ifdef __NR_mq_timedsend
|
|
|
-#define __NR___syscall_mq_timedsend __NR_mq_timedsend
|
|
|
-static __inline__ _syscall5(int, __syscall_mq_timedsend, int, mqdes,
|
|
|
- const char *, msg_ptr, size_t, msg_len, unsigned int,
|
|
|
- msg_prio, const void *, abs_timeout);
|
|
|
-#endif
|
|
|
+# define __NR___syscall_mq_timedsend __NR_mq_timedsend
|
|
|
+static _syscall5(int, __syscall_mq_timedsend, int, mqdes,
|
|
|
+ const char *, msg_ptr, size_t, msg_len, unsigned int,
|
|
|
+ msg_prio, const void *, abs_timeout);
|
|
|
|
|
|
+# ifdef __UCLIBC_HAS_ADVANCED_REALTIME__
|
|
|
|
|
|
* Add a message to queue. If O_NONBLOCK is set and queue is full, wait
|
|
|
* for sufficient room in the queue until abs_timeout expires.
|
|
@@ -25,21 +26,21 @@ static __inline__ _syscall5(int, __syscall_mq_timedsend, int, mqdes,
|
|
|
int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len,
|
|
|
unsigned int msg_prio, const struct timespec *abs_timeout)
|
|
|
{
|
|
|
-#ifdef __NR_mq_timedsend
|
|
|
return __syscall_mq_timedsend(mqdes, msg_ptr, msg_len, msg_prio,
|
|
|
abs_timeout);
|
|
|
-#else
|
|
|
- errno = ENOSYS;
|
|
|
- return -1;
|
|
|
-#endif
|
|
|
}
|
|
|
-
|
|
|
-librt_hidden_def(mq_timedsend)
|
|
|
+# endif
|
|
|
#endif
|
|
|
|
|
|
|
|
|
int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len,
|
|
|
unsigned int msg_prio)
|
|
|
{
|
|
|
+#ifdef __UCLIBC_HAS_THREADS_NATIVE__
|
|
|
return mq_timedsend(mqdes, msg_ptr, msg_len, msg_prio, NULL);
|
|
|
+#else
|
|
|
+ return __syscall_mq_timedsend(mqdes, msg_ptr, msg_len, msg_prio, NULL);
|
|
|
+#endif
|
|
|
}
|
|
|
+
|
|
|
+#endif
|