From 285a163a4ceba7ef9d307f87e5e691732e52b760 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Mon, 28 Apr 2014 21:12:11 +0200 Subject: [PATCH] Issue #21312: Update the thread_foobar.h template file to include newer threading APIs. Patch by Jack McCracken. --- Misc/ACKS | 1 + Misc/NEWS | 3 ++ Python/thread_foobar.h | 63 ++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/Misc/ACKS b/Misc/ACKS index f27e8f85377..6e27c367d8c 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -847,6 +847,7 @@ Madison May Lucas Maystre Arnaud Mazin Matt McClure +Jack McCracken Rebecca McCreary Kirk McDonald Chris McDonough diff --git a/Misc/NEWS b/Misc/NEWS index 5cc1c58a53b..9127958aff4 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -320,6 +320,9 @@ C API Documentation ------------- +- Issue #21312: Update the thread_foobar.h template file to include newer + threading APIs. Patch by Jack McCracken. + - Issue #21043: Remove the recommendation for specific CA organizations and to mention the ability to load the OS certificates. diff --git a/Python/thread_foobar.h b/Python/thread_foobar.h index d2b78c5caed..ea96f9c9d79 100644 --- a/Python/thread_foobar.h +++ b/Python/thread_foobar.h @@ -1,4 +1,3 @@ - /* * Initialization. */ @@ -60,11 +59,19 @@ PyThread_free_lock(PyThread_type_lock lock) int PyThread_acquire_lock(PyThread_type_lock lock, int waitflag) +{ + return PyThread_acquire_lock_timed(lock, waitflag ? -1 : 0, 0); +} + +PyLockStatus +PyThread_acquire_lock_timed(PyThread_type_lock lock, PY_TIMEOUT_T microseconds, + int intr_flag) { int success; - dprintf(("PyThread_acquire_lock(%p, %d) called\n", lock, waitflag)); - dprintf(("PyThread_acquire_lock(%p, %d) -> %d\n", lock, waitflag, success)); + dprintf(("PyThread_acquire_lock_timed(%p, %lld, %d) called\n", lock, microseconds, intr_flag)); + dprintf(("PyThread_acquire_lock_timed(%p, %lld, %d) -> %d\n", + lock, microseconds, intr_flag, success)); return success; } @@ -73,3 +80,53 @@ PyThread_release_lock(PyThread_type_lock lock) { dprintf(("PyThread_release_lock(%p) called\n", lock)); } + +/* The following are only needed if native TLS support exists */ +#define Py_HAVE_NATIVE_TLS + +#ifdef Py_HAVE_NATIVE_TLS +int +PyThread_create_key(void) +{ + int result; + return result; +} + +void +PyThread_delete_key(int key) +{ + +} + +int +PyThread_set_key_value(int key, void *value) +{ + int ok; + + /* A failure in this case returns -1 */ + if (!ok) + return -1; + return 0; +} + +void * +PyThread_get_key_value(int key) +{ + void *result; + + return result; +} + +void +PyThread_delete_key_value(int key) +{ + +} + +void +PyThread_ReInitTLS(void) +{ + +} + +#endif