From: Jeff Trawick Date: Thu, 9 May 2002 10:53:28 +0000 (+0000) Subject: Fix a mod_ssl build problem on OS/390. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e41ba3cb2da4d6ae4ff42c756e5b20daa992ebf8;p=thirdparty%2Fapache%2Fhttpd.git Fix a mod_ssl build problem on OS/390. 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/modules/ssl@95016 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/ssl_util.c b/ssl_util.c index b01f18db418..2147473638e 100644 --- a/ssl_util.c +++ b/ssl_util.c @@ -419,7 +419,20 @@ static void ssl_util_thr_lock(int mode, int type, 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)