PyObject *async_exc; /* Asynchronous exception to raise */
unsigned long thread_id; /* Thread id where this tstate was created */
+ /* Native thread id where this tstate was created. This will be 0 except on
+ * those platforms that have the notion of native thread id, for which the
+ * macro PY_HAVE_THREAD_NATIVE_ID is then defined.
+ */
+ unsigned long native_thread_id;
+
int trash_delete_nesting;
PyObject *trash_delete_later;
--- /dev/null
+Add native_thread_id to PyThreadState. Patch by Gabriele N. Tornetta.
tstate = boot->tstate;
tstate->thread_id = PyThread_get_thread_ident();
+#ifdef PY_HAVE_THREAD_NATIVE_ID
+ tstate->native_thread_id = PyThread_get_thread_native_id();
+#else
+ tstate->native_thread_id = 0;
+#endif
_PyThreadState_Init(tstate);
PyEval_AcquireThread(tstate);
tstate->interp->num_threads++;
tstate->gilstate_counter = 0;
tstate->async_exc = NULL;
tstate->thread_id = PyThread_get_thread_ident();
+#ifdef PY_HAVE_THREAD_NATIVE_ID
+ tstate->native_thread_id = PyThread_get_thread_native_id();
+#else
+ tstate->native_thread_id = 0;
+#endif
tstate->dict = NULL;