mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base
into weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
This commit is contained in:
@@ -27,7 +27,7 @@ functions */
|
||||
#endif
|
||||
|
||||
#include <sys/locking.h>
|
||||
#include <windows.h>
|
||||
#include <winsock2.h>
|
||||
#include <math.h> /* Because of rint() */
|
||||
#include <fcntl.h>
|
||||
#include <io.h>
|
||||
@@ -350,6 +350,7 @@ inline double ulonglong2double(ulonglong value)
|
||||
#define HAVE_SETFILEPOINTER
|
||||
#define HAVE_VIO_READ_BUFF
|
||||
#define HAVE_STRNLEN
|
||||
#define HAVE_WINSOCK2
|
||||
|
||||
#define strcasecmp stricmp
|
||||
#define strncasecmp strnicmp
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
#define HA_OPEN_ABORT_IF_CRASHED 16
|
||||
#define HA_OPEN_FOR_REPAIR 32 /* open even if crashed */
|
||||
#define HA_OPEN_FROM_SQL_LAYER 64
|
||||
#define HA_OPEN_MMAP 128 /* open memory mapped */
|
||||
|
||||
/* The following is parameter to ha_rkey() how to use key */
|
||||
|
||||
|
||||
@@ -80,6 +80,7 @@ extern FILE *_db_fp_(void);
|
||||
#define DBUG_ASSERT(A) assert(A)
|
||||
#define DBUG_EXPLAIN(buf,len) _db_explain_(0, (buf),(len))
|
||||
#define DBUG_EXPLAIN_INITIAL(buf,len) _db_explain_init_((buf),(len))
|
||||
#define IF_DBUG(A) A
|
||||
#else /* No debugger */
|
||||
|
||||
#define DBUG_ENTER(a1)
|
||||
@@ -95,7 +96,7 @@ extern FILE *_db_fp_(void);
|
||||
#define DBUG_SET(a1)
|
||||
#define DBUG_SET_INITIAL(a1)
|
||||
#define DBUG_POP()
|
||||
#define DBUG_PROCESS(a1) (a1)
|
||||
#define DBUG_PROCESS(a1)
|
||||
#define DBUG_SETJMP(a1) setjmp(a1)
|
||||
#define DBUG_LONGJMP(a1) longjmp(a1)
|
||||
#define DBUG_DUMP(keyword,a1,a2)
|
||||
@@ -106,6 +107,7 @@ extern FILE *_db_fp_(void);
|
||||
#define DBUG_UNLOCK_FILE
|
||||
#define DBUG_EXPLAIN(buf,len)
|
||||
#define DBUG_EXPLAIN_INITIAL(buf,len)
|
||||
#define IF_DBUG(A)
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -932,7 +932,6 @@ typedef unsigned long long my_size_t;
|
||||
#define my_offsetof(TYPE, MEMBER) \
|
||||
((size_t)((char *)&(((TYPE *)0x10)->MEMBER) - (char*)0x10))
|
||||
|
||||
|
||||
#define NullS (char *) 0
|
||||
/* Nowdays we do not support MessyDos */
|
||||
#ifndef NEAR
|
||||
@@ -1171,7 +1170,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
*/
|
||||
#define uint3korr(A) (long) (*((unsigned int *) (A)) & 0xFFFFFF)
|
||||
#endif
|
||||
#define uint4korr(A) (*((unsigned long *) (A)))
|
||||
#define uint4korr(A) (*((uint32 *) (A)))
|
||||
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) +\
|
||||
@@ -1285,17 +1284,19 @@ do { doubleget_union _tmp; \
|
||||
*(((char *)(T))+1)=(char) (((A) >> 8));\
|
||||
*(((char *)(T))+2)=(char) (((A) >> 16));\
|
||||
*(((char *)(T))+3)=(char) (((A) >> 24)); } while(0)
|
||||
#define int5store(T,A) do { *((char *)(T))=((A));\
|
||||
*(((char *)(T))+1)=(((A) >> 8));\
|
||||
*(((char *)(T))+2)=(((A) >> 16));\
|
||||
*(((char *)(T))+3)=(((A) >> 24)); \
|
||||
*(((char *)(T))+4)=(((A) >> 32)); } while(0)
|
||||
#define int6store(T,A) do { *((char *)(T))=((A));\
|
||||
*(((char *)(T))+1)=(((A) >> 8)); \
|
||||
*(((char *)(T))+2)=(((A) >> 16)); \
|
||||
*(((char *)(T))+3)=(((A) >> 24)); \
|
||||
*(((char *)(T))+4)=(((A) >> 32)); \
|
||||
*(((char *)(T))+5)=(((A) >> 40)); } while(0)
|
||||
#define int5store(T,A) do { *((char *)(T))= (char)((A)); \
|
||||
*(((char *)(T))+1)= (char)(((A) >> 8)); \
|
||||
*(((char *)(T))+2)= (char)(((A) >> 16)); \
|
||||
*(((char *)(T))+3)= (char)(((A) >> 24)); \
|
||||
*(((char *)(T))+4)= (char)(((A) >> 32)); \
|
||||
} while(0)
|
||||
#define int6store(T,A) do { *((char *)(T))= (char)((A)); \
|
||||
*(((char *)(T))+1)= (char)(((A) >> 8)); \
|
||||
*(((char *)(T))+2)= (char)(((A) >> 16)); \
|
||||
*(((char *)(T))+3)= (char)(((A) >> 24)); \
|
||||
*(((char *)(T))+4)= (char)(((A) >> 32)); \
|
||||
*(((char *)(T))+5)= (char)(((A) >> 40)); \
|
||||
} while(0)
|
||||
#define int8store(T,A) do { uint def_temp= (uint) (A), def_temp2= (uint) ((A) >> 32); \
|
||||
int4store((T),def_temp); \
|
||||
int4store((T+4),def_temp2); } while(0)
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
***************
|
||||
*** 97,103 ****
|
||||
|
||||
|
||||
/* Fix problem with S_ISLNK() on Linux */
|
||||
! #if defined(HAVE_LINUXTHREADS)
|
||||
#undef _GNU_SOURCE
|
||||
#define _GNU_SOURCE 1
|
||||
#endif
|
||||
--- 97,103 ----
|
||||
|
||||
|
||||
/* Fix problem with S_ISLNK() on Linux */
|
||||
! #if defined(TARGET_OS_LINUX) || defined(__GLIBC__)
|
||||
#undef _GNU_SOURCE
|
||||
#define _GNU_SOURCE 1
|
||||
#endif
|
||||
@@ -18,7 +18,6 @@
|
||||
#ifndef _my_pthread_h
|
||||
#define _my_pthread_h
|
||||
|
||||
#include <errno.h>
|
||||
#ifndef ETIME
|
||||
#define ETIME ETIMEDOUT /* For FreeBSD */
|
||||
#endif
|
||||
@@ -85,6 +84,7 @@ typedef struct {
|
||||
|
||||
typedef int pthread_mutexattr_t;
|
||||
#define win_pthread_self my_thread_var->pthread_self
|
||||
#define pthread_self() win_pthread_self
|
||||
#define pthread_handler_t EXTERNC void * __cdecl
|
||||
typedef void * (__cdecl *pthread_handler)(void *);
|
||||
|
||||
@@ -140,7 +140,6 @@ void pthread_exit(void *a); /* was #define pthread_exit(A) ExitThread(A)*/
|
||||
|
||||
#define ETIMEDOUT 145 /* Win32 doesn't have this */
|
||||
#define getpid() GetCurrentThreadId()
|
||||
#define pthread_self() win_pthread_self
|
||||
#define HAVE_LOCALTIME_R 1
|
||||
#define _REENTRANT 1
|
||||
#define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
|
||||
@@ -648,12 +647,14 @@ extern pthread_mutexattr_t my_errorcheck_mutexattr;
|
||||
#define MY_MUTEX_INIT_ERRCHK NULL
|
||||
#endif
|
||||
|
||||
typedef ulong my_thread_id;
|
||||
|
||||
extern my_bool my_thread_global_init(void);
|
||||
extern void my_thread_global_end(void);
|
||||
extern my_bool my_thread_init(void);
|
||||
extern void my_thread_end(void);
|
||||
extern const char *my_thread_name(void);
|
||||
extern long my_thread_id(void);
|
||||
extern my_thread_id my_thread_dbug_id(void);
|
||||
extern int pthread_no_free(void *);
|
||||
extern int pthread_dummy(int);
|
||||
|
||||
@@ -680,7 +681,7 @@ struct st_my_thread_var
|
||||
pthread_mutex_t * volatile current_mutex;
|
||||
pthread_cond_t * volatile current_cond;
|
||||
pthread_t pthread_self;
|
||||
long id;
|
||||
my_thread_id id;
|
||||
int cmp_length;
|
||||
int volatile abort;
|
||||
my_bool init;
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
***************
|
||||
*** 286,293 ****
|
||||
#undef HAVE_PTHREAD_RWLOCK_RDLOCK
|
||||
#undef HAVE_SNPRINTF
|
||||
|
||||
! #define sigset(A,B) pthread_signal((A),(void (*)(int)) (B))
|
||||
! #define signal(A,B) pthread_signal((A),(void (*)(int)) (B))
|
||||
#define my_pthread_attr_setprio(A,B)
|
||||
#endif /* defined(PTHREAD_SCOPE_GLOBAL) && !defined(PTHREAD_SCOPE_SYSTEM) */
|
||||
|
||||
--- 294,301 ----
|
||||
#undef HAVE_PTHREAD_RWLOCK_RDLOCK
|
||||
#undef HAVE_SNPRINTF
|
||||
|
||||
! #define my_sigset(A,B) pthread_signal((A),(void (*)(int)) (B))
|
||||
! #define my_signal(A,B) pthread_signal((A),(void (*)(int)) (B))
|
||||
#define my_pthread_attr_setprio(A,B)
|
||||
#endif /* defined(PTHREAD_SCOPE_GLOBAL) && !defined(PTHREAD_SCOPE_SYSTEM) */
|
||||
|
||||
***************
|
||||
*** 324,337 ****
|
||||
#if !defined(HAVE_SIGWAIT) && !defined(HAVE_mit_thread) && !defined(HAVE_rts_threads) && !defined(sigwait) && !defined(alpha_linux_port) && !defined(HAVE_NONPOSIX_SIGWAIT) && !defined(HAVE_DEC_3_2_THREADS) && !defined(_AIX)
|
||||
int sigwait(sigset_t *setp, int *sigp); /* Use our implemention */
|
||||
#endif
|
||||
! #if !defined(HAVE_SIGSET) && !defined(HAVE_mit_thread) && !defined(sigset)
|
||||
! #define sigset(A,B) do { struct sigaction s; sigset_t set; \
|
||||
! sigemptyset(&set); \
|
||||
! s.sa_handler = (B); \
|
||||
! s.sa_mask = set; \
|
||||
! s.sa_flags = 0; \
|
||||
! sigaction((A), &s, (struct sigaction *) NULL); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#ifndef my_pthread_setprio
|
||||
--- 332,358 ----
|
||||
#if !defined(HAVE_SIGWAIT) && !defined(HAVE_mit_thread) && !defined(HAVE_rts_threads) && !defined(sigwait) && !defined(alpha_linux_port) && !defined(HAVE_NONPOSIX_SIGWAIT) && !defined(HAVE_DEC_3_2_THREADS) && !defined(_AIX)
|
||||
int sigwait(sigset_t *setp, int *sigp); /* Use our implemention */
|
||||
#endif
|
||||
!
|
||||
! /*
|
||||
! We define my_sigset() and use that instead of the system sigset() so that
|
||||
! we can favor an implementation based on sigaction(). On some systems, such
|
||||
! as Mac OS X, sigset() results in flags such as SA_RESTART being set, and
|
||||
! we want to make sure that no such flags are set.
|
||||
! */
|
||||
! #if defined(HAVE_SIGACTION) && !defined(my_sigset)
|
||||
! #define my_sigset(A,B) do { struct sigaction s; sigset_t set; int rc; \
|
||||
! DBUG_ASSERT((A) != 0); \
|
||||
! sigemptyset(&set); \
|
||||
! s.sa_handler = (B); \
|
||||
! s.sa_mask = set; \
|
||||
! s.sa_flags = 0; \
|
||||
! rc= sigaction((A), &s, (struct sigaction *) NULL); \
|
||||
! DBUG_ASSERT(rc == 0); \
|
||||
} while (0)
|
||||
+ #elif defined(HAVE_SIGSET) && !defined(my_sigset)
|
||||
+ #define my_sigset(A,B) sigset((A),(B))
|
||||
+ #elif !defined(my_sigset)
|
||||
+ #define my_sigset(A,B) signal((A),(B))
|
||||
#endif
|
||||
|
||||
#ifndef my_pthread_setprio
|
||||
***************
|
||||
*** 416,422 ****
|
||||
#undef pthread_detach_this_thread
|
||||
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); }
|
||||
#undef sigset
|
||||
! #define sigset(A,B) pthread_signal((A),(void (*)(int)) (B))
|
||||
#endif
|
||||
|
||||
#if ((defined(HAVE_PTHREAD_ATTR_CREATE) && !defined(HAVE_SIGWAIT)) || defined(HAVE_DEC_3_2_THREADS)) && !defined(HAVE_CTHREADS_WRAPPER)
|
||||
--- 437,443 ----
|
||||
#undef pthread_detach_this_thread
|
||||
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); }
|
||||
#undef sigset
|
||||
! #define my_sigset(A,B) pthread_signal((A),(void (*)(int)) (B))
|
||||
#endif
|
||||
|
||||
#if ((defined(HAVE_PTHREAD_ATTR_CREATE) && !defined(HAVE_SIGWAIT)) || defined(HAVE_DEC_3_2_THREADS)) && !defined(HAVE_CTHREADS_WRAPPER)
|
||||
@@ -42,7 +42,7 @@ extern "C" {
|
||||
#ifndef _global_h /* If not standard header */
|
||||
#include <sys/types.h>
|
||||
#ifdef __LCC__
|
||||
#include <winsock.h> /* For windows */
|
||||
#include <winsock2.h> /* For windows */
|
||||
#endif
|
||||
typedef char my_bool;
|
||||
#if (defined(_WIN32) || defined(_WIN64)) && !defined(__WIN__)
|
||||
|
||||
@@ -86,6 +86,7 @@ typedef struct st_alarm {
|
||||
ulong expire_time;
|
||||
thr_alarm_entry alarmed; /* set when alarm is due */
|
||||
pthread_t thread;
|
||||
my_thread_id thread_id;
|
||||
my_bool malloced;
|
||||
} ALARM;
|
||||
|
||||
@@ -94,7 +95,7 @@ typedef struct st_alarm {
|
||||
void init_thr_alarm(uint max_alarm);
|
||||
void resize_thr_alarm(uint max_alarms);
|
||||
my_bool thr_alarm(thr_alarm_t *alarmed, uint sec, ALARM *buff);
|
||||
void thr_alarm_kill(pthread_t thread_id);
|
||||
void thr_alarm_kill(my_thread_id thread_id);
|
||||
void thr_end_alarm(thr_alarm_t *alarmed);
|
||||
void end_thr_alarm(my_bool free_structures);
|
||||
sig_handler process_alarm(int);
|
||||
|
||||
@@ -78,7 +78,7 @@ extern enum thr_lock_type thr_upgraded_concurrent_insert_lock;
|
||||
typedef struct st_thr_lock_info
|
||||
{
|
||||
pthread_t thread;
|
||||
ulong thread_id;
|
||||
my_thread_id thread_id;
|
||||
ulong n_cursors;
|
||||
} THR_LOCK_INFO;
|
||||
|
||||
@@ -144,7 +144,7 @@ enum enum_thr_lock_result thr_multi_lock(THR_LOCK_DATA **data,
|
||||
uint count, THR_LOCK_OWNER *owner);
|
||||
void thr_multi_unlock(THR_LOCK_DATA **data,uint count);
|
||||
void thr_abort_locks(THR_LOCK *lock, bool upgrade_lock);
|
||||
my_bool thr_abort_locks_for_thread(THR_LOCK *lock, pthread_t thread);
|
||||
my_bool thr_abort_locks_for_thread(THR_LOCK *lock, my_thread_id thread);
|
||||
void thr_print_locks(void); /* For debugging */
|
||||
my_bool thr_upgrade_write_delay_lock(THR_LOCK_DATA *data);
|
||||
void thr_downgrade_write_lock(THR_LOCK_DATA *data,
|
||||
|
||||
Reference in New Issue
Block a user