version 1.52, 2012/12/19 09:58:28
|
version 1.56, 2013/03/21 12:07:39
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.12 |
RPL/2 (R) version 4.1.13 |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
Copyright (C) 1989-2013 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 39 nom_segment_semaphore(pid_t pid, int ord
|
Line 39 nom_segment_semaphore(pid_t pid, int ord
|
return(NULL); |
return(NULL); |
} |
} |
|
|
sprintf(fichier, "/RPL-%d-%d", (int) pid, ordre); |
sprintf(fichier, "/RPL-%llu-%d", (unsigned long long) pid, ordre); |
return(fichier); |
return(fichier); |
} |
} |
|
|
Line 54 nom_segment_semaphore_thread(pid_t pid,
|
Line 54 nom_segment_semaphore_thread(pid_t pid,
|
return(NULL); |
return(NULL); |
} |
} |
|
|
sprintf(fichier, "/RPL-%d-%llX-%d", (int) pid, |
sprintf(fichier, "/RPL-%llu-%llu-%d", (unsigned long long) pid, |
(unsigned long long) tid, ordre); |
(unsigned long long) tid, ordre); |
return(fichier); |
return(fichier); |
} |
} |
Line 455 sem_wait_SysV(sem_t *semaphore)
|
Line 455 sem_wait_SysV(sem_t *semaphore)
|
# ifndef OS2 // IPCS_SYSV |
# ifndef OS2 // IPCS_SYSV |
struct sembuf commande; |
struct sembuf commande; |
|
|
|
// semop() ne renvoie pas EINTR sur un signal ! |
|
|
commande.sem_num = 0; |
commande.sem_num = 0; |
commande.sem_op = -1; |
commande.sem_op = -1; |
commande.sem_flg = 0; |
commande.sem_flg = 0; |
|
|
while(semop((*semaphore).sem, &commande, 1) == -1) |
if (semop((*semaphore).sem, &commande, 1) == -1) |
{ |
{ |
if (errno != EINTR) |
if (errno != EAGAIN) |
{ |
{ |
errno = EINVAL; |
errno = EINVAL; |
return(-1); |
return(-1); |
} |
} |
|
else |
|
{ |
|
return(-1); |
|
} |
} |
} |
|
|
return(0); |
return(0); |
Line 513 sem_trywait_SysV(sem_t *semaphore)
|
Line 519 sem_trywait_SysV(sem_t *semaphore)
|
commande.sem_op = -1; |
commande.sem_op = -1; |
commande.sem_flg = IPC_NOWAIT; |
commande.sem_flg = IPC_NOWAIT; |
|
|
while(semop((*semaphore).sem, &commande, 1) == -1) |
if (semop((*semaphore).sem, &commande, 1) == -1) |
{ |
{ |
if (errno != EINTR) |
return(-1); |
{ |
|
errno = EINVAL; |
|
return(-1); |
|
} |
|
} |
} |
|
|
return(0); |
return(0); |