about summary refs log tree commit diff
path: root/sysdeps/mach
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-02-18 20:57:51 +0000
committerRoland McGrath <roland@gnu.org>2002-02-18 20:57:51 +0000
commit21297437bb37c5f1aedb615fd41e93efc12f556a (patch)
tree77461c41453829cbf06db3d934f82706d0b485a2 /sysdeps/mach
parent9ce8b3c817156108b9f1a1cf12a3fa6eb4332f11 (diff)
downloadglibc-21297437bb37c5f1aedb615fd41e93efc12f556a.tar.gz
glibc-21297437bb37c5f1aedb615fd41e93efc12f556a.tar.xz
glibc-21297437bb37c5f1aedb615fd41e93efc12f556a.zip
* sysdeps/mach/configure.in: Check for <mach/machine/ndr_def.h>
	or <machine/ndr_def.h> and add -DNDR_DEF_HEADER=... to DEFINES.
	* sysdeps/mach/configure: Regenerated.
	* mach/mach_init.c [NDR_DEF_HEADER]: #include it.

	* hurd/hurdfault.c (_hurdsig_fault_init): Add a cast.

	* hurd/hurd/signal.h: Include <setjmp.h> for `jmp_buf' decl.

	* mach/msgserver.c (__mach_msg_server_timeout) [! MACH_RCV_LARGE]:
	Double MAX_SIZE and don't retry on MACH_RCV_TOO_LARGE.

	* sysdeps/mach/hurd/times.c
	[NO_CREATION_TIME] (startup_time): New static variable.
	[NO_CREATION_TIME] (times_init): New static function in __libc_subinit.
	(__times) [NO_CREATION_TIME]: Use startup_time in lieu of task
	creation_time from task_basic_info.
	(__times): Use __gettimeofday instead of __host_get_time.

	* hurd/intr-msg.c (_hurd_intr_rpc_mach_msg) [! MACH_MSG_TYPE_BIT]:
	Use untyped Mach IPC message format.

	* hurd/catch-exc.c: Include <assert.h>, missing from last change.
Diffstat (limited to 'sysdeps/mach')
-rw-r--r--sysdeps/mach/configure67
-rw-r--r--sysdeps/mach/configure.in5
-rw-r--r--sysdeps/mach/hurd/times.c23
3 files changed, 89 insertions, 6 deletions
diff --git a/sysdeps/mach/configure b/sysdeps/mach/configure
index 7a26960237..250a2929e5 100644
--- a/sysdeps/mach/configure
+++ b/sysdeps/mach/configure
@@ -236,3 +236,70 @@ if test $libc_cv_mach_host_page_size = yes; then
 EOF
 
 fi
+
+ac_safe=`echo "mach/machine/ndr_def.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for mach/machine/ndr_def.h""... $ac_c" 1>&6
+echo "configure:243: checking for mach/machine/ndr_def.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 248 "configure"
+#include "confdefs.h"
+#include <mach/machine/ndr_def.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:253: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    DEFINES="$DEFINES -DNDR_DEF_HEADER='<mach/machine/ndr_def.h>'"
+else
+  echo "$ac_t""no" 1>&6
+ac_safe=`echo "machine/ndr_def.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for machine/ndr_def.h""... $ac_c" 1>&6
+echo "configure:274: checking for machine/ndr_def.h" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 279 "configure"
+#include "confdefs.h"
+#include <machine/ndr_def.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:284: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    DEFINES="$DEFINES -DNDR_DEF_HEADER='<machine/ndr_def.h>'"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+fi
+
diff --git a/sysdeps/mach/configure.in b/sysdeps/mach/configure.in
index 05dc45b61d..fc74e9cb7b 100644
--- a/sysdeps/mach/configure.in
+++ b/sysdeps/mach/configure.in
@@ -68,3 +68,8 @@ AC_EGREP_HEADER(host_page_size, mach/mach_host.defs,
 if test $libc_cv_mach_host_page_size = yes; then
   AC_DEFINE([HAVE_HOST_PAGE_SIZE])
 fi
+
+AC_CHECK_HEADER(mach/machine/ndr_def.h, [dnl
+  DEFINES="$DEFINES -DNDR_DEF_HEADER='<mach/machine/ndr_def.h>'"], [dnl
+AC_CHECK_HEADER(machine/ndr_def.h, [dnl
+  DEFINES="$DEFINES -DNDR_DEF_HEADER='<machine/ndr_def.h>'"])])
diff --git a/sysdeps/mach/hurd/times.c b/sysdeps/mach/hurd/times.c
index e232757090..2065aac49a 100644
--- a/sysdeps/mach/hurd/times.c
+++ b/sysdeps/mach/hurd/times.c
@@ -33,6 +33,17 @@ clock_from_time_value (const time_value_t *t)
   return t->seconds * 1000000 + t->microseconds;
 }
 
+#if NO_CREATION_TIME
+static time_value_t startup_time;
+static void times_init (void) __attribute__ ((unused));
+static void
+times_init (void)
+{
+  __gettimeofday ((struct timeval *) &startup_time, NULL);
+}
+text_set_element (__libc_subinit, times_init);
+#endif
+
 /* Store the CPU time used by this process and all its
    dead children (and their dead children) in BUFFER.
    Return the elapsed real time, or (clock_t) -1 for errors.
@@ -66,15 +77,15 @@ __times (struct tms *tms)
   /* XXX This can't be implemented until getrusage(RUSAGE_CHILDREN) can be.  */
   tms->tms_cutime = tms->tms_cstime = 0;
 
-  err = __host_get_time (__mach_host_self (), &now);
-  if (err)
-    return __hurd_fail (err);
+  if (__gettimeofday ((struct timeval *) &now, NULL) < 0)
+    return -1;
 
 #if NO_CREATION_TIME
-  return 0;			/* XXX */
+# define our_creation_time	startup_time
 #else
-  return (clock_from_time_value (&now)
-	  - clock_from_time_value (&bi.creation_time));
+# define our_creation_time	bi.startup_time
 #endif
+  return (clock_from_time_value (&now)
+	  - clock_from_time_value (&our_creation_time));
 }
 weak_alias (__times, times)