--- rpl/src/interruptions.c 2011/09/03 10:31:50 1.63 +++ rpl/src/interruptions.c 2011/09/09 12:23:25 1.65 @@ -1718,6 +1718,9 @@ deverrouillage_gestionnaire_signaux() return; } +#define test_signal(signal) \ + if (signal_test == SIGTEST) { signal_test = signal; return; } + void interruption1(SIGHANDLER_ARGS) { @@ -1729,6 +1732,7 @@ interruption1(SIGHANDLER_ARGS) volatile sig_atomic_t exclusion = 0; + test_signal(signal); verrouillage_gestionnaire_signaux(); # ifdef _BROKEN_SIGINFO @@ -1906,6 +1910,7 @@ interruption2(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + test_signal(signal); verrouillage_gestionnaire_signaux(); # ifdef _BROKEN_SIGINFO @@ -1995,6 +2000,7 @@ interruption3(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + test_signal(signal); verrouillage_gestionnaire_signaux(); if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) @@ -2041,11 +2047,14 @@ interruption3(SIGHANDLER_ARGS) if (strncmp(getenv("LANG"), "fr", 2) == 0) { - printf("+++Système : Violation d'accès\n"); + printf("+++Système : Violation d'accès, tentative de " + "terminaison de la tâche\n"); + printf(" (defauts multiples)\n"); } else { - printf("+++System : Access violation\n"); + printf("+++System : Access violation, trying to kill task " + "(multiple defaults)\n"); } fflush(stdout); @@ -2105,6 +2114,7 @@ interruption4(SIGHANDLER_ARGS) { struct_processus *s_etat_processus; + test_signal(signal); verrouillage_gestionnaire_signaux(); if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) @@ -2137,6 +2147,7 @@ interruption5(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + test_signal(signal); verrouillage_gestionnaire_signaux(); # ifdef _BROKEN_SIGINFO @@ -2205,6 +2216,7 @@ interruption6(SIGHANDLER_ARGS) { struct_processus *s_etat_processus; + test_signal(signal); verrouillage_gestionnaire_signaux(); if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) @@ -2229,6 +2241,7 @@ interruption7(SIGHANDLER_ARGS) { struct_processus *s_etat_processus; + test_signal(signal); verrouillage_gestionnaire_signaux(); if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) @@ -2260,6 +2273,7 @@ interruption8(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + test_signal(signal); verrouillage_gestionnaire_signaux(); # ifdef _BROKEN_SIGINFO @@ -2308,6 +2322,7 @@ interruption9(SIGHANDLER_ARGS) { struct_processus *s_etat_processus; + test_signal(signal); verrouillage_gestionnaire_signaux(); if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) @@ -2347,6 +2362,7 @@ interruption10(SIGHANDLER_ARGS) unsigned char nom[8 + 64 + 1]; + test_signal(signal); verrouillage_gestionnaire_signaux(); if ((s_etat_processus = recherche_thread(getpid(), pthread_self())) == NULL) @@ -2388,6 +2404,7 @@ interruption11(SIGHANDLER_ARGS) struct_processus *s_etat_processus; + test_signal(signal); verrouillage_gestionnaire_signaux(); # ifdef _BROKEN_SIGINFO