linux-try-sys-wait4-20030516
authorDerrick Brashear <shadow@dementia.org>
Fri, 16 May 2003 18:42:28 +0000 (18:42 +0000)
committerDerrick Brashear <shadow@dementia.org>
Fri, 16 May 2003 18:42:28 +0000 (18:42 +0000)
we may have close/wait4 instead of close/chdir or open/exit

acinclude.m4
src/afs/LINUX/osi_module.c
src/cf/linux-test4.m4

index ab2b771..0ce0f35 100644 (file)
@@ -184,6 +184,7 @@ case $system in
                    LINUX_EXPORTS_SYS_CALL_TABLE
                    LINUX_EXPORTS_SYS_CHDIR
                    LINUX_EXPORTS_SYS_CLOSE
+                   LINUX_EXPORTS_SYS_WAIT4
                    if test "x$ac_cv_linux_exports_sys_call_table" = "xno"; then
                          linux_syscall_method=none
                          if test "x$ac_cv_linux_exports_init_mm" = "xyes"; then
@@ -204,6 +205,9 @@ case $system in
                         if test "x$ac_cv_linux_exports_sys_close" = "xyes" ; then
                          AC_DEFINE(EXPORTED_SYS_CLOSE, 1, [define if your linux kernel exports sys_close])
                         fi
+                        if test "x$ac_cv_linux_exports_sys_wait4" = "xyes" ; then
+                         AC_DEFINE(EXPORTED_SYS_WAIT4, 1, [define if your linux kernel exports sys_wait4])
+                        fi
                    fi
                  fi
                 if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
index 9f4fad7..cab7e6b 100644 (file)
@@ -280,6 +280,13 @@ int init_module(void)
            break;
        }
 #else
+#if defined(EXPORTED_SYS_WAIT4) && defined(EXPORTED_SYS_CLOSE)
+        if (ptr[0] == (unsigned long)&sys_close &&
+            ptr[__NR_wait4 - __NR_close] == (unsigned long)&sys_wait4) {
+            sys_call_table=ptr - __NR_close;
+            break;
+        }
+#else
 #if defined(EXPORTED_SYS_CHDIR) && defined(EXPORTED_SYS_CLOSE)
         if (ptr[0] == (unsigned long)&sys_close &&
            ptr[__NR_chdir - __NR_close] == (unsigned long)&sys_chdir) {
@@ -294,6 +301,7 @@ int init_module(void)
        }
 #endif
 #endif
+#endif
     }
 #ifdef EXPORTED_KALLSYMS_ADDRESS
     ret=kallsyms_address_to_symbol((unsigned long)sys_call_table, &mod_name,
index 6b4386b..024a0bf 100644 (file)
@@ -154,6 +154,23 @@ AC_MSG_RESULT($ac_cv_linux_exports_sys_close)
 CPPFLAGS="$save_CPPFLAGS"])
 
 
+AC_DEFUN(LINUX_EXPORTS_SYS_WAIT4, [
+AC_MSG_CHECKING(for exported sys_wait4)
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ $CPPFLAGS"
+AC_CACHE_VAL(ac_cv_linux_exports_sys_wait4,
+[
+AC_TRY_COMPILE(
+[#include <linux/modversions.h>],
+[#ifndef __ver_sys_wait4
+#error sys_wait4 not exported
+#endif],
+ac_cv_linux_exports_sys_wait4=yes,
+ac_cv_linux_exports_sys_wait4=no)])
+AC_MSG_RESULT($ac_cv_linux_exports_sys_wait4)
+CPPFLAGS="$save_CPPFLAGS"])
+
+
 AC_DEFUN(LINUX_EXPORTS_TASKLIST_LOCK, [
 AC_MSG_CHECKING(for exported tasklist_lock)
 save_CPPFLAGS="$CPPFLAGS"