version 1.51, 2012/12/18 13:19:40
|
version 1.53, 2013/02/22 19:48:22
|
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); |