From: Olivier Houchard Date: Wed, 18 Mar 2020 12:07:19 +0000 (+0100) Subject: MINOR: wdt: Move the definitions of WDTSIG and DEBUGSIG into types/signal.h. X-Git-Tag: v2.2-dev5~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=de01ea9878870dad5df1471743097851f53e7793;p=thirdparty%2Fhaproxy.git MINOR: wdt: Move the definitions of WDTSIG and DEBUGSIG into types/signal.h. Move the definition of WDTSIG and DEBUGSIG from wdt.c and debug.c into types/signal.h, so that we can access them in another file. We need those definition to avoid blocking those signals when running __signal_process_queue(). This should be backported to 2.1, 2.0 and 1.9. --- diff --git a/include/types/signal.h b/include/types/signal.h index 598001eeb6..ec3dcf2da1 100644 --- a/include/types/signal.h +++ b/include/types/signal.h @@ -25,6 +25,26 @@ #define SIG_F_TYPE_FCT 0x0002 /* handler is a function + arg */ #define SIG_F_TYPE_TASK 0x0004 /* handler is a task + reason */ +/* Define WDTSIG if available */ +#if defined(USE_RT) && (_POSIX_TIMERS > 0) && defined(_POSIX_THREAD_CPUTIME) + + +/* We'll deliver SIGALRM when we've run out of CPU as it's not intercepted by + * gdb by default. + */ +#define WDTSIG SIGALRM + +#endif + +#ifdef USE_THREAD_DUMP +/* The signal to trigger a debug dump on a thread is SIGURG. It has the benefit + * of not stopping gdb by default, so that issuing "show threads" in a process + * being debugged has no adverse effect. + */ +#define DEBUGSIG SIGURG + +#endif + /* those are highly dynamic and stored in pools */ struct sig_handler { struct list list; diff --git a/src/debug.c b/src/debug.c index c11ab544de..dd13aa4f74 100644 --- a/src/debug.c +++ b/src/debug.c @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -687,12 +688,6 @@ void ha_thread_dump_all_to_trash() #else /* below USE_THREAD_DUMP is set */ -/* The signal to trigger a debug dump on a thread is SIGURG. It has the benefit - * of not stopping gdb by default, so that issuing "show threads" in a process - * being debugged has no adverse effect. - */ -#define DEBUGSIG SIGURG - /* ID of the thread requesting the dump */ static unsigned int thread_dump_tid; diff --git a/src/wdt.c b/src/wdt.c index 44b35402ab..f8bd65723b 100644 --- a/src/wdt.c +++ b/src/wdt.c @@ -18,6 +18,7 @@ #include #include #include +#include #include @@ -27,11 +28,6 @@ */ #if defined(USE_RT) && (_POSIX_TIMERS > 0) && defined(_POSIX_THREAD_CPUTIME) -/* We'll deliver SIGALRM when we've run out of CPU as it's not intercepted by - * gdb by default. - */ -#define WDTSIG SIGALRM - /* Setup (or ping) the watchdog timer for thread . Returns non-zero on * success, zero on failure. It interrupts once per second of CPU time. It * happens that timers based on the CPU time are not automatically re-armed