[PATCH 05/11] Remove __sinit_locks / __sinit_recursive_mutex

Matthew Joyce <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
From: Matt Joyce <[email protected]>

Removed __sinit_lock_acquire() and __sinit_lock_release(). Replace these
with __sfp_lock_acquire() and __sfp_lock_release(), respectively. This
eliminates a potential deadlock issue between __sinit() and __sfp().
Removed now unused __sinit_recursive_mutex.
---
 newlib/libc/stdio/findfp.c | 19 +++----------------
 newlib/libc/stdio/local.h  |  2 --
 2 files changed, 3 insertions(+), 18 deletions(-)

diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c
index 66867e664..afbdad9b1 100644
--- a/newlib/libc/stdio/findfp.c
+++ b/newlib/libc/stdio/findfp.c
@@ -235,11 +235,11 @@ cleanup_stdio (struct _reent *ptr)
 void
 __sinit (struct _reent *s)
 {
-  __sinit_lock_acquire ();
+  __sfp_lock_acquire ();
 
   if (s->__cleanup)
     {
-      __sinit_lock_release ();
+      __sfp_lock_release ();
       return;
     }
 
@@ -268,13 +268,12 @@ __sinit (struct _reent *s)
   stderr_init (s->_stderr);
 #endif /* _REENT_GLOBAL_STDIO_STREAMS */
 
-  __sinit_lock_release ();
+  __sfp_lock_release ();
 }
 
 #ifndef __SINGLE_THREAD__
 
 __LOCK_INIT_RECURSIVE(static, __sfp_recursive_mutex);
-__LOCK_INIT_RECURSIVE(static, __sinit_recursive_mutex);
 
 void
 __sfp_lock_acquire (void)
@@ -288,18 +287,6 @@ __sfp_lock_release (void)
   __lock_release_recursive (__sfp_recursive_mutex);
 }
 
-void
-__sinit_lock_acquire (void)
-{
-  __lock_acquire_recursive (__sinit_recursive_mutex);
-}
-
-void
-__sinit_lock_release (void)
-{
-  __lock_release_recursive (__sinit_recursive_mutex);
-}
-
 /* Walkable file locking routine.  */
 static int
 __fp_lock (struct _reent * ptr __unused, FILE * fp)
diff --git a/newlib/libc/stdio/local.h b/newlib/libc/stdio/local.h
index 30c534dcd..9c6f63fdb 100644
--- a/newlib/libc/stdio/local.h
+++ b/newlib/libc/stdio/local.h
@@ -287,8 +287,6 @@ char *_llicvt (char *, long long, char);
 #else
 void __sfp_lock_acquire (void);
 void __sfp_lock_release (void);
-void __sinit_lock_acquire (void);
-void __sinit_lock_release (void);
 #endif
 
 /* Types used in positional argument support in vfprinf/vfwprintf.
-- 
2.31.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.