summaryrefslogtreecommitdiff
path: root/include/my_pthread.h
diff options
context:
space:
mode:
authorMarc Alff <marc.alff@sun.com>2009-11-17 19:31:40 -0700
committerMarc Alff <marc.alff@sun.com>2009-11-17 19:31:40 -0700
commit244eced1a797f15dd0ebe0a58b6c054c26b4fa28 (patch)
tree23343f6c4530860c422afcfc2c9528a8e335578a /include/my_pthread.h
parent7b9fd341a00636995dc176f86e11f9e90bc0f5c9 (diff)
downloadmariadb-git-244eced1a797f15dd0ebe0a58b6c054c26b4fa28.tar.gz
WL#3230 concurrent hash
Backport from 6.0.14 to 5.6.0 Original code from Sergei Golubchik
Diffstat (limited to 'include/my_pthread.h')
-rw-r--r--include/my_pthread.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/my_pthread.h b/include/my_pthread.h
index b6d9feae067..3e23c0fa410 100644
--- a/include/my_pthread.h
+++ b/include/my_pthread.h
@@ -152,6 +152,7 @@ int pthread_join(pthread_t thread, void **value_ptr);
#define pthread_detach_this_thread()
#define pthread_condattr_init(A)
#define pthread_condattr_destroy(A)
+#define pthread_yield() SwitchToThread()
#define my_pthread_getprio(thread_id) pthread_dummy(0)
@@ -385,6 +386,17 @@ void my_pthread_attr_getstacksize(pthread_attr_t *attrib, size_t *size);
int my_pthread_mutex_trylock(pthread_mutex_t *mutex);
#endif
+#if !defined(HAVE_PTHREAD_YIELD_ONE_ARG) && !defined(HAVE_PTHREAD_YIELD_ZERO_ARG)
+/* no pthread_yield() available */
+#ifdef HAVE_SCHED_YIELD
+#define pthread_yield() sched_yield()
+#elif defined(HAVE_PTHREAD_YIELD_NP) /* can be Mac OS X */
+#define pthread_yield() pthread_yield_np()
+#elif defined(HAVE_THR_YIELD)
+#define pthread_yield() thr_yield()
+#endif
+#endif
+
/*
The defines set_timespec and set_timespec_nsec should be used
for calculating an absolute time at which
@@ -663,6 +675,7 @@ struct st_my_thread_var
my_bool init;
struct st_my_thread_var *next,**prev;
void *opt_info;
+ void *stack_ends_here;
#ifndef DBUG_OFF
void *dbug;
char name[THREAD_NAME_SIZE+1];