X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fm4%2Fensc_syscall.m4;h=c2cef7152ffb520191dd1844c25253ef5e5f53e7;hb=02d358546ec9b7c6e38cf415b9581e6523411d61;hp=a8026ceeb8bc6563ca63f9c8cb11a00bbbe8f1d2;hpb=87998f16e18ddeb456442018592a4787a5cbef4d;p=util-vserver.git diff --git a/util-vserver/m4/ensc_syscall.m4 b/util-vserver/m4/ensc_syscall.m4 index a8026ce..c2cef71 100644 --- a/util-vserver/m4/ensc_syscall.m4 +++ b/util-vserver/m4/ensc_syscall.m4 @@ -17,9 +17,30 @@ dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. dnl Usage: ENSC_SYSCALL +AC_DEFUN([ENSC_SYSCALL_ALTERNATIVE], +[ + AC_MSG_CHECKING([whether to use alternative _syscallX macros]) + AC_ARG_ENABLE([alternative-syscalls], + [AC_HELP_STRING([--disable-alternative-syscalls], + [do not use the alternative _syscallX macros + provided by Herbert Poetzl (default: use them)])], + [case $enableval in + (yes|no) ensc_use_alternative_syscall_macros=$enableval;; + (*) AC_MSG_ERROR(['$enableval' is not a valid value for '--disable-alternative-syscalls']);; + esac], + [ensc_use_alternative_syscall_macros=yes]) + + case $ensc_use_alternative_syscall_macros in + (yes) AC_DEFINE(ENSC_USE_ALTERNATIVE_SYSCALL_MACROS, 1, [Use alternative _syscallX macros]);; + esac + + AC_MSG_RESULT([$ensc_use_alternative_syscall_macros]) +]) + AC_DEFUN([ENSC_SYSCALL], [ - AC_REQUIRE([ENSC_KERNEL_HEADERS]) + AC_REQUIRE([ENSC_SYSCALL_ALTERNATIVE]) + AC_MSG_CHECKING([for syscall(2) invocation method]) AC_ARG_WITH([syscall], [AC_HELP_STRING([--with-syscall=METHOD], @@ -29,14 +50,14 @@ AC_DEFUN([ENSC_SYSCALL], AC_MSG_RESULT([$with_syscall]) case x"$with_syscall" in - xauto) + (xauto) AC_CACHE_CHECK([which syscall(2) invocation works], [ensc_cv_test_syscall], [ AC_LANG_PUSH(C) - AC_COMPILE_IFELSE([ -#include -#include + AC_COMPILE_IFELSE(AC_LANG_SOURCE([ +#include "$srcdir/lib/syscall-wrap.h" #include + #define __NR_foo0 300 #define __NR_foo1 301 #define __NR_foo2 302 @@ -58,7 +79,7 @@ int main() { foo4(1,2,3,4) || \ foo5(1,2,3,4,5); } - ], + ]), [ensc_cv_test_syscall=fast], [ensc_cv_test_syscall=traditional]) @@ -66,13 +87,17 @@ int main() { ]) with_syscall=$ensc_cv_test_syscall ;; - xfast|xtraditional) + (xfast|xtraditional) ;; *) AC_MSG_ERROR(['$with_syscall' is not a valid value for '--with-syscall']) ;; esac + if test x"$with_syscall $ensc_use_alternative_syscall_macros" = 'xfast yes'; then + with_syscall='alternative' + fi + if test x"$with_syscall" = xtraditional; then AC_DEFINE(ENSC_SYSCALL_TRADITIONAL, 1, [Define to 1 when the fast syscall(2) invocation does not work]) fi