diff options
Diffstat (limited to 'src/backend/port/darwin/sem.c')
-rw-r--r-- | src/backend/port/darwin/sem.c | 104 |
1 files changed, 52 insertions, 52 deletions
diff --git a/src/backend/port/darwin/sem.c b/src/backend/port/darwin/sem.c index 7dc7b0c9194..6130e6d72b2 100644 --- a/src/backend/port/darwin/sem.c +++ b/src/backend/port/darwin/sem.c @@ -4,13 +4,13 @@ * System V Semaphore Emulation * * Copyright (c) 1999, repas AEG Automation GmbH - * - * 2000-12-1 pmb@mac.com - * - changed from anonymous to named semaphores for darwin - * - this required changing sem_info from containig an array of sem_t to an array of sem_t* + * + * 2000-12-1 pmb@mac.com + * - changed from anonymous to named semaphores for darwin + * - this required changing sem_info from containig an array of sem_t to an array of sem_t* * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/port/darwin/Attic/sem.c,v 1.2 2001/01/17 22:11:19 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/port/darwin/Attic/sem.c,v 1.3 2001/03/22 03:59:42 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -27,13 +27,13 @@ #include "storage/proc.h" #include "port/darwin/sem.h" -#define SEMMAX IPC_NMAXSEM +#define SEMMAX IPC_NMAXSEM #define SETMAX ((MAXBACKENDS + SEMMAX - 1) / SEMMAX) #define OPMAX 8 #define MODE 0700 #define SHM_INFO_NAME "SysV_Sem_Info" -#define SEM_NAME "/pgsql-darwin" +#define SEM_NAME "/pgsql-darwin" struct pending_ops { @@ -43,12 +43,12 @@ struct pending_ops struct sem_info { - sem_t* sem; + sem_t *sem; struct { key_t key; int nsems; - sem_t* sem[SEMMAX];/* array of POSIX semaphores */ + sem_t *sem[SEMMAX];/* array of POSIX semaphores */ struct sem semV[SEMMAX]; /* array of System V semaphore * structures */ struct pending_ops pendingOps[SEMMAX]; /* array of pending @@ -64,12 +64,12 @@ semctl(int semid, int semnum, int cmd, /* ... */ union semun arg) { int r = 0; - sem_wait(SemInfo->sem); + sem_wait(SemInfo->sem); if (semid < 0 || semid >= SETMAX || semnum < 0 || semnum >= SemInfo->set[semid].nsems) { - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = EINVAL; return -1; } @@ -109,7 +109,7 @@ semctl(int semid, int semnum, int cmd, /* ... */ union semun arg) case IPC_RMID: for (semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++) { - if (sem_close(SemInfo->set[semid].sem[semnum]) == -1) + if (sem_close(SemInfo->set[semid].sem[semnum]) == -1) r = -1; } SemInfo->set[semid].key = -1; @@ -117,12 +117,12 @@ semctl(int semid, int semnum, int cmd, /* ... */ union semun arg) break; default: - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = EINVAL; return -1; } - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); return r; } @@ -134,12 +134,12 @@ semget(key_t key, int nsems, int semflg) semid, semnum /* , semnum1 */ ; int exist = 0; - char semname[64]; + char semname[64]; if (nsems < 0 || nsems > SEMMAX) { #ifdef DEBUG_IPC - fprintf(stderr, "darwin semget aborting because nsems out of range. (%d)\n", nsems); + fprintf(stderr, "darwin semget aborting because nsems out of range. (%d)\n", nsems); #endif errno = EINVAL; return -1; @@ -149,13 +149,13 @@ semget(key_t key, int nsems, int semflg) if (SemInfo == (struct sem_info *) - 1) { #ifdef DEBUG_IPC - fprintf(stderr, "darwin initializing shared mem for semaphore shim.\n"); + fprintf(stderr, "darwin initializing shared mem for semaphore shim.\n"); #endif /* test if the shared memory already exists */ fd = shm_open(SHM_INFO_NAME, O_RDWR | O_CREAT | O_EXCL, MODE); if (fd == -1 && errno == EEXIST) { -/* exist = 1; */ +/* exist = 1; */ shm_unlink(SHM_INFO_NAME); fd = shm_open(SHM_INFO_NAME, O_RDWR | O_CREAT | O_EXCL, MODE); } @@ -163,7 +163,7 @@ semget(key_t key, int nsems, int semflg) return fd; shm_unlink(SHM_INFO_NAME); /* The size may only be set once. Ignore errors. */ - ftruncate(fd, sizeof(struct sem_info)); + ftruncate(fd, sizeof(struct sem_info)); SemInfo = mmap(NULL, sizeof(struct sem_info), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (SemInfo == MAP_FAILED) @@ -171,22 +171,22 @@ semget(key_t key, int nsems, int semflg) if (!exist) { /* create semaphore for locking */ - sprintf(semname, "%s-map", SEM_NAME); + sprintf(semname, "%s-map", SEM_NAME); #ifdef DEBUG_IPC - fprintf(stderr, "darwin creating sem %s to cover shared mem.\n", semname); + fprintf(stderr, "darwin creating sem %s to cover shared mem.\n", semname); #endif - SemInfo->sem = sem_open(semname, O_CREAT, semflg & 0777, 1); - sem_unlink(semname); - sem_wait(SemInfo->sem); + SemInfo->sem = sem_open(semname, O_CREAT, semflg & 0777, 1); + sem_unlink(semname); + sem_wait(SemInfo->sem); /* initilize shared memory */ memset(SemInfo->set, 0, sizeof(SemInfo->set)); for (semid = 0; semid < SETMAX; semid++) SemInfo->set[semid].key = -1; - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); } } - sem_wait(SemInfo->sem); + sem_wait(SemInfo->sem); if (key != IPC_PRIVATE) { @@ -196,7 +196,7 @@ semget(key_t key, int nsems, int semflg) semid++; if (!(semflg & IPC_CREAT) && semid >= SETMAX) { - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = ENOENT; return -1; } @@ -204,7 +204,7 @@ semget(key_t key, int nsems, int semflg) { if (semflg & IPC_CREAT && semflg & IPC_EXCL) { - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = EEXIST; return -1; } @@ -213,14 +213,14 @@ semget(key_t key, int nsems, int semflg) if (nsems != 0 && SemInfo->set[semid].nsems < nsems) { #ifdef DEBUG_IPC -fprintf(stderr, "darwin semget failed because if (nsems != 0 && SemInfo->set[semid].nsems < nsems) %d %d\n", - nsems, SemInfo->set[semid].nsems); + fprintf(stderr, "darwin semget failed because if (nsems != 0 && SemInfo->set[semid].nsems < nsems) %d %d\n", + nsems, SemInfo->set[semid].nsems); #endif - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = EINVAL; return -1; } - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); return semid; } } @@ -233,28 +233,28 @@ fprintf(stderr, "darwin semget failed because if (nsems != 0 && SemInfo->set[sem if (semid >= SETMAX) { #ifdef DEBUG_IPC - fprintf(stderr, "darwin semget failed because all keys were -1 up to SETMAX\n"); + fprintf(stderr, "darwin semget failed because all keys were -1 up to SETMAX\n"); #endif - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = ENOSPC; return -1; } for (semnum = 0; semnum < nsems; semnum++) { - sprintf(semname, "%s-%d-%d", SEM_NAME, semid, semnum); + sprintf(semname, "%s-%d-%d", SEM_NAME, semid, semnum); #ifdef DEBUG_IPC - fprintf(stderr, "darwin creating sem %s to cover set %d num %dm.\n", semname, semid, semnum); + fprintf(stderr, "darwin creating sem %s to cover set %d num %dm.\n", semname, semid, semnum); #endif - SemInfo->set[semid].sem[semnum] = sem_open(semname, O_CREAT, semflg & 0777, 0); - sem_unlink(semname); + SemInfo->set[semid].sem[semnum] = sem_open(semname, O_CREAT, semflg & 0777, 0); + sem_unlink(semname); /* Currently sem_init always returns -1. if( sem_init( &SemInfo->set[semid].sem[semnum], 1, 0 ) == -1 ) { for( semnum1 = 0; semnum1 < semnum; semnum1++ ) { - sem_close( SemInfo->set[semid].sem[semnum1] ); + sem_close( SemInfo->set[semid].sem[semnum1] ); } - sem_post( SemInfo->sem ); + sem_post( SemInfo->sem ); return -1; } */ @@ -263,7 +263,7 @@ fprintf(stderr, "darwin semget failed because if (nsems != 0 && SemInfo->set[sem SemInfo->set[semid].key = key; SemInfo->set[semid].nsems = nsems; - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); return semid; } @@ -277,11 +277,11 @@ semop(int semid, struct sembuf * sops, size_t nsops) errno1 = 0, op; - sem_wait(SemInfo->sem); + sem_wait(SemInfo->sem); if (semid < 0 || semid >= SETMAX) { - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = EINVAL; return -1; } @@ -289,7 +289,7 @@ semop(int semid, struct sembuf * sops, size_t nsops) { if ( /* sops[i].sem_num < 0 || */ sops[i].sem_num >= SemInfo->set[semid].nsems) { - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = EFBIG; return -1; } @@ -303,7 +303,7 @@ semop(int semid, struct sembuf * sops, size_t nsops) { if (sops[i].sem_flg & IPC_NOWAIT) { - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = EAGAIN; return -1; } @@ -311,15 +311,15 @@ semop(int semid, struct sembuf * sops, size_t nsops) if (SemInfo->set[semid].pendingOps[sops[i].sem_num].idx >= OPMAX) { /* pending operations array overflow */ - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = ERANGE; return -1; } SemInfo->set[semid].pendingOps[sops[i].sem_num].op[SemInfo->set[semid].pendingOps[sops[i].sem_num].idx++] = sops[i].sem_op; /* suspend */ - sem_post(SemInfo->sem); /* avoid deadlock */ - r1 = sem_wait(SemInfo->set[semid].sem[sops[i].sem_num]); - sem_wait(SemInfo->sem); + sem_post(SemInfo->sem); /* avoid deadlock */ + r1 = sem_wait(SemInfo->set[semid].sem[sops[i].sem_num]); + sem_wait(SemInfo->sem); if (r1) { errno1 = errno; @@ -343,7 +343,7 @@ semop(int semid, struct sembuf * sops, size_t nsops) if (SemInfo->set[semid].pendingOps[sops[i].sem_num].op[SemInfo->set[semid].pendingOps[sops[i].sem_num].idx - 1] + op >= 0) { /* unsuspend processes */ - if (sem_post(SemInfo->set[semid].sem[sops[i].sem_num])) + if (sem_post(SemInfo->set[semid].sem[sops[i].sem_num])) { errno1 = errno; r = -1; @@ -364,14 +364,14 @@ semop(int semid, struct sembuf * sops, size_t nsops) /* sops[i].sem_op == 0 */ { /* not supported */ - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = ENOSYS; return -1; } SemInfo->set[semid].semV[sops[i].sem_num].sempid = getpid(); } - sem_post(SemInfo->sem); + sem_post(SemInfo->sem); errno = errno1; return r; |