version 1.88, 2011/09/19 17:33:17
|
version 1.93, 2011/09/20 19:28:39
|
Line 112 rplinit(int argc, char *argv[], unsigned
|
Line 112 rplinit(int argc, char *argv[], unsigned
|
# ifndef SEMAPHORES_NOMMES |
# ifndef SEMAPHORES_NOMMES |
sem_init(&semaphore_gestionnaires_signaux, 0, 0); |
sem_init(&semaphore_gestionnaires_signaux, 0, 0); |
# else |
# else |
semaphore_gestionnaires_signaux = sem_init2(0, getpid()); |
semaphore_gestionnaires_signaux = sem_init2(0, getpid(), SEM_SIGNAUX); |
|
|
if (semaphore_gestionnaires_signaux == SEM_FAILED) |
if (semaphore_gestionnaires_signaux == SEM_FAILED) |
{ |
{ |
Line 191 rplinit(int argc, char *argv[], unsigned
|
Line 191 rplinit(int argc, char *argv[], unsigned
|
&attributs_mutex); |
&attributs_mutex); |
pthread_mutexattr_destroy(&attributs_mutex); |
pthread_mutexattr_destroy(&attributs_mutex); |
|
|
pthread_mutexattr_init(&attributs_mutex); |
# ifndef SEMAPHORES_NOMMES |
pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL); |
sem_init(&((*s_etat_processus).semaphore_fork), 0, 0); |
pthread_mutex_init(&((*s_etat_processus).mutex_fork), |
# else |
&attributs_mutex); |
if (((*s_etat_processus).semaphore_fork = sem_init3(0, getpid(), |
pthread_mutexattr_destroy(&attributs_mutex); |
pthread_self(), SEM_FORK)) == SEM_FAILED) |
pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); |
{ |
|
if ((*s_etat_processus).langue == 'F') |
|
{ |
|
uprintf("+++Système : Mémoire insuffisante\n"); |
|
} |
|
else |
|
{ |
|
uprintf("+++System : Not enough memory\n"); |
|
} |
|
|
|
return(EXIT_FAILURE); |
|
} |
|
# endif |
|
|
pthread_mutexattr_init(&attributs_mutex); |
pthread_mutexattr_init(&attributs_mutex); |
pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL); |
pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL); |
Line 2626 rplinit(int argc, char *argv[], unsigned
|
Line 2638 rplinit(int argc, char *argv[], unsigned
|
lancement_daemon(s_etat_processus); |
lancement_daemon(s_etat_processus); |
} |
} |
|
|
// A FIXER |
|
// création signaux |
|
if (option_p == d_faux) |
if (option_p == d_faux) |
{ |
{ |
if (setjmp(contexte_initial) == 0) |
if (setjmp(contexte_initial) == 0) |
Line 2670 rplinit(int argc, char *argv[], unsigned
|
Line 2680 rplinit(int argc, char *argv[], unsigned
|
} |
} |
} |
} |
} |
} |
// A FIXER |
|
// destruction signaux |
|
} |
} |
|
|
liberation(s_etat_processus, (*s_etat_processus).at_exit); |
liberation(s_etat_processus, (*s_etat_processus).at_exit); |
Line 3478 rplinit(int argc, char *argv[], unsigned
|
Line 3486 rplinit(int argc, char *argv[], unsigned
|
pthread_mutex_destroy(&((*s_etat_processus).mutex)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); |
|
|
pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)); |
# ifndef SEMAPHORES_NOMMES |
pthread_mutex_destroy(&((*s_etat_processus).mutex_fork)); |
sem_post(&((*s_etat_processus).semaphore_fork)); |
|
sem_destroy(&((*s_etat_processus).semaphore_fork)); |
|
# else |
|
sem_post((*s_etat_processus).semaphore_fork); |
|
sem_destroy3((*s_etat_processus).semaphore_fork, getpid(), pthread_self(), |
|
SEM_FORK); |
|
# endif |
|
|
free((*s_etat_processus).localisation); |
free((*s_etat_processus).localisation); |
|
|
Line 3491 rplinit(int argc, char *argv[], unsigned
|
Line 3505 rplinit(int argc, char *argv[], unsigned
|
sem_destroy(&semaphore_gestionnaires_signaux); |
sem_destroy(&semaphore_gestionnaires_signaux); |
# else |
# else |
sem_post(semaphore_gestionnaires_signaux); |
sem_post(semaphore_gestionnaires_signaux); |
sem_destroy2(semaphore_gestionnaires_signaux, getpid()); |
sem_destroy2(semaphore_gestionnaires_signaux, getpid(), SEM_SIGNAUX); |
# endif |
# endif |
|
|
destruction_queue_signaux(s_etat_processus); |
destruction_queue_signaux(s_etat_processus); |