diff options
| author | Kacper <kacper@mail.openlinux.dev> | 2025-12-15 14:42:29 +0100 |
|---|---|---|
| committer | Kacper <kacper@mail.openlinux.dev> | 2025-12-15 14:42:29 +0100 |
| commit | 7cd3b7caee10d62f7be674afb86a136bf30485d6 (patch) | |
| tree | 121a8c79114174b765713387187d930b102f760f /lib/libc/mqueue/mq_open.c | |
| parent | 3b3325f761b09ebbfef04c44eed546cc4fdeb329 (diff) | |
Add mqueue rt api, add header tests
Diffstat (limited to 'lib/libc/mqueue/mq_open.c')
| -rw-r--r-- | lib/libc/mqueue/mq_open.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/libc/mqueue/mq_open.c b/lib/libc/mqueue/mq_open.c new file mode 100644 index 00000000..15ae9e18 --- /dev/null +++ b/lib/libc/mqueue/mq_open.c @@ -0,0 +1,26 @@ +#include <fcntl.h> +#include <mqueue.h> +#include <stdarg.h> +#include <syscall.h> + +mqd_t mq_open(const char *name, int oflag, ...) +{ + mode_t mode; + struct mq_attr *attr; + + if (*name == '/') + name++; + + if (oflag & O_CREAT) { + va_list ap; + va_start(ap, oflag); + mode = va_arg(ap, mode_t); + attr = va_arg(ap, struct mq_attr *); + va_end(ap); + } else { + mode = 0; + attr = 0; + } + + return syscall(mq_open, name, oflag, mode, attr); +} |
