aboutsummaryrefslogtreecommitdiff
path: root/libthreads/rwlock.h
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2020-11-11 01:13:43 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2020-11-11 01:20:03 +0100
commit3b14ab0254a131e458c4f5ffdee931e868206424 (patch)
tree0a88ed88851e966d3c5f2ac08b4eb243c99c96b0 /libthreads/rwlock.h
parent986c7a7d686a850830f9fc5bea1fadcfe9f4999c (diff)
downloadhurd-3b14ab0254a131e458c4f5ffdee931e868206424.tar.gz
hurd-3b14ab0254a131e458c4f5ffdee931e868206424.tar.bz2
hurd-3b14ab0254a131e458c4f5ffdee931e868206424.zip
libthreads: Remove
libthreads is most probably completely broken, and not the long-term road anyway. * config.make.in (VERSIONING): Remove. * configure.ac: Test for pfinet assembly compatibility instead of libthreads assembly compatibility. Do not set VERSIONING. * libthreads: Remove directory. * Makefile (lib-subdirs): Remove libthreads. * doc/hurd.texi (Threads Library): Rename references to libthreads into libpthread. * release/rfloppy.copy: Do not objcopy lib/libthreads.so. * release/tool-Makefile (rfloppy-solib): Remove libthreads.
Diffstat (limited to 'libthreads/rwlock.h')
-rw-r--r--libthreads/rwlock.h128
1 files changed, 0 insertions, 128 deletions
diff --git a/libthreads/rwlock.h b/libthreads/rwlock.h
deleted file mode 100644
index cbe56d7c..00000000
--- a/libthreads/rwlock.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/* Simple reader/writer locks.
-
- Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2, or (at
- your option) any later version.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#ifndef _RWLOCK_H
-#define _RWLOCK_H 1
-
-#include <cthreads.h>
-#include <assert-backtrace.h>
-#include <features.h>
-
-#ifdef RWLOCK_DEFINE_EI
-#define RWLOCK_EI
-#else
-#define RWLOCK_EI __extern_inline
-#endif
-
-struct rwlock
-{
- struct mutex master;
- struct condition wakeup;
- int readers;
- int writers_waiting;
- int readers_waiting;
-};
-
-extern void rwlock_reader_lock (struct rwlock *lock);
-
-extern void rwlock_writer_lock (struct rwlock *lock);
-
-extern void rwlock_reader_unlock (struct rwlock *lock);
-
-extern void rwlock_writer_unlock (struct rwlock *lock);
-
-extern void rwlock_init (struct rwlock *lock);
-
-#if defined(__USE_EXTERN_INLINES) || defined(RWLOCK_DEFINE_EI)
-
-/* Get a reader lock on reader-writer lock LOCK for disknode DN */
-RWLOCK_EI void
-rwlock_reader_lock (struct rwlock *lock)
-{
- mutex_lock (&lock->master);
- if (lock->readers == -1 || lock->writers_waiting)
- {
- lock->readers_waiting++;
- do
- condition_wait (&lock->wakeup, &lock->master);
- while (lock->readers == -1 || lock->writers_waiting);
- lock->readers_waiting--;
- }
- lock->readers++;
- mutex_unlock (&lock->master);
-}
-
-/* Get a writer lock on reader-writer lock LOCK for disknode DN */
-RWLOCK_EI void
-rwlock_writer_lock (struct rwlock *lock)
-{
- mutex_lock (&lock->master);
- if (lock->readers)
- {
- lock->writers_waiting++;
- do
- condition_wait (&lock->wakeup, &lock->master);
- while (lock->readers);
- lock->writers_waiting--;
- }
- lock->readers = -1;
- mutex_unlock (&lock->master);
-}
-
-/* Release a reader lock on reader-writer lock LOCK for disknode DN */
-RWLOCK_EI void
-rwlock_reader_unlock (struct rwlock *lock)
-{
- mutex_lock (&lock->master);
- assert_backtrace (lock->readers);
- lock->readers--;
- if (lock->readers_waiting || lock->writers_waiting)
- condition_broadcast (&lock->wakeup);
- mutex_unlock (&lock->master);
-}
-
-/* Release a writer lock on reader-writer lock LOCK for disknode DN */
-RWLOCK_EI void
-rwlock_writer_unlock (struct rwlock *lock)
-{
- mutex_lock (&lock->master);
- assert_backtrace (lock->readers == -1);
- lock->readers = 0;
- if (lock->readers_waiting || lock->writers_waiting)
- condition_broadcast (&lock->wakeup);
- mutex_unlock (&lock->master);
-}
-
-/* Initialize reader-writer lock LOCK */
-RWLOCK_EI void
-rwlock_init (struct rwlock *lock)
-{
- mutex_init (&lock->master);
- condition_init (&lock->wakeup);
- lock->readers = 0;
- lock->readers_waiting = 0;
- lock->writers_waiting = 0;
-}
-
-#endif /* Use extern inlines. */
-
-#define RWLOCK_INITIALIZER \
- { MUTEX_INITIALIZER, CONDITION_INITIALIZER, 0, 0, 0 }
-
-
-#endif /* rwlock.h */