version 1.11, 2010/08/18 12:56:55
|
version 1.15, 2010/09/23 15:27:42
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.0.18 |
RPL/2 (R) version 4.0.20 |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 107 sem_getvalue2(sem_t *semaphore, int *val
|
Line 107 sem_getvalue2(sem_t *semaphore, int *val
|
|
|
#endif |
#endif |
|
|
#ifdef SEMAPHORES_SYSV |
#ifdef IPCS_SYSV |
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Line 125 sem_getvalue2(sem_t *semaphore, int *val
|
Line 125 sem_getvalue2(sem_t *semaphore, int *val
|
extern unsigned char *chemin_semaphores_SysV; |
extern unsigned char *chemin_semaphores_SysV; |
#else |
#else |
unsigned char racine_semaphores_OS2[] = "\\SEM32\\"; |
unsigned char racine_semaphores_OS2[] = "\\SEM32\\"; |
unsigned char racine_memoire_OS2[] = "\\SHAREDMEM\\"; |
unsigned char racine_memoire_OS2[] = "\\SHAREMEM\\"; |
#endif |
|
|
|
#ifndef UNION_SEMUN |
|
union semun |
|
{ |
|
int val; |
|
struct semid_ds *buf; |
|
unsigned short *array; |
|
struct seminfo *__buf; |
|
}; |
|
#endif |
#endif |
|
|
int |
int |
Line 162 sem_init_SysV(sem_t *semaphore, int shar
|
Line 152 sem_init_SysV(sem_t *semaphore, int shar
|
|
|
if ((*semaphore).sem == -1) |
if ((*semaphore).sem == -1) |
{ |
{ |
perror("sem_init"); |
|
errno = EINVAL; |
errno = EINVAL; |
return(-1); |
return(-1); |
} |
} |
Line 242 sem_destroy_SysV(sem_t *semaphore)
|
Line 231 sem_destroy_SysV(sem_t *semaphore)
|
return(0); |
return(0); |
} |
} |
|
|
if (semctl((*semaphore).sem, IPC_RMID, 0) == -1) |
if (semctl((*semaphore).sem, 0, IPC_RMID) == -1) |
{ |
{ |
return(EINVAL); |
return(EINVAL); |
} |
} |
Line 310 sem_wait_SysV(sem_t *semaphore)
|
Line 299 sem_wait_SysV(sem_t *semaphore)
|
{ |
{ |
if (errno != EINTR) |
if (errno != EINTR) |
{ |
{ |
perror("sem_wait"); |
|
errno = EINVAL; |
errno = EINVAL; |
return(-1); |
return(-1); |
} |
} |
Line 865 sem_unlink_SysV(const char *nom)
|
Line 853 sem_unlink_SysV(const char *nom)
|
} |
} |
|
|
sprintf(nom_absolu, "%s%s", chemin_semaphores_SysV, nom); |
sprintf(nom_absolu, "%s%s", chemin_semaphores_SysV, nom); |
semctl(semget(ftok(nom_absolu, 1), 0, 0), IPC_RMID, 0); |
semctl(semget(ftok(nom_absolu, 1), 0, 0), 0, IPC_RMID); |
|
|
if (unlink(nom_absolu) == -1) |
if (unlink(nom_absolu) == -1) |
{ |
{ |