summaryrefslogtreecommitdiff
path: root/innobase/os/os0thread.c
diff options
context:
space:
mode:
authorunknown <heikki@hundin.mysql.fi>2002-08-06 22:59:13 +0300
committerunknown <heikki@hundin.mysql.fi>2002-08-06 22:59:13 +0300
commita3edc742b94a94ff455ff549d7e2a9f5faa346a0 (patch)
tree0ed7a5d28436450a6e79787357c337dfae761d1d /innobase/os/os0thread.c
parentcbb0dc14ccd3ff932edf5a29aa6af0ac210be4b9 (diff)
downloadmariadb-git-a3edc742b94a94ff455ff549d7e2a9f5faa346a0.tar.gz
Many files:
Merge InnoDB-3.23.52d innobase/btr/btr0sea.c: Merge InnoDB-3.23.52d innobase/buf/buf0buf.c: Merge InnoDB-3.23.52d innobase/buf/buf0lru.c: Merge InnoDB-3.23.52d innobase/include/buf0buf.h: Merge InnoDB-3.23.52d innobase/include/ha0ha.h: Merge InnoDB-3.23.52d innobase/include/log0log.h: Merge InnoDB-3.23.52d innobase/include/os0file.h: Merge InnoDB-3.23.52d innobase/include/os0thread.h: Merge InnoDB-3.23.52d innobase/include/ha0ha.ic: Merge InnoDB-3.23.52d innobase/include/os0sync.ic: Merge InnoDB-3.23.52d innobase/include/srv0start.h: Merge InnoDB-3.23.52d innobase/include/sync0rw.ic: Merge InnoDB-3.23.52d innobase/include/sync0sync.ic: Merge InnoDB-3.23.52d innobase/include/ut0dbg.h: Merge InnoDB-3.23.52d innobase/include/univ.i: Merge InnoDB-3.23.52d innobase/lock/lock0lock.c: Merge InnoDB-3.23.52d innobase/log/log0log.c: Merge InnoDB-3.23.52d innobase/mem/mem0pool.c: Merge InnoDB-3.23.52d innobase/os/os0file.c: Merge InnoDB-3.23.52d innobase/os/os0thread.c: Merge InnoDB-3.23.52d innobase/srv/srv0srv.c: Merge InnoDB-3.23.52d innobase/srv/srv0start.c: Merge InnoDB-3.23.52d innobase/sync/sync0arr.c: Merge InnoDB-3.23.52d innobase/sync/sync0rw.c: Merge InnoDB-3.23.52d innobase/sync/sync0sync.c: Merge InnoDB-3.23.52d innobase/thr/thr0loc.c: Merge InnoDB-3.23.52d innobase/trx/trx0trx.c: Merge InnoDB-3.23.52d innobase/configure.in: Merge InnoDB-3.23.52d sql/ha_innobase.cc: Merge InnoDB-3.23.52d
Diffstat (limited to 'innobase/os/os0thread.c')
-rw-r--r--innobase/os/os0thread.c85
1 files changed, 49 insertions, 36 deletions
diff --git a/innobase/os/os0thread.c b/innobase/os/os0thread.c
index 44817302340..75f19f6d175 100644
--- a/innobase/os/os0thread.c
+++ b/innobase/os/os0thread.c
@@ -18,37 +18,63 @@ Created 9/8/1995 Heikki Tuuri
#include "srv0srv.h"
-/*********************************************************************
-Returns the thread identifier of current thread. */
-
-os_thread_id_t
-os_thread_get_curr_id(void)
-/*=======================*/
+/*******************************************************************
+Compares two threads or thread ids for equality */
+
+ibool
+os_thread_eq(
+/*=========*/
+ /* out: TRUE if equal */
+ os_thread_t a, /* in: OS thread or thread id */
+ os_thread_t b) /* in: OS thread or thread id */
{
#ifdef __WIN__
- return(GetCurrentThreadId());
+ if (a == b) {
+ return(TRUE);
+ }
+
+ return(FALSE);
#else
- pthread_t pthr;
+ if (pthread_equal(a, b)) {
+ return(TRUE);
+ }
- pthr = pthread_self();
+ return(FALSE);
+#endif
+}
-#ifdef HPUX
- /* TODO: in the future we have to change os_thread_id
- to pthread_t! */
+/********************************************************************
+Converts an OS thread or thread id to a ulint. It is NOT guaranteed that
+the ulint is unique for the thread though! */
- /* 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. */
+ulint
+os_thread_pf(
+/*=========*/
+ os_thread_t a)
+{
+#ifdef UNIV_HPUX
+ /* In HP-UX a pthread_t is a struct of 3 fields: field1, field2,
+ field3. We do not know if field1 determines the thread uniquely. */
- return((os_thread_id_t)(pthr.field1));
+ return((ulint)(a.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! */
-
- return((os_thread_id_t)pthr);
+ return((ulint)a);
#endif
+}
+
+/*********************************************************************
+Returns the thread identifier of current thread. Currently the thread
+identifier is the thread handle itself. Note that in HP-UX pthread_t is
+a struct of 3 fields. */
+
+os_thread_id_t
+os_thread_get_curr_id(void)
+/*=======================*/
+{
+#ifdef __WIN__
+ return(GetCurrentThread());
+#else
+ return(pthread_self());
#endif
}
@@ -81,7 +107,6 @@ os_thread_create(
arg,
0, /* thread runs immediately */
thread_id);
- ut_a(thread);
if (srv_set_thread_priorities) {
@@ -118,7 +143,7 @@ Returns handle to the current thread. */
os_thread_t
os_thread_get_curr(void)
-/*=======================*/
+/*====================*/
{
#ifdef __WIN__
return(GetCurrentThread());
@@ -126,18 +151,6 @@ os_thread_get_curr(void)
return(pthread_self());
#endif
}
-
-/*********************************************************************
-Converts a thread id to a ulint. */
-
-ulint
-os_thread_conv_id_to_ulint(
-/*=======================*/
- /* out: converted to ulint */
- os_thread_id_t id) /* in: thread id */
-{
- return((ulint)id);
-}
/*********************************************************************
Advises the os to give up remainder of the thread's time slice. */