• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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