diff options
Diffstat (limited to 'stubs/iothread-lock.c')
-rw-r--r-- | stubs/iothread-lock.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/stubs/iothread-lock.c b/stubs/iothread-lock.c index d7890e5..6050c08 100644 --- a/stubs/iothread-lock.c +++ b/stubs/iothread-lock.c @@ -1,9 +1,17 @@ #include "qemu/osdep.h" #include "qemu/main-loop.h" +static bool bql_is_locked = false; +static uint32_t bql_unlock_blocked; + bool bql_locked(void) { - return false; + return bql_is_locked; +} + +void rust_bql_mock_lock(void) +{ + bql_is_locked = true; } void bql_lock_impl(const char *file, int line) @@ -12,4 +20,17 @@ void bql_lock_impl(const char *file, int line) void bql_unlock(void) { + assert(!bql_unlock_blocked); +} + +void bql_block_unlock(bool increase) +{ + uint32_t new_value; + + assert(bql_locked()); + + /* check for overflow! */ + new_value = bql_unlock_blocked + increase - !increase; + assert((new_value > bql_unlock_blocked) == increase); + bql_unlock_blocked = new_value; } |