1 /* SPDX-License-Identifier: MIT */
2
3 #ifndef LIBURING_ARCH_GENERIC_SYSCALL_H
4 #define LIBURING_ARCH_GENERIC_SYSCALL_H
5
6 #include <fcntl.h>
7
__sys_io_uring_register(unsigned int fd,unsigned int opcode,const void * arg,unsigned int nr_args)8 static inline int __sys_io_uring_register(unsigned int fd, unsigned int opcode,
9 const void *arg, unsigned int nr_args)
10 {
11 int ret;
12 ret = syscall(__NR_io_uring_register, fd, opcode, arg, nr_args);
13 return (ret < 0) ? -errno : ret;
14 }
15
__sys_io_uring_setup(unsigned int entries,struct io_uring_params * p)16 static inline int __sys_io_uring_setup(unsigned int entries,
17 struct io_uring_params *p)
18 {
19 int ret;
20 ret = syscall(__NR_io_uring_setup, entries, p);
21 return (ret < 0) ? -errno : ret;
22 }
23
__sys_io_uring_enter2(unsigned int fd,unsigned int to_submit,unsigned int min_complete,unsigned int flags,sigset_t * sig,size_t sz)24 static inline int __sys_io_uring_enter2(unsigned int fd, unsigned int to_submit,
25 unsigned int min_complete,
26 unsigned int flags, sigset_t *sig,
27 size_t sz)
28 {
29 int ret;
30 ret = syscall(__NR_io_uring_enter, fd, to_submit, min_complete, flags,
31 sig, sz);
32 return (ret < 0) ? -errno : ret;
33 }
34
__sys_io_uring_enter(unsigned int fd,unsigned int to_submit,unsigned int min_complete,unsigned int flags,sigset_t * sig)35 static inline int __sys_io_uring_enter(unsigned int fd, unsigned int to_submit,
36 unsigned int min_complete,
37 unsigned int flags, sigset_t *sig)
38 {
39 return __sys_io_uring_enter2(fd, to_submit, min_complete, flags, sig,
40 _NSIG / 8);
41 }
42
__sys_open(const char * pathname,int flags,mode_t mode)43 static inline int __sys_open(const char *pathname, int flags, mode_t mode)
44 {
45 int ret;
46 ret = open(pathname, flags, mode);
47 return (ret < 0) ? -errno : ret;
48 }
49
__sys_read(int fd,void * buffer,size_t size)50 static inline ssize_t __sys_read(int fd, void *buffer, size_t size)
51 {
52 ssize_t ret;
53 ret = read(fd, buffer, size);
54 return (ret < 0) ? -errno : ret;
55 }
56
__sys_mmap(void * addr,size_t length,int prot,int flags,int fd,off_t offset)57 static inline void *__sys_mmap(void *addr, size_t length, int prot, int flags,
58 int fd, off_t offset)
59 {
60 void *ret;
61 ret = mmap(addr, length, prot, flags, fd, offset);
62 return (ret == MAP_FAILED) ? ERR_PTR(-errno) : ret;
63 }
64
__sys_munmap(void * addr,size_t length)65 static inline int __sys_munmap(void *addr, size_t length)
66 {
67 int ret;
68 ret = munmap(addr, length);
69 return (ret < 0) ? -errno : ret;
70 }
71
__sys_madvise(void * addr,size_t length,int advice)72 static inline int __sys_madvise(void *addr, size_t length, int advice)
73 {
74 int ret;
75 ret = madvise(addr, length, advice);
76 return (ret < 0) ? -errno : ret;
77 }
78
__sys_getrlimit(int resource,struct rlimit * rlim)79 static inline int __sys_getrlimit(int resource, struct rlimit *rlim)
80 {
81 int ret;
82 ret = getrlimit(resource, rlim);
83 return (ret < 0) ? -errno : ret;
84 }
85
__sys_setrlimit(int resource,const struct rlimit * rlim)86 static inline int __sys_setrlimit(int resource, const struct rlimit *rlim)
87 {
88 int ret;
89 ret = setrlimit(resource, rlim);
90 return (ret < 0) ? -errno : ret;
91 }
92
__sys_close(int fd)93 static inline int __sys_close(int fd)
94 {
95 int ret;
96 ret = close(fd);
97 return (ret < 0) ? -errno : ret;
98 }
99
100 #endif /* #ifndef LIBURING_ARCH_GENERIC_SYSCALL_H */
101