X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fm4%2Fensc_syscall.m4;h=a8026ceeb8bc6563ca63f9c8cb11a00bbbe8f1d2;hb=bb95a260f18983e80abcad495bd224b386a705e1;hp=8d2feed1619c01074ad3b1c0024e3c0a1c8123a7;hpb=9ec079f34facc3ac11a4956cf3f97ecfc6752a0b;p=util-vserver.git diff --git a/util-vserver/m4/ensc_syscall.m4 b/util-vserver/m4/ensc_syscall.m4 index 8d2feed..a8026ce 100644 --- a/util-vserver/m4/ensc_syscall.m4 +++ b/util-vserver/m4/ensc_syscall.m4 @@ -19,6 +19,7 @@ dnl Usage: ENSC_SYSCALL AC_DEFUN([ENSC_SYSCALL], [ + AC_REQUIRE([ENSC_KERNEL_HEADERS]) AC_MSG_CHECKING([for syscall(2) invocation method]) AC_ARG_WITH([syscall], [AC_HELP_STRING([--with-syscall=METHOD], @@ -30,18 +31,39 @@ AC_DEFUN([ENSC_SYSCALL], case x"$with_syscall" in xauto) AC_CACHE_CHECK([which syscall(2) invocation works], [ensc_cv_test_syscall], - [AC_COMPILE_IFELSE([ + [ + AC_LANG_PUSH(C) + AC_COMPILE_IFELSE([ #include #include #include -#define __NR_foo 300 -inline static _syscall4(int, foo, int, a, int, b, int, c, int, d) +#define __NR_foo0 300 +#define __NR_foo1 301 +#define __NR_foo2 302 +#define __NR_foo3 303 +#define __NR_foo4 304 +#define __NR_foo5 305 +inline static _syscall0(int, foo0) +inline static _syscall1(int, foo1, int, a) +inline static _syscall2(int, foo2, int, a, int, b) +inline static _syscall3(int, foo3, int, a, int, b, int, c) +inline static _syscall4(int, foo4, int, a, int, b, int, c, int, d) +inline static _syscall5(int, foo5, int, a, int, b, int, c, int, d, int, e) int main() { - return foo(1,2,3,4); + return foo0() || \ + foo1(1) || \ + foo2(1,2) || \ + foo3(1,2,3) || \ + foo4(1,2,3,4) || \ + foo5(1,2,3,4,5); } - ], - [ensc_cv_test_syscall=fast],[ensc_cv_test_syscall=traditional])]) + ], + [ensc_cv_test_syscall=fast], + [ensc_cv_test_syscall=traditional]) + + AC_LANG_POP + ]) with_syscall=$ensc_cv_test_syscall ;; xfast|xtraditional)