libaio-0.3.109-generic-arch.patch 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. From 5e96c73d5dfbdea8d0be82b7f3fc8d6735e5dfa7 Mon Sep 17 00:00:00 2001
  2. From: Mike Frysinger <vapier@gentoo.org>
  3. Date: Sun, 17 Jan 2010 17:07:48 -0500
  4. Subject: [PATCH] add a generic syscall() fallback
  5. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
  6. ---
  7. src/syscall-generic.h | 29 +++++++++++++++++++++++++++++
  8. src/syscall.h | 3 ++-
  9. 2 files changed, 31 insertions(+), 1 deletions(-)
  10. create mode 100644 src/syscall-generic.h
  11. diff --git a/src/syscall-generic.h b/src/syscall-generic.h
  12. new file mode 100644
  13. index 0000000..24d7c7c
  14. --- /dev/null
  15. +++ b/src/syscall-generic.h
  16. @@ -0,0 +1,29 @@
  17. +#include <errno.h>
  18. +#include <unistd.h>
  19. +#include <sys/syscall.h>
  20. +
  21. +#define _body_io_syscall(sname, args...) \
  22. +{ \
  23. + int ret = syscall(__NR_##sname, ## args); \
  24. + return ret < 0 ? -errno : ret; \
  25. +}
  26. +
  27. +#define io_syscall1(type,fname,sname,type1,arg1) \
  28. +type fname(type1 arg1) \
  29. +_body_io_syscall(sname, (long)arg1)
  30. +
  31. +#define io_syscall2(type,fname,sname,type1,arg1,type2,arg2) \
  32. +type fname(type1 arg1,type2 arg2) \
  33. +_body_io_syscall(sname, (long)arg1, (long)arg2)
  34. +
  35. +#define io_syscall3(type,fname,sname,type1,arg1,type2,arg2,type3,arg3) \
  36. +type fname(type1 arg1,type2 arg2,type3 arg3) \
  37. +_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3)
  38. +
  39. +#define io_syscall4(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
  40. +type fname (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
  41. +_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3, (long)arg4)
  42. +
  43. +#define io_syscall5(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4, type5,arg5) \
  44. +type fname (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
  45. +_body_io_syscall(sname, (long)arg1, (long)arg2, (long)arg3, (long)arg4, (long)arg5)
  46. diff --git a/src/syscall.h b/src/syscall.h
  47. index 78becfe..d954af0 100644
  48. --- a/src/syscall.h
  49. +++ b/src/syscall.h
  50. @@ -25,5 +25,6 @@
  51. #elif defined(__arm__)
  52. #include "syscall-arm.h"
  53. #else
  54. -#error "add syscall-arch.h"
  55. +#warning "using generic syscall method"
  56. +#include "syscall-generic.h"
  57. #endif
  58. --
  59. 1.7.3.1