pyo3_ffi/cpython/
critical_section.rs1#[cfg(Py_GIL_DISABLED)]
2use crate::PyMutex;
3use crate::PyObject;
4
5#[repr(C)]
6#[cfg(Py_GIL_DISABLED)]
7pub struct PyCriticalSection {
8 _cs_prev: usize,
9 _cs_mutex: *mut PyMutex,
10}
11
12#[repr(C)]
13#[cfg(Py_GIL_DISABLED)]
14pub struct PyCriticalSection2 {
15 _cs_base: PyCriticalSection,
16 _cs_mutex2: *mut PyMutex,
17}
18
19#[cfg(not(Py_GIL_DISABLED))]
20opaque_struct!(pub PyCriticalSection);
21
22#[cfg(not(Py_GIL_DISABLED))]
23opaque_struct!(pub PyCriticalSection2);
24
25extern "C" {
26 pub fn PyCriticalSection_Begin(c: *mut PyCriticalSection, op: *mut PyObject);
27 pub fn PyCriticalSection_End(c: *mut PyCriticalSection);
28 pub fn PyCriticalSection2_Begin(c: *mut PyCriticalSection2, a: *mut PyObject, b: *mut PyObject);
29 pub fn PyCriticalSection2_End(c: *mut PyCriticalSection2);
30}