OSDN Git Service

Add MS7619SE
[uclinux-h8/uClinux-dist.git] / uClibc / librt / mq_unlink.c
1 /*
2  * mq_unlink.c - remove a message queue.
3  */
4
5 #include <errno.h>
6 #include <sys/syscall.h>
7
8 #include <mqueue.h>
9
10 #ifdef __NR_mq_unlink
11
12 #define __NR___syscall_mq_unlink __NR_mq_unlink
13 static __inline__ _syscall1(int, __syscall_mq_unlink, const char *, name);
14
15 /* Remove message queue */
16 int mq_unlink(const char *name)
17 {
18         int ret;
19
20         if (name[0] != '/') {
21                 __set_errno(EINVAL);
22                 return -1;
23         }
24
25         ret = __syscall_mq_unlink(name + 1);
26
27         /* While unlink can return either EPERM or EACCES, mq_unlink should return just EACCES.  */
28         if (ret < 0) {
29                 ret = errno;
30                 if (ret == EPERM)
31                         ret = EACCES;
32                 __set_errno(ret);
33                 ret = -1;
34         }
35
36         return ret;
37 }
38
39 #endif