diff options
Diffstat (limited to 'include/my_pthread.h.rej')
-rw-r--r-- | include/my_pthread.h.rej | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/include/my_pthread.h.rej b/include/my_pthread.h.rej new file mode 100644 index 00000000000..1f73655b0bd --- /dev/null +++ b/include/my_pthread.h.rej @@ -0,0 +1,80 @@ +*************** +*** 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) |