--- rpl/src/instructions_s10.c 2011/08/09 11:31:35 1.42 +++ rpl/src/instructions_s10.c 2011/09/14 14:34:28 1.43 @@ -48,9 +48,6 @@ instruction_spawn(struct_processus *s_et pthread_t thread_id; pthread_t thread_surveillance; - sigset_t oldset; - sigset_t set; - struct_descripteur_thread *s_argument_thread; struct_liste_chainee *l_element_courant; @@ -236,46 +233,6 @@ instruction_spawn(struct_processus *s_et } } - if (sigemptyset(&set) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - - if (sigaddset(&set, SIGSTART) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - - /* - * Le signal SIGFSTOP doit être traité ! - */ - - if (sigaddset(&set, SIGFSTOP) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - - if (sigaddset(&set, SIGFABORT) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - - if (sigaddset(&set, SIGURG) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - - if (pthread_sigmask(SIG_BLOCK, &set, &oldset) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - if ((s_argument_thread = malloc(sizeof(struct_descripteur_thread))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -460,8 +417,6 @@ instruction_spawn(struct_processus *s_et (*s_argument_thread).destruction_objet = d_faux; } - (*s_argument_thread).set = set; - (*s_argument_thread).oldset = oldset; (*s_argument_thread).thread_actif = d_faux; if (pthread_create(&thread_id, &attributs, lancement_thread, @@ -680,20 +635,12 @@ instruction_spawn(struct_processus *s_et // Le fils peut être présent sans être en attente du signal de départ. - if (pthread_kill((*s_argument_thread).tid, SIGSTART) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } - - if (pthread_sigmask(SIG_SETMASK, &oldset, NULL) != 0) + if (envoi_signal_thread((*s_argument_thread).tid, rpl_sigstart) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } - sigpending(&set); - return; }