*** empty log message ***
authorThomas Bushnell, BSG <thomas@gnu.org>
Thu, 12 Sep 1996 22:22:29 +0000 (22:22 +0000)
committerThomas Bushnell, BSG <thomas@gnu.org>
Thu, 12 Sep 1996 22:22:29 +0000 (22:22 +0000)
(vfprintf): Only call __libc_cleanup_region_end if USE_IN_LIBIO,
thus matching the sense of the tests around
__libc_cleanup_region_start at the front of the function.
* stdio-common/vfscanf.c: Include <libc-lock.h>.
(UNLOCK_STREAM) [! USE_IN_LIBIO]: Call
__libc_cleanup_region_end, not __libc_cleanup_region_start.

ChangeLog
stdio-common/vfprintf.c
stdio-common/vfscanf.c
sysdeps/mach/libc-lock.h
sysdeps/stub/intr-msg.h [new file with mode: 0644]

index 4b466de..2b90349 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,14 +1,17 @@
 Thu Sep 12 12:33:52 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>
 
        * stdio-common/vfprintf.c: Include <libc-lock.h>.
-       * stdio-common/vfscanf.c: Likewise.
+       (vfprintf): Only call __libc_cleanup_region_end if USE_IN_LIBIO,
+       thus matching the sense of the tests around
+       __libc_cleanup_region_start at the front of the function.
+       * stdio-common/vfscanf.c: Include <libc-lock.h>.
+       (UNLOCK_STREAM) [! USE_IN_LIBIO]: Call
+       __libc_cleanup_region_end, not __libc_cleanup_region_start.
 
        * sysdeps/mach/libc-lock.h (__libc_cleanup_region_start): New
        macro.
        (__libc_cleanup_region_end): New macro.
 
-       * stdio-common/vfscanf.c (UNLOCK_STREAM) [! USE_IN_LIBIO]: Call
-       __libc_cleanup_region_end, not __libc_cleanup_region_start.
 
 Thu Sep 12 03:35:27 1996  Ulrich Drepper  <drepper@cygnus.com>
 
index d27bbdb..dc2983d 100644 (file)
@@ -1311,7 +1311,10 @@ do_positional:
 
 all_done:
   /* Unlock the stream.  */
+#ifdef USE_IN_LIBIO
+  /* (stdio has no locking yet.) */
   __libc_cleanup_region_end (1);
+#endif
 
   return done;
 }
index 903f584..f83fd28 100644 (file)
@@ -24,6 +24,7 @@ Cambridge, MA 02139, USA.  */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <libc-lock.h>
 
 #ifdef __GNUC__
 #define        HAVE_LONGLONG
@@ -119,7 +120,7 @@ Cambridge, MA 02139, USA.  */
 # define LOCK_STREAM(S)                                                              \
   __libc_cleanup_region_start (&__funlockfile, (S));                         \
   __flockfile (S)
-# define UNLOCK_STREAM __libc_cleanup_region_start (1)
+# define UNLOCK_STREAM __libc_cleanup_region_end (1)
 #endif
 #endif
 
index 2c39592..ea3d306 100644 (file)
@@ -56,5 +56,19 @@ typedef struct __libc_lock_opaque__ __libc_lock_t;
 /* Unlock the named lock variable.  */
 #define __libc_lock_unlock(NAME) __mutex_unlock (&(NAME))
 
+/* Start a critical region with a cleanup function */
+#define __libc_cleanup_region_start(FCT, ARG)                              \
+{                                                                          \
+  (typeof FCT) __save_FCT = FCT;                                           \
+  (typeof ARG) __save_ARG = ARG;                                           \
+  /* close brace is in __libc_cleanup_region_end below. */
+
+/* End a critical region started with __libc_cleanup_region_start. */
+#define __libc_cleanup_region_end(DOIT)                                            \
+  if (DOIT)                                                                \
+    (* __save_FCT)(__save_ARG);                                                    \
+}
+
+      
 
 #endif /* libc-lock.h */
diff --git a/sysdeps/stub/intr-msg.h b/sysdeps/stub/intr-msg.h
new file mode 100644 (file)
index 0000000..0186aa3
--- /dev/null
@@ -0,0 +1,15 @@
+/* Stubby version of intr-msg.h. */
+
+/* This file must be written in machine-dependent form for each hurd port.
+   and define the following:
+
+   INTR_MSG_TRAP
+   INTR_MSG_BACK_OUT
+   SYSCALL_EXAMINE
+   struct mach_msg_trap_args
+   MSG_EXAMINE
+
+   See sysdeps/mach/hurd/i386/intr-msg.h for an example. */
+
+
+#error Could not find machine-dependent intr-msg.h file.