| // SPDX-License-Identifier: GPL-2.0-or-later |
| |
| mod bindings; |
| use bindings::{bql_block_unlock, bql_locked, rust_bql_mock_lock}; |
| |
| mod cell; |
| pub use cell::*; |
| |
| /// An internal function that is used by doctests. |
| pub fn start_test() { |
| // SAFETY: integration tests are run with --test-threads=1, while |
| // unit tests and doctests are not multithreaded and do not have |
| // any BQL-protected data. Just set bql_locked to true. |
| unsafe { |
| rust_bql_mock_lock(); |
| } |
| } |
| |
| pub fn is_locked() -> bool { |
| // SAFETY: the function does nothing but return a thread-local bool |
| unsafe { bql_locked() } |
| } |
| |
| pub fn block_unlock(increase: bool) { |
| // SAFETY: this only adjusts a counter |
| unsafe { |
| bql_block_unlock(increase); |
| } |
| } |