summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2023-10-17 22:32:00 (GMT)
committerGitHub <noreply@github.com>2023-10-17 22:32:00 (GMT)
commita53d7cb6729dc3f254b70afcf19eaf71a2eed540 (patch)
tree679f68637995e4bfefc98f0ec40edac6150693cd /Include
parente37620edfd77b78b913b5eab55cd91327c3e7fd3 (diff)
downloadcpython-a53d7cb6729dc3f254b70afcf19eaf71a2eed540.zip
cpython-a53d7cb6729dc3f254b70afcf19eaf71a2eed540.tar.gz
cpython-a53d7cb6729dc3f254b70afcf19eaf71a2eed540.tar.bz2
gh-84570: Send-Wait Fixes for _xxinterpchannels (gh-111006)
There were a few things I did in gh-110565 that need to be fixed. I also forgot to add tests in that PR. (Note that this PR exposes a refleak introduced by gh-110246. I'll take care of that separately.)
Diffstat (limited to 'Include')
-rw-r--r--Include/internal/pycore_pythread.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/Include/internal/pycore_pythread.h b/Include/internal/pycore_pythread.h
index 8ce5a79..ffd7398 100644
--- a/Include/internal/pycore_pythread.h
+++ b/Include/internal/pycore_pythread.h
@@ -86,6 +86,21 @@ extern int _PyThread_at_fork_reinit(PyThread_type_lock *lock);
#endif /* HAVE_FORK */
+// unset: -1 seconds, in nanoseconds
+#define PyThread_UNSET_TIMEOUT ((_PyTime_t)(-1 * 1000 * 1000 * 1000))
+
+/* Helper to acquire an interruptible lock with a timeout. If the lock acquire
+ * is interrupted, signal handlers are run, and if they raise an exception,
+ * PY_LOCK_INTR is returned. Otherwise, PY_LOCK_ACQUIRED or PY_LOCK_FAILURE
+ * are returned, depending on whether the lock can be acquired within the
+ * timeout.
+ */
+// Exported for the _xxinterpchannels module.
+PyAPI_FUNC(PyLockStatus) PyThread_acquire_lock_timed_with_retries(
+ PyThread_type_lock,
+ PY_TIMEOUT_T microseconds);
+
+
#ifdef __cplusplus
}
#endif