summaryrefslogtreecommitdiff
path: root/innobase/os
diff options
context:
space:
mode:
Diffstat (limited to 'innobase/os')
-rw-r--r--innobase/os/os0thread.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/innobase/os/os0thread.c b/innobase/os/os0thread.c
index 11bff73608a..74f5fbd9494 100644
--- a/innobase/os/os0thread.c
+++ b/innobase/os/os0thread.c
@@ -32,12 +32,27 @@ os_thread_get_curr_id(void)
pthr = pthread_self();
+#ifdef UNIV_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 */
+
+ /* 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)));
+#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! */
+
+ return((os_thread_id_t)pthr);
+#endif
#endif
}