xref: /aosp_15_r20/external/liburing/src/arch/generic/syscall.h (revision 25da2bea747f3a93b4c30fd9708b0618ef55a0e6)
1*25da2beaSAndroid Build Coastguard Worker /* SPDX-License-Identifier: MIT */
2*25da2beaSAndroid Build Coastguard Worker 
3*25da2beaSAndroid Build Coastguard Worker #ifndef __INTERNAL__LIBURING_SYSCALL_H
4*25da2beaSAndroid Build Coastguard Worker 	#error "This file should be included from src/syscall.h (liburing)"
5*25da2beaSAndroid Build Coastguard Worker #endif
6*25da2beaSAndroid Build Coastguard Worker 
7*25da2beaSAndroid Build Coastguard Worker #ifndef LIBURING_ARCH_GENERIC_SYSCALL_H
8*25da2beaSAndroid Build Coastguard Worker #define LIBURING_ARCH_GENERIC_SYSCALL_H
9*25da2beaSAndroid Build Coastguard Worker 
____sys_io_uring_register(int fd,unsigned opcode,const void * arg,unsigned nr_args)10*25da2beaSAndroid Build Coastguard Worker static inline int ____sys_io_uring_register(int fd, unsigned opcode,
11*25da2beaSAndroid Build Coastguard Worker 					    const void *arg, unsigned nr_args)
12*25da2beaSAndroid Build Coastguard Worker {
13*25da2beaSAndroid Build Coastguard Worker 	int ret;
14*25da2beaSAndroid Build Coastguard Worker 	ret = syscall(__NR_io_uring_register, fd, opcode, arg, nr_args);
15*25da2beaSAndroid Build Coastguard Worker 	return (ret < 0) ? -errno : ret;
16*25da2beaSAndroid Build Coastguard Worker }
17*25da2beaSAndroid Build Coastguard Worker 
____sys_io_uring_setup(unsigned entries,struct io_uring_params * p)18*25da2beaSAndroid Build Coastguard Worker static inline int ____sys_io_uring_setup(unsigned entries,
19*25da2beaSAndroid Build Coastguard Worker 					 struct io_uring_params *p)
20*25da2beaSAndroid Build Coastguard Worker {
21*25da2beaSAndroid Build Coastguard Worker 	int ret;
22*25da2beaSAndroid Build Coastguard Worker 	ret = syscall(__NR_io_uring_setup, entries, p);
23*25da2beaSAndroid Build Coastguard Worker 	return (ret < 0) ? -errno : ret;
24*25da2beaSAndroid Build Coastguard Worker }
25*25da2beaSAndroid Build Coastguard Worker 
____sys_io_uring_enter2(int fd,unsigned to_submit,unsigned min_complete,unsigned flags,sigset_t * sig,int sz)26*25da2beaSAndroid Build Coastguard Worker static inline int ____sys_io_uring_enter2(int fd, unsigned to_submit,
27*25da2beaSAndroid Build Coastguard Worker 					  unsigned min_complete, unsigned flags,
28*25da2beaSAndroid Build Coastguard Worker 					  sigset_t *sig, int sz)
29*25da2beaSAndroid Build Coastguard Worker {
30*25da2beaSAndroid Build Coastguard Worker 	int ret;
31*25da2beaSAndroid Build Coastguard Worker 	ret = syscall(__NR_io_uring_enter, fd, to_submit, min_complete, flags,
32*25da2beaSAndroid Build Coastguard Worker 		      sig, sz);
33*25da2beaSAndroid Build Coastguard Worker 	return (ret < 0) ? -errno : ret;
34*25da2beaSAndroid Build Coastguard Worker }
35*25da2beaSAndroid Build Coastguard Worker 
____sys_io_uring_enter(int fd,unsigned to_submit,unsigned min_complete,unsigned flags,sigset_t * sig)36*25da2beaSAndroid Build Coastguard Worker static inline int ____sys_io_uring_enter(int fd, unsigned to_submit,
37*25da2beaSAndroid Build Coastguard Worker 					 unsigned min_complete, unsigned flags,
38*25da2beaSAndroid Build Coastguard Worker 					 sigset_t *sig)
39*25da2beaSAndroid Build Coastguard Worker {
40*25da2beaSAndroid Build Coastguard Worker 	return ____sys_io_uring_enter2(fd, to_submit, min_complete, flags, sig,
41*25da2beaSAndroid Build Coastguard Worker 				       _NSIG / 8);
42*25da2beaSAndroid Build Coastguard Worker }
43*25da2beaSAndroid Build Coastguard Worker 
__sys_mmap(void * addr,size_t length,int prot,int flags,int fd,off_t offset)44*25da2beaSAndroid Build Coastguard Worker static inline void *__sys_mmap(void *addr, size_t length, int prot, int flags,
45*25da2beaSAndroid Build Coastguard Worker 			       int fd, off_t offset)
46*25da2beaSAndroid Build Coastguard Worker {
47*25da2beaSAndroid Build Coastguard Worker 	void *ret;
48*25da2beaSAndroid Build Coastguard Worker 	ret = mmap(addr, length, prot, flags, fd, offset);
49*25da2beaSAndroid Build Coastguard Worker 	return (ret == MAP_FAILED) ? ERR_PTR(-errno) : ret;
50*25da2beaSAndroid Build Coastguard Worker }
51*25da2beaSAndroid Build Coastguard Worker 
__sys_munmap(void * addr,size_t length)52*25da2beaSAndroid Build Coastguard Worker static inline int __sys_munmap(void *addr, size_t length)
53*25da2beaSAndroid Build Coastguard Worker {
54*25da2beaSAndroid Build Coastguard Worker 	int ret;
55*25da2beaSAndroid Build Coastguard Worker 	ret = munmap(addr, length);
56*25da2beaSAndroid Build Coastguard Worker 	return (ret < 0) ? -errno : ret;
57*25da2beaSAndroid Build Coastguard Worker }
58*25da2beaSAndroid Build Coastguard Worker 
__sys_madvise(void * addr,size_t length,int advice)59*25da2beaSAndroid Build Coastguard Worker static inline int __sys_madvise(void *addr, size_t length, int advice)
60*25da2beaSAndroid Build Coastguard Worker {
61*25da2beaSAndroid Build Coastguard Worker 	int ret;
62*25da2beaSAndroid Build Coastguard Worker 	ret = madvise(addr, length, advice);
63*25da2beaSAndroid Build Coastguard Worker 	return (ret < 0) ? -errno : ret;
64*25da2beaSAndroid Build Coastguard Worker }
65*25da2beaSAndroid Build Coastguard Worker 
__sys_getrlimit(int resource,struct rlimit * rlim)66*25da2beaSAndroid Build Coastguard Worker static inline int __sys_getrlimit(int resource, struct rlimit *rlim)
67*25da2beaSAndroid Build Coastguard Worker {
68*25da2beaSAndroid Build Coastguard Worker 	int ret;
69*25da2beaSAndroid Build Coastguard Worker 	ret = getrlimit(resource, rlim);
70*25da2beaSAndroid Build Coastguard Worker 	return (ret < 0) ? -errno : ret;
71*25da2beaSAndroid Build Coastguard Worker }
72*25da2beaSAndroid Build Coastguard Worker 
__sys_setrlimit(int resource,const struct rlimit * rlim)73*25da2beaSAndroid Build Coastguard Worker static inline int __sys_setrlimit(int resource, const struct rlimit *rlim)
74*25da2beaSAndroid Build Coastguard Worker {
75*25da2beaSAndroid Build Coastguard Worker 	int ret;
76*25da2beaSAndroid Build Coastguard Worker 	ret = setrlimit(resource, rlim);
77*25da2beaSAndroid Build Coastguard Worker 	return (ret < 0) ? -errno : ret;
78*25da2beaSAndroid Build Coastguard Worker }
79*25da2beaSAndroid Build Coastguard Worker 
__sys_close(int fd)80*25da2beaSAndroid Build Coastguard Worker static inline int __sys_close(int fd)
81*25da2beaSAndroid Build Coastguard Worker {
82*25da2beaSAndroid Build Coastguard Worker 	int ret;
83*25da2beaSAndroid Build Coastguard Worker 	ret = close(fd);
84*25da2beaSAndroid Build Coastguard Worker 	return (ret < 0) ? -errno : ret;
85*25da2beaSAndroid Build Coastguard Worker }
86*25da2beaSAndroid Build Coastguard Worker 
87*25da2beaSAndroid Build Coastguard Worker #endif /* #ifndef LIBURING_ARCH_GENERIC_SYSCALL_H */
88