pyo3_ffi/cpython/
critical_section.rs1#[cfg(any(Py_3_14, 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_libpython! {
26 pub fn PyCriticalSection_Begin(c: *mut PyCriticalSection, op: *mut PyObject);
27 #[cfg(Py_3_14)]
28 pub fn PyCriticalSection_BeginMutex(c: *mut PyCriticalSection, m: *mut PyMutex);
29 pub fn PyCriticalSection_End(c: *mut PyCriticalSection);
30 pub fn PyCriticalSection2_Begin(c: *mut PyCriticalSection2, a: *mut PyObject, b: *mut PyObject);
31 #[cfg(Py_3_14)]
32 pub fn PyCriticalSection2_BeginMutex(
33 c: *mut PyCriticalSection2,
34 m1: *mut PyMutex,
35 m2: *mut PyMutex,
36 );
37 pub fn PyCriticalSection2_End(c: *mut PyCriticalSection2);
38}