11#pragma once
22#include < mutex>
33
4- #include " futex .h"
4+ #include " block_manager .h"
55#include " lib.h"
66#include " verifying_macro.h"
77
@@ -27,13 +27,13 @@ struct mutex {
2727
2828 as_atomic void unlock () {
2929 locked = 0 ;
30- futex_queues. PopAll (
30+ block_manager. UnblockAllOn (
3131 state.addr ); // To have the ability schedule any coroutine
3232 }
3333
3434 private:
3535 int locked{0 };
36- FutexState state{reinterpret_cast <std::intptr_t >(&locked), locked};
36+ BlockState state{reinterpret_cast <std::intptr_t >(&locked), locked};
3737
3838 friend struct condition_variable ;
3939};
@@ -48,7 +48,7 @@ struct shared_mutex {
4848 }
4949 as_atomic void unlock () {
5050 locked = 0 ;
51- futex_queues. PopAll (state.addr );
51+ block_manager. UnblockAllOn (state.addr );
5252 }
5353 as_atomic void lock_shared () {
5454 while (locked == -1 ) {
@@ -59,12 +59,12 @@ struct shared_mutex {
5959 }
6060 as_atomic void unlock_shared () {
6161 --locked;
62- futex_queues. PopAll (state.addr );
62+ block_manager. UnblockAllOn (state.addr );
6363 }
6464
6565 private:
6666 int locked{0 };
67- FutexState state{reinterpret_cast <std::intptr_t >(&locked), locked};
67+ BlockState state{reinterpret_cast <std::intptr_t >(&locked), locked};
6868};
6969
7070struct condition_variable {
@@ -76,9 +76,9 @@ struct condition_variable {
7676 lock.lock ();
7777 }
7878
79- as_atomic void notify_one () { futex_queues. Pop (addr, 1 ); }
79+ as_atomic void notify_one () { block_manager. UnblockOn (addr, 1 ); }
8080
81- as_atomic void notify_all () { futex_queues. PopAll (addr); }
81+ as_atomic void notify_all () { block_manager. UnblockAllOn (addr); }
8282
8383 private:
8484 std::intptr_t addr;
0 commit comments