function,PyThread_get_key_value,3.2,,
function,PyThread_get_stacksize,3.2,,
function,PyThread_get_thread_ident,3.2,,
-function,PyThread_get_thread_native_id,3.2,,
+function,PyThread_get_thread_native_id,3.2,on platforms with native thread IDs,
function,PyThread_init_thread,3.2,,
function,PyThread_release_lock,3.2,,
function,PyThread_set_key_value,3.2,,
"PyThread_get_key_value",
"PyThread_get_stacksize",
"PyThread_get_thread_ident",
- "PyThread_get_thread_native_id",
"PyThread_init_thread",
"PyThread_release_lock",
"PyThread_set_key_value",
--- /dev/null
+:c:func:`PyThread_get_thread_native_id` is excluded from the stable ABI on
+platforms where it doesn't exist (like Solaris).
function PyThread_get_thread_ident
added 3.2
function PyThread_get_thread_native_id
+ ifdef PY_HAVE_THREAD_NATIVE_ID
added 3.2
function PyThread_init_thread
added 3.2
'MS_WINDOWS': 'on Windows',
'HAVE_FORK': 'on platforms with fork()',
'USE_STACKCHECK': 'on platforms with USE_STACKCHECK',
+ 'PY_HAVE_THREAD_NATIVE_ID': 'on platforms with native thread IDs',
}
+# To generate the DLL definition, we need to know which feature macros are
+# defined on Windows. On all platforms.
+# Best way to do that is to hardcode the list (and later test in on Windows).
+WINDOWS_IFDEFS = frozenset({
+ 'MS_WINDOWS',
+ 'PY_HAVE_THREAD_NATIVE_ID',
+})
+
# The stable ABI manifest (Misc/stable_abi.txt) exists only to fill the
# following dataclasses.
# Feel free to change its syntax (and the `parse_manifest` function)
for item in sorted(
manifest.select(
- {'function'}, include_abi_only=True, ifdef={'MS_WINDOWS'}),
+ {'function'}, include_abi_only=True, ifdef=WINDOWS_IFDEFS),
key=sort_key):
write(f'EXPORT_FUNC({item.name})')
for item in sorted(
manifest.select(
- {'data'}, include_abi_only=True, ifdef={'MS_WINDOWS'}),
+ {'data'}, include_abi_only=True, ifdef=WINDOWS_IFDEFS),
key=sort_key):
write(f'EXPORT_DATA({item.name})')