mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 14:02:32 +01:00
f6e70c1453
into a88-113-38-195.elisa-laajakaista.fi:/home/my/bk/mysql-4.1
220 lines
6.2 KiB
Text
220 lines
6.2 KiB
Text
***************
|
|
*** 76,96 ****
|
|
alarm_aborted=0;
|
|
init_queue(&alarm_queue,max_alarms+1,offsetof(ALARM,expire_time),0,
|
|
compare_ulong,NullS);
|
|
! sigfillset(&full_signal_set); /* Neaded to block signals */
|
|
pthread_mutex_init(&LOCK_alarm,MY_MUTEX_INIT_FAST);
|
|
pthread_cond_init(&COND_alarm,NULL);
|
|
! #if THR_CLIENT_ALARM != SIGALRM || defined(USE_ALARM_THREAD)
|
|
! #if defined(HAVE_mit_thread)
|
|
! sigset(THR_CLIENT_ALARM,thread_alarm); /* int. thread system calls */
|
|
! #else
|
|
{
|
|
! struct sigaction sact;
|
|
! sact.sa_flags = 0;
|
|
! sact.sa_handler = thread_alarm;
|
|
! sigaction(THR_CLIENT_ALARM, &sact, (struct sigaction*) 0);
|
|
}
|
|
- #endif
|
|
- #endif
|
|
sigemptyset(&s);
|
|
sigaddset(&s, THR_SERVER_ALARM);
|
|
alarm_thread=pthread_self();
|
|
--- 74,89 ----
|
|
alarm_aborted=0;
|
|
init_queue(&alarm_queue,max_alarms+1,offsetof(ALARM,expire_time),0,
|
|
compare_ulong,NullS);
|
|
! sigfillset(&full_signal_set); /* Needed to block signals */
|
|
pthread_mutex_init(&LOCK_alarm,MY_MUTEX_INIT_FAST);
|
|
pthread_cond_init(&COND_alarm,NULL);
|
|
! #ifndef USE_ALARM_THREAD
|
|
! if (thd_lib_detected != THD_LIB_LT)
|
|
! #endif
|
|
{
|
|
! my_sigset(thd_lib_detected == THD_LIB_LT ? SIGALRM : SIGUSR1,
|
|
! thread_alarm);
|
|
}
|
|
sigemptyset(&s);
|
|
sigaddset(&s, THR_SERVER_ALARM);
|
|
alarm_thread=pthread_self();
|
|
***************
|
|
*** 108,120 ****
|
|
}
|
|
#elif defined(USE_ONE_SIGNAL_HAND)
|
|
pthread_sigmask(SIG_BLOCK, &s, NULL); /* used with sigwait() */
|
|
! #if THR_SERVER_ALARM == THR_CLIENT_ALARM
|
|
! sigset(THR_CLIENT_ALARM,process_alarm); /* Linuxthreads */
|
|
! pthread_sigmask(SIG_UNBLOCK, &s, NULL);
|
|
! #endif
|
|
#else
|
|
pthread_sigmask(SIG_UNBLOCK, &s, NULL);
|
|
- sigset(THR_SERVER_ALARM,process_alarm);
|
|
#endif
|
|
DBUG_VOID_RETURN;
|
|
}
|
|
--- 101,115 ----
|
|
}
|
|
#elif defined(USE_ONE_SIGNAL_HAND)
|
|
pthread_sigmask(SIG_BLOCK, &s, NULL); /* used with sigwait() */
|
|
! if (thd_lib_detected == THD_LIB_LT)
|
|
! {
|
|
! my_sigset(thd_lib_detected == THD_LIB_LT ? SIGALRM : SIGUSR1,
|
|
! process_alarm); /* Linuxthreads */
|
|
! pthread_sigmask(SIG_UNBLOCK, &s, NULL);
|
|
! }
|
|
#else
|
|
+ my_sigset(THR_SERVER_ALARM, process_alarm);
|
|
pthread_sigmask(SIG_UNBLOCK, &s, NULL);
|
|
#endif
|
|
DBUG_VOID_RETURN;
|
|
}
|
|
***************
|
|
*** 240,246 ****
|
|
if (alarm_data->malloced)
|
|
my_free((gptr) alarm_data,MYF(0));
|
|
found++;
|
|
! #ifndef DBUG_OFF
|
|
break;
|
|
#endif
|
|
}
|
|
--- 235,241 ----
|
|
if (alarm_data->malloced)
|
|
my_free((gptr) alarm_data,MYF(0));
|
|
found++;
|
|
! #ifdef DBUG_OFF
|
|
break;
|
|
#endif
|
|
}
|
|
***************
|
|
*** 249,258 ****
|
|
if (!found)
|
|
{
|
|
if (*alarmed)
|
|
! fprintf(stderr,"Warning: Didn't find alarm %lx in queue of %d alarms\n",
|
|
! (long) *alarmed, alarm_queue.elements);
|
|
! DBUG_PRINT("warning",("Didn't find alarm %lx in queue\n",
|
|
! (long) *alarmed));
|
|
}
|
|
pthread_mutex_unlock(&LOCK_alarm);
|
|
pthread_sigmask(SIG_SETMASK,&old_mask,NULL);
|
|
--- 244,254 ----
|
|
if (!found)
|
|
{
|
|
if (*alarmed)
|
|
! fprintf(stderr,
|
|
! "Warning: Didn't find alarm 0x%lx in queue of %d alarms\n",
|
|
! (long) *alarmed, alarm_queue.elements);
|
|
! DBUG_PRINT("warning",("Didn't find alarm 0x%lx in queue\n",
|
|
! (long) *alarmed));
|
|
}
|
|
pthread_mutex_unlock(&LOCK_alarm);
|
|
pthread_sigmask(SIG_SETMASK,&old_mask,NULL);
|
|
***************
|
|
*** 274,291 ****
|
|
This must be first as we can't call DBUG inside an alarm for a normal thread
|
|
*/
|
|
|
|
! #if THR_SERVER_ALARM == THR_CLIENT_ALARM
|
|
! if (!pthread_equal(pthread_self(),alarm_thread))
|
|
{
|
|
#if defined(MAIN) && !defined(__bsdi__)
|
|
! printf("thread_alarm\n"); fflush(stdout);
|
|
#endif
|
|
#ifdef DONT_REMEMBER_SIGNAL
|
|
! sigset(THR_CLIENT_ALARM,process_alarm); /* int. thread system calls */
|
|
#endif
|
|
return;
|
|
}
|
|
- #endif
|
|
|
|
/*
|
|
We have to do do the handling of the alarm in a sub function,
|
|
--- 270,287 ----
|
|
This must be first as we can't call DBUG inside an alarm for a normal thread
|
|
*/
|
|
|
|
! if (thd_lib_detected == THD_LIB_LT &&
|
|
! !pthread_equal(pthread_self(),alarm_thread))
|
|
{
|
|
#if defined(MAIN) && !defined(__bsdi__)
|
|
! printf("thread_alarm in process_alarm\n"); fflush(stdout);
|
|
#endif
|
|
#ifdef DONT_REMEMBER_SIGNAL
|
|
! my_sigset(thd_lib_detected == THD_LIB_LT ? SIGALRM : SIGUSR1,
|
|
! process_alarm); /* int. thread system calls */
|
|
#endif
|
|
return;
|
|
}
|
|
|
|
/*
|
|
We have to do do the handling of the alarm in a sub function,
|
|
***************
|
|
*** 301,307 ****
|
|
process_alarm_part2(sig);
|
|
#ifndef USE_ALARM_THREAD
|
|
#if defined(DONT_REMEMBER_SIGNAL) && !defined(USE_ONE_SIGNAL_HAND)
|
|
! sigset(THR_SERVER_ALARM,process_alarm);
|
|
#endif
|
|
pthread_mutex_unlock(&LOCK_alarm);
|
|
pthread_sigmask(SIG_SETMASK,&old_mask,NULL);
|
|
--- 297,303 ----
|
|
process_alarm_part2(sig);
|
|
#ifndef USE_ALARM_THREAD
|
|
#if defined(DONT_REMEMBER_SIGNAL) && !defined(USE_ONE_SIGNAL_HAND)
|
|
! my_sigset(THR_SERVER_ALARM, process_alarm);
|
|
#endif
|
|
pthread_mutex_unlock(&LOCK_alarm);
|
|
pthread_sigmask(SIG_SETMASK,&old_mask,NULL);
|
|
***************
|
|
*** 504,520 ****
|
|
ARGSUSED
|
|
*/
|
|
|
|
- #if THR_CLIENT_ALARM != SIGALRM || defined(USE_ALARM_THREAD)
|
|
static sig_handler thread_alarm(int sig)
|
|
{
|
|
#ifdef MAIN
|
|
printf("thread_alarm\n"); fflush(stdout);
|
|
#endif
|
|
#ifdef DONT_REMEMBER_SIGNAL
|
|
! sigset(sig,thread_alarm); /* int. thread system calls */
|
|
#endif
|
|
}
|
|
- #endif
|
|
|
|
|
|
#ifdef HAVE_TIMESPEC_TS_SEC
|
|
--- 499,513 ----
|
|
ARGSUSED
|
|
*/
|
|
|
|
static sig_handler thread_alarm(int sig)
|
|
{
|
|
#ifdef MAIN
|
|
printf("thread_alarm\n"); fflush(stdout);
|
|
#endif
|
|
#ifdef DONT_REMEMBER_SIGNAL
|
|
! my_sigset(sig, thread_alarm); /* int. thread system calls */
|
|
#endif
|
|
}
|
|
|
|
|
|
#ifdef HAVE_TIMESPEC_TS_SEC
|
|
***************
|
|
*** 915,921 ****
|
|
printf("Warning: Got signal %d from thread %s\n",sig,my_thread_name());
|
|
fflush(stdout);
|
|
#ifdef DONT_REMEMBER_SIGNAL
|
|
! sigset(sig,print_signal_warning); /* int. thread system calls */
|
|
#endif
|
|
#ifndef OS2
|
|
if (sig == SIGALRM)
|
|
--- 908,914 ----
|
|
printf("Warning: Got signal %d from thread %s\n",sig,my_thread_name());
|
|
fflush(stdout);
|
|
#ifdef DONT_REMEMBER_SIGNAL
|
|
! my_sigset(sig, print_signal_warning); /* int. thread system calls */
|
|
#endif
|
|
#ifndef OS2
|
|
if (sig == SIGALRM)
|