From 83a9f8f17a73e86dbd7588a6cd9af194b9368fd3 Mon Sep 17 00:00:00 2001 From: "Michael K. Johnson" Date: Tue, 20 May 2003 15:54:50 +0000 Subject: symbol versioning patch from Ulrich --- src/compat-0_1.c | 4 ++-- src/io_cancel.c | 4 ++-- src/io_destroy.c | 2 +- src/io_getevents.c | 3 ++- src/io_queue_init.c | 1 - src/io_queue_wait.c | 4 +++- src/io_setup.c | 2 +- src/io_submit.c | 3 +-- src/libaio.map | 24 ++++++++------------ src/syscall-i386.h | 30 ++++++++++++------------- src/syscall-ia64.h | 42 +++++++++++++++++------------------ src/syscall-ppc.h | 63 +++++++++++++--------------------------------------- src/syscall-s390.h | 38 +++++++++++++++---------------- src/syscall-x86_64.h | 30 ++++++++++++------------- src/syscall.h | 3 +++ 15 files changed, 110 insertions(+), 143 deletions(-) diff --git a/src/compat-0_1.c b/src/compat-0_1.c index 9103658..d689bff 100644 --- a/src/compat-0_1.c +++ b/src/compat-0_1.c @@ -37,8 +37,8 @@ int compat0_1_io_cancel(io_context_t ctx, struct iocb *iocb) return io_cancel(ctx, iocb, &event); } -SYMVER(compat0_1_io_wait, io_wait, 0.1); -int compat0_1_io_wait(io_context_t ctx, struct iocb *iocb, const struct timespec *when) +SYMVER(compat0_1_io_queue_wait, io_queue_wait, 0.1); +int compat0_1_io_queue_wait(io_context_t ctx, struct iocb *iocb, const struct timespec *when) { return -ENOSYS; } diff --git a/src/io_cancel.c b/src/io_cancel.c index 108a264..2f0f5f4 100644 --- a/src/io_cancel.c +++ b/src/io_cancel.c @@ -19,5 +19,5 @@ #include #include "syscall.h" -io_syscall3(int, io_cancel, io_context_t, ctx, struct iocb *, iocb, struct io_event *, event) - +io_syscall3(int, io_cancel_0_4, io_cancel, io_context_t, ctx, struct iocb *, iocb, struct io_event *, event) +DEFSYMVER(io_cancel_0_4, io_cancel, 0.4) diff --git a/src/io_destroy.c b/src/io_destroy.c index 1f231a8..0ab6bd1 100644 --- a/src/io_destroy.c +++ b/src/io_destroy.c @@ -20,4 +20,4 @@ #include #include "syscall.h" -io_syscall1(int, io_destroy, io_context_t, ctx) +io_syscall1(int, io_destroy, io_destroy, io_context_t, ctx) diff --git a/src/io_getevents.c b/src/io_getevents.c index aae2261..28d2e31 100644 --- a/src/io_getevents.c +++ b/src/io_getevents.c @@ -22,4 +22,5 @@ #include #include "syscall.h" -io_syscall5(int, io_getevents, io_context_t, ctx, long, min_nr, long, nr, struct io_event *, events, struct timespec *, timeout) +io_syscall5(int, io_getevents_0_4, io_getevents, io_context_t, ctx, long, min_nr, long, nr, struct io_event *, events, struct timespec *, timeout) +DEFSYMVER(io_getevents_0_4, io_getevents, 0.4) diff --git a/src/io_queue_init.c b/src/io_queue_init.c index 405a1e0..563d137 100644 --- a/src/io_queue_init.c +++ b/src/io_queue_init.c @@ -23,7 +23,6 @@ #include "syscall.h" -SYMVER(io_queue_init, io_queue_init, 0.1); int io_queue_init(int maxevents, io_context_t *ctxp) { if (maxevents > 0) { diff --git a/src/io_queue_wait.c b/src/io_queue_wait.c index a6e0bec..89c8072 100644 --- a/src/io_queue_wait.c +++ b/src/io_queue_wait.c @@ -20,10 +20,12 @@ #include #include #include +#include "syscall.h" struct timespec; -int io_queue_wait(io_context_t ctx, struct timespec *timeout) +int io_queue_wait_0_4(io_context_t ctx, struct timespec *timeout) { return io_getevents(ctx, 0, 0, NULL, timeout); } +DEFSYMVER(io_queue_wait_0_4, io_queue_wait, 0.4) diff --git a/src/io_setup.c b/src/io_setup.c index 031f7f0..4ba1afc 100644 --- a/src/io_setup.c +++ b/src/io_setup.c @@ -20,4 +20,4 @@ #include #include "syscall.h" -io_syscall2(int, io_setup, int, maxevents, io_context_t *, ctxp) +io_syscall2(int, io_setup, io_setup, int, maxevents, io_context_t *, ctxp) diff --git a/src/io_submit.c b/src/io_submit.c index 64b6416..e22ba54 100644 --- a/src/io_submit.c +++ b/src/io_submit.c @@ -20,5 +20,4 @@ #include #include "syscall.h" -SYMVER(io_submit, io_submit, 0.1); -io_syscall3(int, io_submit, io_context_t, ctx, long, nr, struct iocb **, iocbs) +io_syscall3(int, io_submit, io_submit, io_context_t, ctx, long, nr, struct iocb **, iocbs) diff --git a/src/libaio.map b/src/libaio.map index 27d8ba3..dc37725 100644 --- a/src/libaio.map +++ b/src/libaio.map @@ -1,28 +1,22 @@ -LIBAIO_0.4 { +LIBAIO_0.1 { global: - io_setup; - io_destroy; - io_cancel; - io_getevents; - - # these are compatible with 0.1 io_queue_init; io_queue_run; io_queue_wait; io_queue_release; + io_cancel; io_submit; + io_getevents; local: *; }; -LIBAIO_0.1 { - io_queue_init; - io_queue_run; - io_queue_wait; - io_queue_release; +LIBAIO_0.4 { + global: + io_setup; + io_destroy; io_cancel; - io_submit; io_getevents; -}; - + io_queue_wait; +} LIBAIO_0.1; diff --git a/src/syscall-i386.h b/src/syscall-i386.h index c483072..9c9ea50 100644 --- a/src/syscall-i386.h +++ b/src/syscall-i386.h @@ -4,52 +4,52 @@ #define __NR_io_submit 248 #define __NR_io_cancel 249 -#define io_syscall1(type, name, type1, arg1) \ - type name(type1 arg1) \ +#define io_syscall1(type, fname, sname, type1, arg1) \ + type fname(type1 arg1) \ { \ long __ret; \ __asm__ __volatile__("int $0x80" : "=a" (__ret) : \ - "0" (__NR_##name), "b" (arg1)); \ + "0" (__NR_##sname), "b" (arg1)); \ return __ret; \ } -#define io_syscall2(type, name, type1, arg1, type2, arg2) \ - type name(type1 arg1, type2 arg2) \ +#define io_syscall2(type, fname, sname, type1, arg1, type2, arg2) \ + type fname(type1 arg1, type2 arg2) \ { \ long __ret; \ __asm__ __volatile__("int $0x80" : "=a" (__ret) : \ - "0" (__NR_##name), "b" (arg1), "c" (arg2)); \ + "0" (__NR_##sname), "b" (arg1), "c" (arg2)); \ return __ret; \ } -#define io_syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \ - type name(type1 arg1, type2 arg2, type3 arg3) \ +#define io_syscall3(type, fname, sname, type1, arg1, type2, arg2, type3, arg3) \ + type fname(type1 arg1, type2 arg2, type3 arg3) \ { \ long __ret; \ __asm__ __volatile__("int $0x80" : "=a" (__ret) : \ - "0" (__NR_##name), "b" (arg1), "c" (arg2), \ + "0" (__NR_##sname), "b" (arg1), "c" (arg2), \ "d" (arg3) \ ); \ return __ret; \ } -#define io_syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \ - type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ +#define io_syscall4(type, fname, sname, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \ + type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ { \ long __ret; \ __asm__ __volatile__("int $0x80" : "=a" (__ret) : \ - "0" (__NR_##name), "b" (arg1), "c" (arg2), \ + "0" (__NR_##sname), "b" (arg1), "c" (arg2), \ "d" (arg3), "S" (arg4) \ ); \ return __ret; \ } -#define io_syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5) \ - type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ +#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) \ { \ long __ret; \ __asm__ __volatile__("int $0x80" : "=a" (__ret) : \ - "0" (__NR_##name), "b" (arg1), "c" (arg2), \ + "0" (__NR_##sname), "b" (arg1), "c" (arg2), \ "d" (arg3), "S" (arg4), "D" (arg5) \ ); \ return __ret; \ diff --git a/src/syscall-ia64.h b/src/syscall-ia64.h index 484e97c..1bba742 100644 --- a/src/syscall-ia64.h +++ b/src/syscall-ia64.h @@ -4,43 +4,43 @@ #define __NR_io_submit 1241 #define __NR_io_cancel 1242 -#define __ia64_raw_syscall(name) \ +#define __ia64_raw_syscall(fname, sname) \ __asm__ (".text\n" \ - ".globl " SYMSTR(name) "\n" \ - SYMSTR(name) ":\n" \ - " mov r15=" SYMSTR( __NR_ ## name ) "\n" \ + ".globl " SYMSTR(fname) "\n" \ + SYMSTR(fname) ":\n" \ + " mov r15=" SYMSTR( __NR_ ## sname ) "\n" \ " break 0x100000\n" \ " ;;\n" \ " cmp.eq p6,p0=-1,r10\n" \ " ;;\n" \ " (p6) sub r8=0,r8\n" \ " br.ret.sptk.few b0\n" \ - ".size " SYMSTR(name) ", . - " SYMSTR(name) "\n" \ - ".endp " SYMSTR(name) "\n" \ + ".size " SYMSTR(fname) ", . - " SYMSTR(fname) "\n" \ + ".endp " SYMSTR(fname) "\n" \ ); #define io_syscall0(type, name) \ extern type name(void); \ __ia64_raw_syscall(name); -#define io_syscall1(type, name, type1, arg1) \ - extern type name(type1 arg1); \ - __ia64_raw_syscall(name); +#define io_syscall1(type, fname, sname, type1, arg1) \ + extern type fname(type1 arg1); \ + __ia64_raw_syscall(fname, sname); -#define io_syscall2(type, name, type1, arg1, type2, arg2) \ - extern type name(type1 arg1, type2 arg2); \ - __ia64_raw_syscall(name); +#define io_syscall2(type, fname, sname, type1, arg1, type2, arg2) \ + extern type fname(type1 arg1, type2 arg2); \ + __ia64_raw_syscall(fname, sname); -#define io_syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \ - extern type name(type1 arg1, type2 arg2, type3 arg3); \ - __ia64_raw_syscall(name); +#define io_syscall3(type, fname, sname, type1, arg1, type2, arg2, type3, arg3) \ + extern type fname(type1 arg1, type2 arg2, type3 arg3); \ + __ia64_raw_syscall(fname, sname); -#define io_syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \ - extern type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4); \ - __ia64_raw_syscall(name); +#define io_syscall4(type, fname, sname, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \ + extern type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4); \ + __ia64_raw_syscall(fname, sname); -#define io_syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5) \ - extern type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5); \ - __ia64_raw_syscall(name); +#define io_syscall5(type, fname, sname, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5) \ + extern type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5); \ + __ia64_raw_syscall(fname, sname); diff --git a/src/syscall-ppc.h b/src/syscall-ppc.h index af218d9..ae26166 100644 --- a/src/syscall-ppc.h +++ b/src/syscall-ppc.h @@ -11,8 +11,8 @@ #define __syscall_clobbers \ "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12" -#define io_syscall1(type,name,type1,arg1) \ -type name(type1 arg1) \ +#define io_syscall1(type,fname,sname,type1,arg1) \ +type fname(type1 arg1) \ { \ unsigned long __sc_ret, __sc_err; \ { \ @@ -20,7 +20,7 @@ type name(type1 arg1) \ register unsigned long __sc_3 __asm__ ("r3"); \ \ __sc_3 = (unsigned long) (arg1); \ - __sc_0 = __NR_##name; \ + __sc_0 = __NR_##sname; \ __asm__ __volatile__ \ ("sc \n\t" \ "mfcr %1 " \ @@ -31,11 +31,11 @@ type name(type1 arg1) \ __sc_err = __sc_0; \ } \ if ( __sc_err & 0x10000000 ) return -((int)__sc_ret); \ - return (type) __sc_ret; \ + return (type) __sc_ret; \ } -#define io_syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1, type2 arg2) \ +#define io_syscall2(type,fname,sname,type1,arg1,type2,arg2) \ +type fname(type1 arg1, type2 arg2) \ { \ unsigned long __sc_ret, __sc_err; \ { \ @@ -45,7 +45,7 @@ type name(type1 arg1, type2 arg2) \ \ __sc_3 = (unsigned long) (arg1); \ __sc_4 = (unsigned long) (arg2); \ - __sc_0 = __NR_##name; \ + __sc_0 = __NR_##sname; \ __asm__ __volatile__ \ ("sc \n\t" \ "mfcr %1 " \ @@ -60,8 +60,8 @@ type name(type1 arg1, type2 arg2) \ return (type) __sc_ret; \ } -#define io_syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ -type name(type1 arg1, type2 arg2, type3 arg3) \ +#define io_syscall3(type,fname,sname,type1,arg1,type2,arg2,type3,arg3) \ +type fname(type1 arg1, type2 arg2, type3 arg3) \ { \ unsigned long __sc_ret, __sc_err; \ { \ @@ -73,7 +73,7 @@ type name(type1 arg1, type2 arg2, type3 arg3) \ __sc_3 = (unsigned long) (arg1); \ __sc_4 = (unsigned long) (arg2); \ __sc_5 = (unsigned long) (arg3); \ - __sc_0 = __NR_##name; \ + __sc_0 = __NR_##sname; \ __asm__ __volatile__ \ ("sc \n\t" \ "mfcr %1 " \ @@ -89,39 +89,8 @@ type name(type1 arg1, type2 arg2, type3 arg3) \ return (type) __sc_ret; \ } -#define io_syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ -{ \ - unsigned long __sc_ret, __sc_err; \ - { \ - register unsigned long __sc_0 __asm__ ("r0"); \ - register unsigned long __sc_3 __asm__ ("r3"); \ - register unsigned long __sc_4 __asm__ ("r4"); \ - register unsigned long __sc_5 __asm__ ("r5"); \ - register unsigned long __sc_6 __asm__ ("r6"); \ - \ - __sc_3 = (unsigned long) (arg1); \ - __sc_4 = (unsigned long) (arg2); \ - __sc_5 = (unsigned long) (arg3); \ - __sc_6 = (unsigned long) (arg4); \ - __sc_0 = __NR_##name; \ - __asm__ __volatile__ \ - ("sc \n\t" \ - "mfcr %1 " \ - : "=&r" (__sc_3), "=&r" (__sc_0) \ - : "0" (__sc_3), "1" (__sc_0), \ - "r" (__sc_4), \ - "r" (__sc_5), \ - "r" (__sc_6) \ - : __syscall_clobbers); \ - __sc_ret = __sc_3; \ - __sc_err = __sc_0; \ - } \ - if ( __sc_err & 0x10000000 ) return -((int)__sc_ret); \ - return (type) __sc_ret; \ -} -#define io_syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ +#define io_syscall4(type,fname,sname,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \ +type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ { \ unsigned long __sc_ret, __sc_err; \ { \ @@ -135,7 +104,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ __sc_4 = (unsigned long) (arg2); \ __sc_5 = (unsigned long) (arg3); \ __sc_6 = (unsigned long) (arg4); \ - __sc_0 = __NR_##name; \ + __sc_0 = __NR_##sname; \ __asm__ __volatile__ \ ("sc \n\t" \ "mfcr %1 " \ @@ -152,8 +121,8 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ return (type) __sc_ret; \ } -#define io_syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4,type5,arg5) \ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ +#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) \ { \ unsigned long __sc_ret, __sc_err; \ { \ @@ -169,7 +138,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ __sc_5 = (unsigned long) (arg3); \ __sc_6 = (unsigned long) (arg4); \ __sc_7 = (unsigned long) (arg5); \ - __sc_0 = __NR_##name; \ + __sc_0 = __NR_##sname; \ __asm__ __volatile__ \ ("sc \n\t" \ "mfcr %1 " \ diff --git a/src/syscall-s390.h b/src/syscall-s390.h index b1738c7..515c217 100644 --- a/src/syscall-s390.h +++ b/src/syscall-s390.h @@ -12,34 +12,34 @@ #define __LR "lr " /* 32 bit load register */ #endif -#define io_syscall0(type,name) \ -type name(void) { \ +#define io_syscall0(type,fname,sname) \ +type fname(void) { \ long __res; \ __asm__ __volatile__ ( \ " svc %b1\n" \ " "__LR" %0,2" \ : "=d" (__res) \ - : "i" (__NR_##name) \ + : "i" (__NR_##sname) \ : _svc_clobber ); \ return (type) __res; \ } -#define io_syscall1(type,name,type1,arg1) \ -type name(type1 arg1) { \ +#define io_syscall1(type,fname,sname,type1,arg1) \ +type fname(type1 arg1) { \ register type1 __arg1 asm("2") = arg1; \ long __res; \ __asm__ __volatile__ ( \ " svc %b1\n" \ " "__LR" %0,2" \ : "=d" (__res) \ - : "i" (__NR_##name), \ + : "i" (__NR_##sname), \ "d" (__arg1) \ : _svc_clobber ); \ return (type) __res; \ } -#define io_syscall2(type,name,type1,arg1,type2,arg2) \ -type name(type1 arg1, type2 arg2) { \ +#define io_syscall2(type,fname,sname,type1,arg1,type2,arg2) \ +type fname(type1 arg1, type2 arg2) { \ register type1 __arg1 asm("2") = arg1; \ register type2 __arg2 asm("3") = arg2; \ long __res; \ @@ -47,16 +47,16 @@ type name(type1 arg1, type2 arg2) { \ " svc %b1\n" \ " "__LR" %0,2" \ : "=d" (__res) \ - : "i" (__NR_##name), \ + : "i" (__NR_##sname), \ "d" (__arg1), \ "d" (__arg2) \ : _svc_clobber ); \ return (type) __res; \ } -#define io_syscall3(type,name,type1,arg1,type2,arg2, \ +#define io_syscall3(type,fname,sname,type1,arg1,type2,arg2, \ type3,arg3) \ -type name(type1 arg1, type2 arg2, type3 arg3) { \ +type fname(type1 arg1, type2 arg2, type3 arg3) { \ register type1 __arg1 asm("2") = arg1; \ register type2 __arg2 asm("3") = arg2; \ register type3 __arg3 asm("4") = arg3; \ @@ -65,7 +65,7 @@ type name(type1 arg1, type2 arg2, type3 arg3) { \ " svc %b1\n" \ " "__LR" %0,2" \ : "=d" (__res) \ - : "i" (__NR_##name), \ + : "i" (__NR_##sname), \ "d" (__arg1), \ "d" (__arg2), \ "d" (__arg3) \ @@ -73,9 +73,9 @@ type name(type1 arg1, type2 arg2, type3 arg3) { \ return (type) __res; \ } -#define io_syscall4(type,name,type1,arg1,type2,arg2, \ +#define io_syscall4(type,fname,sname,type1,arg1,type2,arg2, \ type3,arg3,type4,arg4) \ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ +type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ register type1 __arg1 asm("2") = arg1; \ register type2 __arg2 asm("3") = arg2; \ register type3 __arg3 asm("4") = arg3; \ @@ -85,7 +85,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ " svc %b1\n" \ " "__LR" %0,2" \ : "=d" (__res) \ - : "i" (__NR_##name), \ + : "i" (__NR_##sname), \ "d" (__arg1), \ "d" (__arg2), \ "d" (__arg3), \ @@ -94,10 +94,10 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ return (type) __res; \ } -#define io_syscall5(type,name,type1,arg1,type2,arg2, \ +#define io_syscall5(type,fname,sname,type1,arg1,type2,arg2, \ type3,arg3,type4,arg4,type5,arg5) \ -type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \ - type5 arg5) { \ +type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \ + type5 arg5) { \ register type1 __arg1 asm("2") = arg1; \ register type2 __arg2 asm("3") = arg2; \ register type3 __arg3 asm("4") = arg3; \ @@ -108,7 +108,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, \ " svc %b1\n" \ " "__LR" %0,2" \ : "=d" (__res) \ - : "i" (__NR_##name), \ + : "i" (__NR_##sname), \ "d" (__arg1), \ "d" (__arg2), \ "d" (__arg3), \ diff --git a/src/syscall-x86_64.h b/src/syscall-x86_64.h index 572eecf..fd301a4 100644 --- a/src/syscall-x86_64.h +++ b/src/syscall-x86_64.h @@ -4,52 +4,52 @@ #define __NR_io_submit 209 #define __NR_io_cancel 210 -#define io_syscall1(type, name, type1, arg1) \ - type name(type1 arg1) \ +#define io_syscall1(type, fname, sname, type1, arg1) \ + type fname(type1 arg1) \ { \ long __ret; \ __asm__ __volatile__("syscall" : "=a" (__ret) : \ - "0" (__NR_##name), "D" (arg1)); \ + "0" (__NR_##sname), "D" (arg1)); \ return __ret; \ } -#define io_syscall2(type, name, type1, arg1, type2, arg2) \ - type name(type1 arg1, type2 arg2) \ +#define io_syscall2(type, fname, sname, type1, arg1, type2, arg2) \ + type fname(type1 arg1, type2 arg2) \ { \ long __ret; \ __asm__ __volatile__("syscall" : "=a" (__ret) : \ - "0" (__NR_##name), "D" (arg1), "S" (arg2)); \ + "0" (__NR_##sname), "D" (arg1), "S" (arg2)); \ return __ret; \ } -#define io_syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \ - type name(type1 arg1, type2 arg2, type3 arg3) \ +#define io_syscall3(type, fname, sname, type1, arg1, type2, arg2, type3, arg3) \ + type fname(type1 arg1, type2 arg2, type3 arg3) \ { \ long __ret; \ __asm__ __volatile__("syscall" : "=a" (__ret) : \ - "0" (__NR_##name), "D" (arg1), "S" (arg2), \ + "0" (__NR_##sname), "D" (arg1), "S" (arg2), \ "d" (arg3) \ ); \ return __ret; \ } -#define io_syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \ - type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ +#define io_syscall4(type, fname, sname, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \ + type fname(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ { \ long __ret; \ __asm__ __volatile__("movq %5,%%r10 ; syscall" : "=a" (__ret) : \ - "0" (__NR_##name), "D" (arg1), "S" (arg2), \ + "0" (__NR_##sname), "D" (arg1), "S" (arg2), \ "d" (arg3), "g" (arg4) \ ); \ return __ret; \ } -#define io_syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5) \ - type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ +#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) \ { \ long __ret; \ __asm__ __volatile__("movq %5,%%r10 ; movq %6,%%r8 ; syscall" : "=a" (__ret) : \ - "0" (__NR_##name), "D" (arg1), "S" (arg2), \ + "0" (__NR_##sname), "D" (arg1), "S" (arg2), \ "d" (arg3), "g" (arg4), "g" (arg5) \ ); \ return __ret; \ diff --git a/src/syscall.h b/src/syscall.h index f4e288f..e1edf80 100644 --- a/src/syscall.h +++ b/src/syscall.h @@ -4,6 +4,9 @@ #define SYMVER(compat_sym, orig_sym, ver_sym) \ __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@LIBAIO_" SYMSTR(ver_sym)); +#define DEFSYMVER(compat_sym, orig_sym, ver_sym) \ + __asm__(".symver " SYMSTR(compat_sym) "," SYMSTR(orig_sym) "@@LIBAIO_" SYMSTR(ver_sym)); + #if defined(__i386__) #include "syscall-i386.h" #elif defined(__x86_64__) -- cgit v1.2.1