--- rpl/src/semaphores.c 2010/08/06 15:33:04 1.7 +++ rpl/src/semaphores.c 2010/08/09 13:51:48 1.8 @@ -107,7 +107,7 @@ sem_getvalue2(sem_t *semaphore, int *val #endif -#ifdef OS2 +#ifdef SEMAPHORES_SYSV /* ================================================================================ @@ -123,9 +123,21 @@ sem_getvalue2(sem_t *semaphore, int *val extern unsigned char *chemin_semaphores_SysV; +#ifndef UNION_SEMUN +union semun +{ + int val; + struct semid_ds *buf; + unsigned short *array; + struct seminfo *__buf; +}; +#endif + int -sem_init(sem_t *semaphore, int shared, unsigned int valeur) +sem_init_SysV(sem_t *semaphore, int shared, unsigned int valeur) { + int ios; + union semun argument; if (shared != 0) @@ -141,13 +153,13 @@ sem_init(sem_t *semaphore, int shared, u } argument.val = valeur; - semctl((*semaphore), 0, SETVAL, argument); + ios = semctl((*semaphore), 0, SETVAL, argument); - return(0); + return(ios); } int -sem_destroy(sem_t *semaphore) +sem_destroy_SysV(sem_t *semaphore) { if (semctl((*semaphore), IPC_RMID, 0) == -1) { @@ -158,7 +170,7 @@ sem_destroy(sem_t *semaphore) } int -sem_wait(sem_t *semaphore) +sem_wait_SysV(sem_t *semaphore) { struct sembuf commande; @@ -175,7 +187,7 @@ sem_wait(sem_t *semaphore) } int -sem_trywait(sem_t *semaphore) +sem_trywait_SysV(sem_t *semaphore) { struct sembuf commande; @@ -197,7 +209,7 @@ sem_trywait(sem_t *semaphore) } int -sem_post(sem_t *semaphore) +sem_post_SysV(sem_t *semaphore) { struct sembuf commande; @@ -214,7 +226,7 @@ sem_post(sem_t *semaphore) } int -sem_getvalue(sem_t *semaphore, int *valeur) +sem_getvalue_SysV(sem_t *semaphore, int *valeur) { (*valeur) = semctl((*semaphore), 0, GETVAL); @@ -227,7 +239,7 @@ sem_getvalue(sem_t *semaphore, int *vale } sem_t -*sem_open(const char *nom, int oflag, ...) +*sem_open_SysV(const char *nom, int oflag, ...) //*sem_open(const char *nom, int oflag) //*sem_open(const char *nom, int oflag, mode_t mode, unsigned int value) { @@ -301,18 +313,18 @@ sem_t free(nom_absolu); - return(SEM_FAILED); + return(semaphore); } int -sem_close(sem_t *semaphore) +sem_close_SysV(sem_t *semaphore) { free(semaphore); return(0); } int -sem_unlink(const char *nom) +sem_unlink_SysV(const char *nom) { sem_t semaphore;