From c282b73ad86ab2bfbf189538addb696d9b10bcaf Mon Sep 17 00:00:00 2001 From: "heikki@hundin.mysql.fi" <> Date: Sat, 3 Aug 2002 21:53:42 +0300 Subject: [PATCH] os0thread.c: Remove the complex typecast used to convert a HP-UX pthread struct to os_thread_id_t; the typecast seemed to work wrong in gcc-3.1 on HP-UX-10.20 --- innobase/os/os0thread.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/innobase/os/os0thread.c b/innobase/os/os0thread.c index 74f5fbd949..4481730234 100644 --- a/innobase/os/os0thread.c +++ b/innobase/os/os0thread.c @@ -32,24 +32,20 @@ os_thread_get_curr_id(void) pthr = pthread_self(); -#ifdef UNIV_HPUX +#ifdef HPUX /* TODO: in the future we have to change os_thread_id - to pthread_t; the following cast may work in a wrong way on some - systems if pthread_t is a struct; this is just a quick fix - for HP-UX to eliminate a compiler warning */ + to pthread_t! */ + /* In HP-UX a pthread_t seems to be a struct of three fields: + field1, field2, field3, and the first probably determines (?) + the thread identity. */ - /* The below typecast trick will certainly not work if this assertion - fails */ - - ut_a(sizeof(pthread_t) >= sizeof(os_thread_id_t)); - - return(*(os_thread_id_t*)((void*) (&pthr))); + return((os_thread_id_t)(pthr.field1)); #else /* TODO: define os_thread_id_t in Unix as the same as pthread_t - and compare them with appropriate Posix pthread functions! - The following typecast will not work if pthread_t is not - an integer or a pointer to a unique object for the thread! */ + and compare them with appropriate Posix pthread functions! + The following typecast will not work if pthread_t is not + an integer or a pointer to a unique object for the thread! */ return((os_thread_id_t)pthr); #endif -- 2.30.9