summaryrefslogtreecommitdiff
path: root/kern/mutex.c
diff options
context:
space:
mode:
Diffstat (limited to 'kern/mutex.c')
-rw-r--r--kern/mutex.c54
1 files changed, 1 insertions, 53 deletions
diff --git a/kern/mutex.c b/kern/mutex.c
index 87e3d64e..62609768 100644
--- a/kern/mutex.c
+++ b/kern/mutex.c
@@ -15,60 +15,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef X15_MUTEX_PI
-
-#include <stddef.h>
-
#include <kern/init.h>
-#include <kern/mutex.h>
-#include <kern/mutex_i.h>
-#include <kern/sleepq.h>
-
-void
-mutex_lock_slow(struct mutex *mutex)
-{
- struct sleepq *sleepq;
- unsigned long flags;
- unsigned int state;
-
- sleepq = sleepq_lend(mutex, false, &flags);
-
- for (;;) {
- state = atomic_swap_acquire(&mutex->state, MUTEX_CONTENDED);
-
- if (state == MUTEX_UNLOCKED) {
- break;
- }
-
- sleepq_wait(sleepq, "mutex");
- }
-
- if (sleepq_empty(sleepq)) {
- state = atomic_swap_acquire(&mutex->state, MUTEX_LOCKED);
- assert(state == MUTEX_CONTENDED);
- }
-
- sleepq_return(sleepq, flags);
-}
-
-void
-mutex_unlock_slow(struct mutex *mutex)
-{
- struct sleepq *sleepq;
- unsigned long flags;
-
- sleepq = sleepq_acquire(mutex, false, &flags);
-
- if (sleepq == NULL) {
- return;
- }
-
- sleepq_signal(sleepq);
-
- sleepq_release(sleepq, flags);
-}
-
-#endif /* X15_MUTEX_PI */
+#include <kern/thread.h>
static int __init
mutex_setup(void)