mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into magare.gmz:/home/kgeorge/mysql/autopush/B28284-5.1-opt include/my_pthread.h: Auto merged
This commit is contained in:
@@ -519,6 +519,7 @@ typedef struct st_my_pthread_fastmutex_t
|
||||
pthread_mutex_t mutex;
|
||||
uint spins;
|
||||
} my_pthread_fastmutex_t;
|
||||
void fastmutex_global_init(void);
|
||||
|
||||
int my_pthread_fastmutex_init(my_pthread_fastmutex_t *mp,
|
||||
const pthread_mutexattr_t *attr);
|
||||
|
@@ -78,6 +78,9 @@ my_bool my_init(void)
|
||||
my_umask_dir= 0700; /* Default umask for new directories */
|
||||
#if defined(THREAD) && defined(SAFE_MUTEX)
|
||||
safe_mutex_global_init(); /* Must be called early */
|
||||
#endif
|
||||
#if defined(THREAD) && defined(MY_PTHREAD_FASTMUTEX) && !defined(SAFE_MUTEX)
|
||||
fastmutex_global_init(); /* Must be called early */
|
||||
#endif
|
||||
netware_init();
|
||||
#ifdef THREAD
|
||||
|
@@ -394,15 +394,11 @@ ulong mutex_delay(ulong delayloops)
|
||||
#define MY_PTHREAD_FASTMUTEX_SPINS 8
|
||||
#define MY_PTHREAD_FASTMUTEX_DELAY 4
|
||||
|
||||
static int cpu_count= 0;
|
||||
|
||||
int my_pthread_fastmutex_init(my_pthread_fastmutex_t *mp,
|
||||
const pthread_mutexattr_t *attr)
|
||||
{
|
||||
static int cpu_count= 0;
|
||||
#ifdef _SC_NPROCESSORS_CONF
|
||||
if (!cpu_count && (attr == MY_MUTEX_INIT_FAST))
|
||||
cpu_count= sysconf(_SC_NPROCESSORS_CONF);
|
||||
#endif
|
||||
|
||||
if ((cpu_count > 1) && (attr == MY_MUTEX_INIT_FAST))
|
||||
mp->spins= MY_PTHREAD_FASTMUTEX_SPINS;
|
||||
else
|
||||
@@ -432,4 +428,13 @@ int my_pthread_fastmutex_lock(my_pthread_fastmutex_t *mp)
|
||||
}
|
||||
return pthread_mutex_lock(&mp->mutex);
|
||||
}
|
||||
|
||||
|
||||
void fastmutex_global_init(void)
|
||||
{
|
||||
#ifdef _SC_NPROCESSORS_CONF
|
||||
cpu_count= sysconf(_SC_NPROCESSORS_CONF);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* defined(THREAD) && defined(MY_PTHREAD_FASTMUTEX) && !defined(SAFE_MUTEX) */
|
||||
|
Reference in New Issue
Block a user