X7ROOT File Manager
Current Path:
/opt/alt/python313/include/python3.13/cpython
opt
/
alt
/
python313
/
include
/
python3.13
/
cpython
/
??
..
??
abstract.h
(3.32 KB)
??
bytearrayobject.h
(1.14 KB)
??
bytesobject.h
(1.15 KB)
??
cellobject.h
(1.05 KB)
??
ceval.h
(1.09 KB)
??
classobject.h
(2.19 KB)
??
code.h
(14.85 KB)
??
compile.h
(2.07 KB)
??
complexobject.h
(909 B)
??
context.h
(1.79 KB)
??
critical_section.h
(5.46 KB)
??
descrobject.h
(1.56 KB)
??
dictobject.h
(3.78 KB)
??
fileobject.h
(652 B)
??
fileutils.h
(232 B)
??
floatobject.h
(900 B)
??
frameobject.h
(1.17 KB)
??
funcobject.h
(6.88 KB)
??
genobject.h
(2.93 KB)
??
import.h
(725 B)
??
initconfig.h
(8 KB)
??
listobject.h
(1.76 KB)
??
lock.h
(1.72 KB)
??
longintrepr.h
(5 KB)
??
longobject.h
(5.45 KB)
??
memoryobject.h
(2.17 KB)
??
methodobject.h
(2.22 KB)
??
modsupport.h
(1.02 KB)
??
monitoring.h
(7.52 KB)
??
object.h
(18.63 KB)
??
objimpl.h
(3.73 KB)
??
odictobject.h
(1.28 KB)
??
picklebufobject.h
(848 B)
??
pthread_stubs.h
(3.83 KB)
??
pyatomic.h
(16.12 KB)
??
pyatomic_gcc.h
(18.68 KB)
??
pyatomic_msc.h
(28.56 KB)
??
pyatomic_std.h
(23.77 KB)
??
pyctype.h
(1.35 KB)
??
pydebug.h
(1.38 KB)
??
pyerrors.h
(2.84 KB)
??
pyfpe.h
(444 B)
??
pyframe.h
(1.9 KB)
??
pyhash.h
(1.35 KB)
??
pylifecycle.h
(2.75 KB)
??
pymem.h
(2.78 KB)
??
pystate.h
(9.24 KB)
??
pystats.h
(5.31 KB)
??
pythonrun.h
(4.23 KB)
??
pythread.h
(1.47 KB)
??
pytime.h
(707 B)
??
setobject.h
(2 KB)
??
sysmodule.h
(775 B)
??
traceback.h
(282 B)
??
tracemalloc.h
(823 B)
??
tupleobject.h
(1.3 KB)
??
unicodeobject.h
(24.49 KB)
??
warnings.h
(564 B)
??
weakrefobject.h
(2.2 KB)
Editing: lock.h
#ifndef Py_CPYTHON_LOCK_H # error "this header file must not be included directly" #endif #define _Py_UNLOCKED 0 #define _Py_LOCKED 1 // A mutex that occupies one byte. The lock can be zero initialized to // represent the unlocked state. // // Typical initialization: // PyMutex m = (PyMutex){0}; // // Or initialize as global variables: // static PyMutex m; // // Typical usage: // PyMutex_Lock(&m); // ... // PyMutex_Unlock(&m); // // The contents of the PyMutex are not part of the public API, but are // described to aid in understanding the implementation and debugging. Only // the two least significant bits are used. The remaining bits are always zero: // 0b00: unlocked // 0b01: locked // 0b10: unlocked and has parked threads // 0b11: locked and has parked threads typedef struct PyMutex { uint8_t _bits; // (private) } PyMutex; // exported function for locking the mutex PyAPI_FUNC(void) PyMutex_Lock(PyMutex *m); // exported function for unlocking the mutex PyAPI_FUNC(void) PyMutex_Unlock(PyMutex *m); // Locks the mutex. // // If the mutex is currently locked, the calling thread will be parked until // the mutex is unlocked. If the current thread holds the GIL, then the GIL // will be released while the thread is parked. static inline void _PyMutex_Lock(PyMutex *m) { uint8_t expected = _Py_UNLOCKED; if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_LOCKED)) { PyMutex_Lock(m); } } #define PyMutex_Lock _PyMutex_Lock // Unlocks the mutex. static inline void _PyMutex_Unlock(PyMutex *m) { uint8_t expected = _Py_LOCKED; if (!_Py_atomic_compare_exchange_uint8(&m->_bits, &expected, _Py_UNLOCKED)) { PyMutex_Unlock(m); } } #define PyMutex_Unlock _PyMutex_Unlock
Upload File
Create Folder