version 1.32, 2010/07/31 10:34:17
|
version 1.35, 2010/08/13 21:00:37
|
Line 20
|
Line 20
|
*/ |
*/ |
|
|
|
|
#include "rpl.conv.h" |
#include "rpl-conv.h" |
|
|
|
|
/* |
/* |
Line 890 instruction_detach(struct_processus *s_e
|
Line 890 instruction_detach(struct_processus *s_e
|
return; |
return; |
} |
} |
|
|
|
# ifdef _BROKEN_SIGINFO |
|
if ((*s_etat_processus).langue == 'F') |
|
{ |
|
printf("+++Attention : Support des processus multiples indisponible\n"); |
|
} |
|
else |
|
{ |
|
printf("+++Attention : Multiprocess unavailable\n"); |
|
} |
|
|
|
return; |
|
# endif |
|
|
if (test_cfsf(s_etat_processus, 31) == d_vrai) |
if (test_cfsf(s_etat_processus, 31) == d_vrai) |
{ |
{ |
if (empilement_pile_last(s_etat_processus, 1) == d_erreur) |
if (empilement_pile_last(s_etat_processus, 1) == d_erreur) |
Line 1159 instruction_detach(struct_processus *s_e
|
Line 1172 instruction_detach(struct_processus *s_e
|
|
|
verrouillage_threads_concurrents(s_etat_processus); |
verrouillage_threads_concurrents(s_etat_processus); |
(*s_argument_thread).pid = fork(); |
(*s_argument_thread).pid = fork(); |
|
|
|
# ifdef OS2 |
|
if ((*s_argument_thread).pid == 0) |
|
{ |
|
sem_init(&semaphore_liste_threads, 0, 1); |
|
sem_init(&semaphore_gestionnaires_signaux, 0, 0); |
|
sem_init(&semaphore_gestionnaires_signaux_atomique, 0, 1); |
|
sem_init(&((*s_etat_processus).semaphore_fork), 0, 0); |
|
} |
|
# endif |
|
|
deverrouillage_threads_concurrents(s_etat_processus); |
deverrouillage_threads_concurrents(s_etat_processus); |
|
|
pthread_sigmask(SIG_SETMASK, &oldset2, NULL); |
pthread_sigmask(SIG_SETMASK, &oldset2, NULL); |
Line 1275 instruction_detach(struct_processus *s_e
|
Line 1299 instruction_detach(struct_processus *s_e
|
return; |
return; |
} |
} |
|
|
|
# ifndef OS2 |
if (pthread_attr_setschedpolicy(&attributs, SCHED_OTHER) != 0) |
if (pthread_attr_setschedpolicy(&attributs, SCHED_OTHER) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
Line 1293 instruction_detach(struct_processus *s_e
|
Line 1318 instruction_detach(struct_processus *s_e
|
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
} |
} |
|
# endif |
|
|
(*s_argument_thread).s_etat_processus = s_etat_processus; |
(*s_argument_thread).s_etat_processus = s_etat_processus; |
|
|
Line 2808 instruction_detach(struct_processus *s_e
|
Line 2834 instruction_detach(struct_processus *s_e
|
|
|
liberation(s_etat_processus, s_objet); |
liberation(s_etat_processus, s_objet); |
|
|
# ifndef Cygwin |
# if !defined(Cygwin) |
(*s_etat_processus).pile_signal.ss_flags = SS_DISABLE; |
(*s_etat_processus).pile_signal.ss_flags = SS_DISABLE; |
sigaltstack(&((*s_etat_processus).pile_signal), NULL); |
sigaltstack(&((*s_etat_processus).pile_signal), NULL); |
free((*s_etat_processus).pile_signal.ss_sp); |
free((*s_etat_processus).pile_signal.ss_sp); |