aboutsummaryrefslogtreecommitdiff
path: root/stubs/iothread-lock.c
diff options
context:
space:
mode:
Diffstat (limited to 'stubs/iothread-lock.c')
-rw-r--r--stubs/iothread-lock.c23
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;
}