diff options
author | Mike Frysinger <vapier@gentoo.org> | 2013-01-27 11:46:24 -0500 |
---|---|---|
committer | Jeff Moyer <jmoyer@redhat.com> | 2013-01-31 16:38:16 -0500 |
commit | b3a5874dfc66d16126a72a4c969075cb30aa351d (patch) | |
tree | 864b5ac3ec721a75fc4f6d2b0f807e58d8d8992a | |
parent | 59ca03a10ba7aa21c610bbe22e222c11351f1b94 (diff) | |
download | libaio-b3a5874dfc66d16126a72a4c969075cb30aa351d.tar.gz |
add a generic syscall() fallback
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
-rw-r--r-- | src/syscall-generic.h | 29 | ||||
-rw-r--r-- | src/syscall.h | 3 |
2 files changed, 31 insertions, 1 deletions
diff --git a/src/syscall-generic.h b/src/syscall-generic.h new file mode 100644 index 0000000..24d7c7c --- /dev/null +++ b/src/syscall-generic.h @@ -0,0 +1,29 @@ +#include <errno.h> +#include <unistd.h> +#include <sys/syscall.h> + +#define _body_io_syscall(sname, args...) \ +{ \ + int ret = syscall(__NR_##sname, ## args); \ + return ret < 0 ? -errno : ret; \ +} + +#define io_syscall1(type,fname,sname,type1,arg1) \ +type fname(type1 arg1) \ +_body_io_syscall(sname, (long)arg1) + +#define io_syscall2(type,fname,sname,type1,arg1,type2,arg2) \ +type fname(type1 arg1,type2 arg2) \ +_body_io_syscall(sname, (long)arg1, (long)arg2) + +#define io_syscall3(type,fname,sname,type1,arg1,type2,arg2,type3,arg3) \ +type fname(type1 arg1,type2 arg2,type3 arg3) \ +_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3) + +#define io_syscall4(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ +type fname (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ +_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3, (long)arg4) + +#define io_syscall5(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4, type5,arg5) \ +type fname (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \ +_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3, (long)arg4, (long)arg5) diff --git a/src/syscall.h b/src/syscall.h index 6ece660..a2da030 100644 --- a/src/syscall.h +++ b/src/syscall.h @@ -29,5 +29,6 @@ #elif defined(__aarch64__) #include "syscall-arm64.h" #else -#error "add syscall-arch.h" +#warning "using generic syscall method" +#include "syscall-generic.h" #endif |