This is admittedly rather ugly code to come up with a unique 4-byte
identifier for the thread. Since our threads are pthreads and a pthread
maps 1:1 to a TCB, the address of the TCB is sufficient. Yes, every
TCB sees a different piece of real storage mapped to the first page,
so the code does make sense.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@95016
13f79535-47bb-0310-9956-
ffa450edef68
Changes with Apache 2.0.37
+ *) Fix a mod_ssl build problem on OS/390. [Jeff Trawick]
+
*) Fixed If-Modified-Since on Win32, which would give false positives
because of the sub-second resolution of file timestamps on that
platform. [Cliff Woolley]
static unsigned long ssl_util_thr_id(void)
{
+ /* OpenSSL needs this to return an unsigned long. On OS/390, the pthread
+ * id is a structure twice that big. Use the TCB pointer instead as a
+ * unique unsigned long.
+ */
+#ifdef __MVS__
+ struct PSA {
+ char unmapped[540];
+ unsigned long PSATOLD;
+ } *psaptr = 0;
+
+ return psaptr->PSATOLD;
+#else
return (unsigned long) apr_os_thread_current();
+#endif
}
static apr_status_t ssl_util_thread_cleanup(void *data)