--- rpl/src/rpl.h 2010/08/06 15:33:04 1.52 +++ rpl/src/rpl.h 2010/08/09 13:51:48 1.53 @@ -40,10 +40,11 @@ # define SHUT_RD SHUT_RD # define SHUT_WR SHUT_WR # define SHUT_RDWR SHUT_RDWR -# define SEM_FAILED NULL # undef IPV6 # include "getaddrinfo-conv.h" + +# define sched_yield(arg) #else # define IPV6 #endif @@ -91,21 +92,29 @@ # include -# ifndef OS2 +# ifndef SEMAPHORES_SYSV # include # else # include +# define SEM_FAILED NULL typedef int sem_t; - sem_t *sem_open(const char *nom, int oflag, ...); - int sem_init(sem_t *sem, int shared, unsigned int value); - int sem_close(sem_t *sem); - int sem_wait(sem_t *sem); - int sem_trywait(sem_t *sem); - int sem_post(sem_t *sem); - int sem_getvalue(sem_t *sem, int *value); - int sem_unlink(const char *nom); - int sem_destroy(sem_t *sem); +# ifndef SEM_A +# define SEM_A 0200 +# endif +# ifndef SEM_R +# define SEM_R 0400 +# endif + + sem_t *sem_open_SysV(const char *nom, int oflag, ...); + int sem_init_SysV(sem_t *sem, int shared, unsigned int value); + int sem_close_SysV(sem_t *sem); + int sem_wait_SysV(sem_t *sem); + int sem_trywait_SysV(sem_t *sem); + int sem_post_SysV(sem_t *sem); + int sem_getvalue_SysV(sem_t *sem, int *value); + int sem_unlink_SysV(const char *nom); + int sem_destroy_SysV(sem_t *sem); # endif # include @@ -160,6 +169,26 @@ #include "librplprototypes.h" + +/* +================================================================================ + SÉMAPHORES +================================================================================ +*/ + +#ifdef SEMAPHORES_SYSV +# define sem_init(a, b, c) sem_init_SysV(a, b, c) +# define sem_destroy(a) sem_destroy_SysV(a) +# define sem_wait(a) sem_wait_SysV(a) +# define sem_trywait(a) sem_trywait_SysV(a) +# define sem_post(a) sem_post_SysV(a) +# define sem_getvalue(a, b) sem_getvalue_SysV(a, b) +# define sem_open(...) sem_open_SysV(__VA_ARGS__) +# define sem_close(a) sem_close_SysV(a) +# define sem_unlink(a) sem_unlink_SysV(a) +#endif + + /* ================================================================================ SIGNAUX