summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/lock.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/Python/lock.c b/Python/lock.c
index 5fa8bf7..de25adc 100644
--- a/Python/lock.c
+++ b/Python/lock.c
@@ -249,6 +249,13 @@ _PyRawMutex_UnlockSlow(_PyRawMutex *m)
}
}
+int
+_PyEvent_IsSet(PyEvent *evt)
+{
+ uint8_t v = _Py_atomic_load_uint8(&evt->v);
+ return v == _Py_LOCKED;
+}
+
void
_PyEvent_Notify(PyEvent *evt)
{
@@ -297,6 +304,30 @@ PyEvent_WaitTimed(PyEvent *evt, PyTime_t timeout_ns)
}
}
+_PyEventRc *
+_PyEventRc_New(void)
+{
+ _PyEventRc *erc = (_PyEventRc *)PyMem_RawCalloc(1, sizeof(_PyEventRc));
+ if (erc != NULL) {
+ erc->refcount = 1;
+ }
+ return erc;
+}
+
+void
+_PyEventRc_Incref(_PyEventRc *erc)
+{
+ _Py_atomic_add_ssize(&erc->refcount, 1);
+}
+
+void
+_PyEventRc_Decref(_PyEventRc *erc)
+{
+ if (_Py_atomic_add_ssize(&erc->refcount, -1) == 1) {
+ PyMem_RawFree(erc);
+ }
+}
+
static int
unlock_once(_PyOnceFlag *o, int res)
{