--- rpl/src/interruptions.c 2010/08/17 14:15:20 1.31 +++ rpl/src/interruptions.c 2010/08/18 12:56:55 1.32 @@ -2163,6 +2163,8 @@ interruption1(SIGHANDLER_ARGS) volatile sig_atomic_t exclusion = 0; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO if (signal == SIGINT) { @@ -2179,8 +2181,6 @@ interruption1(SIGHANDLER_ARGS) pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - switch(signal) { case SIGALRM : @@ -2320,14 +2320,14 @@ interruption2(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO pid = origine_signal(signal); # else pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - # ifndef _BROKEN_SIGINFO if (siginfo == NULL) { @@ -2404,14 +2404,14 @@ interruption3(SIGHANDLER_ARGS) static int compteur = 0; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO pid = origine_signal(signal); # else pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) { deverrouillage_gestionnaire_signaux(); @@ -2470,14 +2470,14 @@ interruption4(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO pid = origine_signal(signal); # else pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) { deverrouillage_gestionnaire_signaux(); @@ -2508,14 +2508,14 @@ interruption5(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO pid = origine_signal(signal); # else pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - if (pid == getpid()) { if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) @@ -2578,14 +2578,14 @@ interruption6(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO pid = origine_signal(signal); # else pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) { deverrouillage_gestionnaire_signaux(); @@ -2610,14 +2610,14 @@ interruption7(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO pid = origine_signal(signal); # else pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) { deverrouillage_gestionnaire_signaux(); @@ -2647,14 +2647,14 @@ interruption8(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO pid = origine_signal(signal); # else pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - if (pid == getpid()) { if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) @@ -2697,14 +2697,14 @@ interruption9(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO pid = origine_signal(signal); # else pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) { deverrouillage_gestionnaire_signaux(); @@ -2718,16 +2718,16 @@ interruption9(SIGHANDLER_ARGS) fflush(stdout); } - deverrouillage_gestionnaire_signaux(); - # ifdef _BROKEN_SIGINFO if (queue_in(getpid(), signal) != 0) { return; } + deverrouillage_gestionnaire_signaux(); interruption11(signal); # else + deverrouillage_gestionnaire_signaux(); interruption11(signal, siginfo, context); # endif return; @@ -2744,14 +2744,14 @@ interruption10(SIGHANDLER_ARGS) unsigned char nom[8 + 64 + 1]; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO pid = origine_signal(signal); # else pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) { deverrouillage_gestionnaire_signaux(); @@ -2791,14 +2791,14 @@ interruption11(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + verrouillage_gestionnaire_signaux(); + # ifdef _BROKEN_SIGINFO pid = origine_signal(signal); # else pid = (*siginfo).si_pid; # endif - verrouillage_gestionnaire_signaux(); - if (pid == getpid()) { if ((s_etat_processus = recherche_thread(getpid(), pthread_self()))