forked from enlightenment/efl
ecore_signal.c: factoring out the platform test to improve readability.
Turns out there is no PRI?SIGATOMIC in the C99 standard. Work around that by deducing the effective integer type by comparing the SIG_ATOMIC_MAX with integers *MAX. Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit is contained in:
parent
180e64653d
commit
b548a6396b
|
@ -2,6 +2,8 @@
|
||||||
# include <config.h>
|
# include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
@ -78,6 +80,22 @@ static volatile siginfo_t sigterm_info[MAXSIGQ];
|
||||||
static volatile siginfo_t sigpwr_info[MAXSIGQ];
|
static volatile siginfo_t sigpwr_info[MAXSIGQ];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(SIG_ATOMIC_MAX)
|
||||||
|
# if SIG_ATOMIC_MAX == INT64_MAX
|
||||||
|
/* Basically FreeBSD on 64bits */
|
||||||
|
# define PRIdSIGATOMIC PRId64
|
||||||
|
# elif SIG_ATOMIC_MAX == UINT64_MAX
|
||||||
|
# define PRIdSIGATOMIC PRIu64
|
||||||
|
# elif SIG_ATOMIC_MAX == UINT32_MAX
|
||||||
|
# define PRIdSIGATOMIC PRIu32
|
||||||
|
# else
|
||||||
|
/* everybody else seems to go for int */
|
||||||
|
# define PRIdSIGATOMIC PRId32
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define PRIdSIGATOMIC "d"
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
_ecore_signal_shutdown(void)
|
_ecore_signal_shutdown(void)
|
||||||
{
|
{
|
||||||
|
@ -168,13 +186,8 @@ _ecore_signal_call(void)
|
||||||
#endif
|
#endif
|
||||||
sigprocmask(SIG_BLOCK, &newset, &oldset);
|
sigprocmask(SIG_BLOCK, &newset, &oldset);
|
||||||
if (sigchld_count > MAXSIGQ)
|
if (sigchld_count > MAXSIGQ)
|
||||||
#ifdef __FreeBSD__
|
WRN("%"PRIdSIGATOMIC" SIGCHLD in queue. max queue size %i. losing "
|
||||||
WRN("%ld SIGCHLD in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigchld_count, MAXSIGQ);
|
"siginfo for extra signals.", sigchld_count, MAXSIGQ);
|
||||||
#else
|
|
||||||
WRN("%i SIGCHLD in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigchld_count, MAXSIGQ);
|
|
||||||
#endif
|
|
||||||
tot = sigchld_count + sigusr1_count + sigusr2_count +
|
tot = sigchld_count + sigusr1_count + sigusr2_count +
|
||||||
sighup_count + sigquit_count + sigint_count + sigterm_count
|
sighup_count + sigquit_count + sigint_count + sigterm_count
|
||||||
#ifdef SIGPWR
|
#ifdef SIGPWR
|
||||||
|
@ -184,11 +197,8 @@ _ecore_signal_call(void)
|
||||||
|
|
||||||
if (sig_count != tot)
|
if (sig_count != tot)
|
||||||
{
|
{
|
||||||
#ifdef __FreeBSD__
|
ERR("sig_count (%"PRIdSIGATOMIC") != actual totals (%i) ",
|
||||||
ERR("sig_count (%ld) != actual totals (%i) ", sig_count, tot);
|
sig_count, tot);
|
||||||
#else
|
|
||||||
ERR("sig_count (%i) != actual totals (%i) ", sig_count, tot);
|
|
||||||
#endif
|
|
||||||
sig_count = tot;
|
sig_count = tot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,13 +277,8 @@ _ecore_signal_call(void)
|
||||||
sigchld_count = 0;
|
sigchld_count = 0;
|
||||||
|
|
||||||
if (sigusr1_count > MAXSIGQ)
|
if (sigusr1_count > MAXSIGQ)
|
||||||
#ifdef __FreeBSD__
|
WRN("%"PRIdSIGATOMIC" SIGUSR1 in queue. max queue size %i. losing "
|
||||||
WRN("%ld SIGUSR1 in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigusr1_count, MAXSIGQ);
|
"siginfo for extra signals.", sigusr1_count, MAXSIGQ);
|
||||||
#else
|
|
||||||
WRN("%i SIGUSR1 in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigusr1_count, MAXSIGQ);
|
|
||||||
#endif
|
|
||||||
for (n = 0; n < sigusr1_count; n++)
|
for (n = 0; n < sigusr1_count; n++)
|
||||||
{
|
{
|
||||||
Ecore_Event_Signal_User *e;
|
Ecore_Event_Signal_User *e;
|
||||||
|
@ -294,13 +299,8 @@ _ecore_signal_call(void)
|
||||||
sigusr1_count = 0;
|
sigusr1_count = 0;
|
||||||
|
|
||||||
if (sigusr2_count > MAXSIGQ)
|
if (sigusr2_count > MAXSIGQ)
|
||||||
#ifdef __FreeBSD__
|
WRN("%"PRIdSIGATOMIC" SIGUSR2 in queue. max queue size %i. losing "
|
||||||
WRN("%ld SIGUSR2 in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigusr2_count, MAXSIGQ);
|
"siginfo for extra signals.", sigusr2_count, MAXSIGQ);
|
||||||
#else
|
|
||||||
WRN("%i SIGUSR2 in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigusr2_count, MAXSIGQ);
|
|
||||||
#endif
|
|
||||||
for (n = 0; n < sigusr2_count; n++)
|
for (n = 0; n < sigusr2_count; n++)
|
||||||
{
|
{
|
||||||
Ecore_Event_Signal_User *e;
|
Ecore_Event_Signal_User *e;
|
||||||
|
@ -321,13 +321,8 @@ _ecore_signal_call(void)
|
||||||
sigusr2_count = 0;
|
sigusr2_count = 0;
|
||||||
|
|
||||||
if (sighup_count > MAXSIGQ)
|
if (sighup_count > MAXSIGQ)
|
||||||
#ifdef __FreeBSD__
|
WRN("%"PRIdSIGATOMIC" SIGHUP in queue. max queue size %i. losing "
|
||||||
WRN("%ld SIGHUP in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sighup_count, MAXSIGQ);
|
"siginfo for extra signals.", sighup_count, MAXSIGQ);
|
||||||
#else
|
|
||||||
WRN("%i SIGHUP in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sighup_count, MAXSIGQ);
|
|
||||||
#endif
|
|
||||||
for (n = 0; n < sighup_count; n++)
|
for (n = 0; n < sighup_count; n++)
|
||||||
{
|
{
|
||||||
Ecore_Event_Signal_Hup *e;
|
Ecore_Event_Signal_Hup *e;
|
||||||
|
@ -346,13 +341,8 @@ _ecore_signal_call(void)
|
||||||
sighup_count = 0;
|
sighup_count = 0;
|
||||||
|
|
||||||
if (sigquit_count > MAXSIGQ)
|
if (sigquit_count > MAXSIGQ)
|
||||||
#ifdef __FreeBSD__
|
WRN("%"PRIdSIGATOMIC" SIGQUIT in queue. max queue size %i. losing "
|
||||||
WRN("%ld SIGQUIT in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigquit_count, MAXSIGQ);
|
"siginfo for extra signals.", sigquit_count, MAXSIGQ);
|
||||||
#else
|
|
||||||
WRN("%i SIGQUIT in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigquit_count, MAXSIGQ);
|
|
||||||
#endif
|
|
||||||
for (n = 0; n < sigquit_count; n++)
|
for (n = 0; n < sigquit_count; n++)
|
||||||
{
|
{
|
||||||
Ecore_Event_Signal_Exit *e;
|
Ecore_Event_Signal_Exit *e;
|
||||||
|
@ -373,13 +363,8 @@ _ecore_signal_call(void)
|
||||||
sigquit_count = 0;
|
sigquit_count = 0;
|
||||||
|
|
||||||
if (sigint_count > MAXSIGQ)
|
if (sigint_count > MAXSIGQ)
|
||||||
#ifdef __FreeBSD__
|
WRN("%"PRIdSIGATOMIC" SIGINT in queue. max queue size %i. losing "
|
||||||
WRN("%ld SIGINT in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigint_count, MAXSIGQ);
|
"siginfo for extra signals.", sigint_count, MAXSIGQ);
|
||||||
#else
|
|
||||||
WRN("%i SIGINT in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigint_count, MAXSIGQ);
|
|
||||||
#endif
|
|
||||||
for (n = 0; n < sigint_count; n++)
|
for (n = 0; n < sigint_count; n++)
|
||||||
{
|
{
|
||||||
Ecore_Event_Signal_Exit *e;
|
Ecore_Event_Signal_Exit *e;
|
||||||
|
@ -400,13 +385,8 @@ _ecore_signal_call(void)
|
||||||
sigint_count = 0;
|
sigint_count = 0;
|
||||||
|
|
||||||
if (sigterm_count > MAXSIGQ)
|
if (sigterm_count > MAXSIGQ)
|
||||||
#ifdef __FreeBSD__
|
WRN("%"PRIdSIGATOMIC" SIGTERM in queue. max queue size %i. losing "
|
||||||
WRN("%ld SIGTERM in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigterm_count, MAXSIGQ);
|
"siginfo for extra signals.", sigterm_count, MAXSIGQ);
|
||||||
#else
|
|
||||||
WRN("%i SIGTERM in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigterm_count, MAXSIGQ);
|
|
||||||
#endif
|
|
||||||
for (n = 0; n < sigterm_count; n++)
|
for (n = 0; n < sigterm_count; n++)
|
||||||
{
|
{
|
||||||
Ecore_Event_Signal_Exit *e;
|
Ecore_Event_Signal_Exit *e;
|
||||||
|
@ -428,13 +408,8 @@ _ecore_signal_call(void)
|
||||||
|
|
||||||
#ifdef SIGPWR
|
#ifdef SIGPWR
|
||||||
if (sigpwr_count > MAXSIGQ)
|
if (sigpwr_count > MAXSIGQ)
|
||||||
#ifdef __FreeBSD__
|
WRN("%"PRIdSIGATOMIC" SIGPWR in queue. max queue size %i. losing "
|
||||||
WRN("%ld SIGPWR in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigpwr_count, MAXSIGQ);
|
"siginfo for extra signals.", sigpwr_count, MAXSIGQ);
|
||||||
#else
|
|
||||||
WRN("%i SIGPWR in queue. max queue size %i. losing "
|
|
||||||
"siginfo for extra signals.", sigpwr_count, MAXSIGQ);
|
|
||||||
#endif
|
|
||||||
for (n = 0; n < sigpwr_count; n++)
|
for (n = 0; n < sigpwr_count; n++)
|
||||||
{
|
{
|
||||||
Ecore_Event_Signal_Power *e;
|
Ecore_Event_Signal_Power *e;
|
||||||
|
|
Loading…
Reference in New Issue