summaryrefslogtreecommitdiff
path: root/libio/genops.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-01-28 11:35:54 +0000
committerUlrich Drepper <drepper@redhat.com>1999-01-28 11:35:54 +0000
commit51e176c2c2cd6d62d7619efb4aab569ded5a2416 (patch)
tree42e5b2b963de3db945d42033a64b565c9cb534b6 /libio/genops.c
parent8ce63ec09b21cee470731ee9253a9c2855cf836e (diff)
downloadglibc-51e176c2c2cd6d62d7619efb4aab569ded5a2416.tar.gz
Update.
* libio/genops.c (_IO_un_link, _IO_link_in): Don't use locking if _IO_MTSAFE_IO is not defined.
Diffstat (limited to 'libio/genops.c')
-rw-r--r--libio/genops.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/libio/genops.c b/libio/genops.c
index 85d42face4..f925b0d87b 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU IO Library.
This library is free software; you can redistribute it and/or
@@ -31,7 +31,9 @@
#endif
#include <string.h>
+#ifdef _IO_MTSAFE_IO
static _IO_lock_t list_all_lock = _IO_lock_initializer;
+#endif
void
_IO_un_link (fp)
@@ -39,8 +41,10 @@ _IO_un_link (fp)
{
if (fp->_flags & _IO_LINKED)
{
+#ifdef _IO_MTSAFE_IO
_IO_FILE **f;
_IO_lock_lock (list_all_lock);
+#endif
for (f = &_IO_list_all; *f != NULL; f = &(*f)->_chain)
{
if (*f == fp)
@@ -49,7 +53,9 @@ _IO_un_link (fp)
break;
}
}
+#ifdef _IO_MTSAFE_IO
_IO_lock_unlock (list_all_lock);
+#endif
fp->_flags &= ~_IO_LINKED;
}
}
@@ -61,10 +67,14 @@ _IO_link_in (fp)
if ((fp->_flags & _IO_LINKED) == 0)
{
fp->_flags |= _IO_LINKED;
+#ifdef _IO_MTSAFE_IO
_IO_lock_lock (list_all_lock);
+#endif
fp->_chain = _IO_list_all;
_IO_list_all = fp;
+#ifdef _IO_MTSAFE_IO
_IO_lock_unlock (list_all_lock);
+#endif
}
}