diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-11-11 01:13:43 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-11-11 01:20:03 +0100 |
commit | 3b14ab0254a131e458c4f5ffdee931e868206424 (patch) | |
tree | 0a88ed88851e966d3c5f2ac08b4eb243c99c96b0 /libthreads/rwlock.h | |
parent | 986c7a7d686a850830f9fc5bea1fadcfe9f4999c (diff) | |
download | hurd-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.h | 128 |
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 */ |