diff options
author | Jens Axboe <axboe@kernel.dk> | 2022-02-21 10:14:01 -0700 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2022-02-21 10:14:01 -0700 |
commit | 3de6251a2bd6805481e0b0f24ffe9c18454fdd0a (patch) | |
tree | 01840cfeba46fff62877bfb985584019a6f40067 | |
parent | 6cf23f9a6470d93b3396444f88b5bcd946fc0a55 (diff) | |
download | liburing-3de6251a2bd6805481e0b0f24ffe9c18454fdd0a.tar.gz liburing-3de6251a2bd6805481e0b0f24ffe9c18454fdd0a.tar.bz2 |
Add generic syscall definitions
If an arch provides its own syscall handlers, we can easily share the
definitions of the exposed system calls. Share them between x86-64
and aarch64.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r-- | src/arch/aarch64/syscall.h | 62 | ||||
-rw-r--r-- | src/arch/syscall-defs.h | 65 | ||||
-rw-r--r-- | src/arch/x86/syscall.h | 61 |
3 files changed, 67 insertions, 121 deletions
diff --git a/src/arch/aarch64/syscall.h b/src/arch/aarch64/syscall.h index 5387772..c0ab7e2 100644 --- a/src/arch/aarch64/syscall.h +++ b/src/arch/aarch64/syscall.h @@ -84,67 +84,7 @@ "r" (x4), "r"(x5)); \ }) - -static inline void *__sys_mmap(void *addr, size_t length, int prot, int flags, - int fd, off_t offset) -{ - return (void *) __do_syscall6(__NR_mmap, addr, length, prot, flags, fd, - offset); -} - -static inline int __sys_munmap(void *addr, size_t length) -{ - return (int) __do_syscall2(__NR_munmap, addr, length); -} - -static inline int __sys_madvise(void *addr, size_t length, int advice) -{ - return (int) __do_syscall3(__NR_madvise, addr, length, advice); -} - -static inline int __sys_getrlimit(int resource, struct rlimit *rlim) -{ - return (int) __do_syscall2(__NR_getrlimit, resource, rlim); -} - -static inline int __sys_setrlimit(int resource, const struct rlimit *rlim) -{ - return (int) __do_syscall2(__NR_setrlimit, resource, rlim); -} - -static inline int __sys_close(int fd) -{ - return (int) __do_syscall1(__NR_close, fd); -} - -static inline int ____sys_io_uring_register(int fd, unsigned opcode, - const void *arg, unsigned nr_args) -{ - return (int) __do_syscall4(__NR_io_uring_register, fd, opcode, arg, - nr_args); -} - -static inline int ____sys_io_uring_setup(unsigned entries, - struct io_uring_params *p) -{ - return (int) __do_syscall2(__NR_io_uring_setup, entries, p); -} - -static inline int ____sys_io_uring_enter2(int fd, unsigned to_submit, - unsigned min_complete, unsigned flags, - sigset_t *sig, int sz) -{ - return (int) __do_syscall6(__NR_io_uring_enter, fd, to_submit, - min_complete, flags, sig, sz); -} - -static inline int ____sys_io_uring_enter(int fd, unsigned to_submit, - unsigned min_complete, unsigned flags, - sigset_t *sig) -{ - return ____sys_io_uring_enter2(fd, to_submit, min_complete, flags, sig, - _NSIG / 8); -} +#include "../syscall-defs.h" #else /* #if defined(__aarch64__) */ diff --git a/src/arch/syscall-defs.h b/src/arch/syscall-defs.h new file mode 100644 index 0000000..2c37c4d --- /dev/null +++ b/src/arch/syscall-defs.h @@ -0,0 +1,65 @@ +#ifndef LIBURING_ARCH_SYSCALL_DEFS_H +#define LIBURING_ARCH_SYSCALL_DEFS_H + +static inline void *__sys_mmap(void *addr, size_t length, int prot, int flags, + int fd, off_t offset) +{ + return (void *) __do_syscall6(__NR_mmap, addr, length, prot, flags, fd, + offset); +} + +static inline int __sys_munmap(void *addr, size_t length) +{ + return (int) __do_syscall2(__NR_munmap, addr, length); +} + +static inline int __sys_madvise(void *addr, size_t length, int advice) +{ + return (int) __do_syscall3(__NR_madvise, addr, length, advice); +} + +static inline int __sys_getrlimit(int resource, struct rlimit *rlim) +{ + return (int) __do_syscall2(__NR_getrlimit, resource, rlim); +} + +static inline int __sys_setrlimit(int resource, const struct rlimit *rlim) +{ + return (int) __do_syscall2(__NR_setrlimit, resource, rlim); +} + +static inline int __sys_close(int fd) +{ + return (int) __do_syscall1(__NR_close, fd); +} + +static inline int ____sys_io_uring_register(int fd, unsigned opcode, + const void *arg, unsigned nr_args) +{ + return (int) __do_syscall4(__NR_io_uring_register, fd, opcode, arg, + nr_args); +} + +static inline int ____sys_io_uring_setup(unsigned entries, + struct io_uring_params *p) +{ + return (int) __do_syscall2(__NR_io_uring_setup, entries, p); +} + +static inline int ____sys_io_uring_enter2(int fd, unsigned to_submit, + unsigned min_complete, unsigned flags, + sigset_t *sig, int sz) +{ + return (int) __do_syscall6(__NR_io_uring_enter, fd, to_submit, + min_complete, flags, sig, sz); +} + +static inline int ____sys_io_uring_enter(int fd, unsigned to_submit, + unsigned min_complete, unsigned flags, + sigset_t *sig) +{ + return ____sys_io_uring_enter2(fd, to_submit, min_complete, flags, sig, + _NSIG / 8); +} + +#endif diff --git a/src/arch/x86/syscall.h b/src/arch/x86/syscall.h index 2efaef0..89a68f6 100644 --- a/src/arch/x86/syscall.h +++ b/src/arch/x86/syscall.h @@ -140,66 +140,7 @@ rax; \ }) -static inline void *__sys_mmap(void *addr, size_t length, int prot, int flags, - int fd, off_t offset) -{ - return (void *) __do_syscall6(__NR_mmap, addr, length, prot, flags, fd, - offset); -} - -static inline int __sys_munmap(void *addr, size_t length) -{ - return (int) __do_syscall2(__NR_munmap, addr, length); -} - -static inline int __sys_madvise(void *addr, size_t length, int advice) -{ - return (int) __do_syscall3(__NR_madvise, addr, length, advice); -} - -static inline int __sys_getrlimit(int resource, struct rlimit *rlim) -{ - return (int) __do_syscall2(__NR_getrlimit, resource, rlim); -} - -static inline int __sys_setrlimit(int resource, const struct rlimit *rlim) -{ - return (int) __do_syscall2(__NR_setrlimit, resource, rlim); -} - -static inline int __sys_close(int fd) -{ - return (int) __do_syscall1(__NR_close, fd); -} - -static inline int ____sys_io_uring_register(int fd, unsigned opcode, - const void *arg, unsigned nr_args) -{ - return (int) __do_syscall4(__NR_io_uring_register, fd, opcode, arg, - nr_args); -} - -static inline int ____sys_io_uring_setup(unsigned entries, - struct io_uring_params *p) -{ - return (int) __do_syscall2(__NR_io_uring_setup, entries, p); -} - -static inline int ____sys_io_uring_enter2(int fd, unsigned to_submit, - unsigned min_complete, unsigned flags, - sigset_t *sig, int sz) -{ - return (int) __do_syscall6(__NR_io_uring_enter, fd, to_submit, - min_complete, flags, sig, sz); -} - -static inline int ____sys_io_uring_enter(int fd, unsigned to_submit, - unsigned min_complete, unsigned flags, - sigset_t *sig) -{ - return ____sys_io_uring_enter2(fd, to_submit, min_complete, flags, sig, - _NSIG / 8); -} +#include "../syscall-defs.h" #else /* #if defined(__x86_64__) */ |