| // 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); | |
| } | |
| } |