summaryrefslogtreecommitdiff
path: root/src/backend/port/qnx4
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/port/qnx4')
-rw-r--r--src/backend/port/qnx4/ipc.h16
-rw-r--r--src/backend/port/qnx4/isnan.c7
-rw-r--r--src/backend/port/qnx4/rint.c28
-rw-r--r--src/backend/port/qnx4/sem.c557
-rw-r--r--src/backend/port/qnx4/sem.h56
-rw-r--r--src/backend/port/qnx4/shm.c289
-rw-r--r--src/backend/port/qnx4/shm.h31
-rw-r--r--src/backend/port/qnx4/tstrint.c16
-rw-r--r--src/backend/port/qnx4/tstsem.c298
-rw-r--r--src/backend/port/qnx4/tstshm.c120
10 files changed, 782 insertions, 636 deletions
diff --git a/src/backend/port/qnx4/ipc.h b/src/backend/port/qnx4/ipc.h
index 00681a71886..0911cc35273 100644
--- a/src/backend/port/qnx4/ipc.h
+++ b/src/backend/port/qnx4/ipc.h
@@ -7,24 +7,24 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/ipc.h,v 1.1 1999/12/16 16:52:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/ipc.h,v 1.2 2000/04/12 17:15:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
-#ifndef _SYS_IPC_H
-#define _SYS_IPC_H
+#ifndef _SYS_IPC_H
+#define _SYS_IPC_H
/* Common IPC definitions. */
/* Mode bits. */
#define IPC_CREAT 0001000 /* create entry if key doesn't exist */
-#define IPC_EXCL 0002000 /* fail if key exists */
-#define IPC_NOWAIT 0004000 /* error if request must wait */
+#define IPC_EXCL 0002000 /* fail if key exists */
+#define IPC_NOWAIT 0004000 /* error if request must wait */
/* Keys. */
-#define IPC_PRIVATE (key_t)0 /* private key */
+#define IPC_PRIVATE (key_t)0 /* private key */
/* Control Commands. */
-#define IPC_RMID 0 /* remove identifier */
+#define IPC_RMID 0 /* remove identifier */
-#endif /* _SYS_IPC_H */
+#endif /* _SYS_IPC_H */
diff --git a/src/backend/port/qnx4/isnan.c b/src/backend/port/qnx4/isnan.c
index 2c001bb2c19..a0afb3d1849 100644
--- a/src/backend/port/qnx4/isnan.c
+++ b/src/backend/port/qnx4/isnan.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/isnan.c,v 1.1 1999/12/16 16:52:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/isnan.c,v 1.2 2000/04/12 17:15:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -16,7 +16,8 @@
unsigned char __nan[8] = __nan_bytes;
-int isnan(double dsrc)
+int
+isnan(double dsrc)
{
- return !memcmp( &dsrc, &NAN, sizeof( double ) );
+ return !memcmp(&dsrc, &NAN, sizeof(double));
}
diff --git a/src/backend/port/qnx4/rint.c b/src/backend/port/qnx4/rint.c
index 2683ce849b7..4450d8c0567 100644
--- a/src/backend/port/qnx4/rint.c
+++ b/src/backend/port/qnx4/rint.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/rint.c,v 1.1 1999/12/16 16:52:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/rint.c,v 1.2 2000/04/12 17:15:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -15,17 +15,23 @@
#include <math.h>
#include "os.h"
-double rint(double x)
+double
+rint(double x)
{
- double f, n = 0.;
+ double f,
+ n = 0.;
- f = modf( x, &n );
+ f = modf(x, &n);
- if( x > 0. ) {
- if( f > .5 ) n += 1.;
- }
- else if( x < 0. ) {
- if( f < -.5 ) n -= 1.;
- }
- return n;
+ if (x > 0.)
+ {
+ if (f > .5)
+ n += 1.;
+ }
+ else if (x < 0.)
+ {
+ if (f < -.5)
+ n -= 1.;
+ }
+ return n;
}
diff --git a/src/backend/port/qnx4/sem.c b/src/backend/port/qnx4/sem.c
index 426329469ff..bcd784e6c21 100644
--- a/src/backend/port/qnx4/sem.c
+++ b/src/backend/port/qnx4/sem.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/sem.c,v 1.2 2000/03/14 18:12:06 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/sem.c,v 1.3 2000/04/12 17:15:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -29,282 +29,321 @@
#define SEMMAX (PROC_NSEMS_PER_SET)
#define OPMAX 8
-#define MODE 0700
-#define SHM_INFO_NAME "SysV_Sem_Info"
+#define MODE 0700
+#define SHM_INFO_NAME "SysV_Sem_Info"
-struct pending_ops {
- int op[OPMAX]; /* array of pending operations */
- int idx; /* index of first free array member */
+struct pending_ops
+{
+ int op[OPMAX]; /* array of pending operations */
+ int idx; /* index of first free array member */
};
-struct sem_info {
- sem_t sem;
- struct {
- key_t key;
- int nsems;
- 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 operations */
- } set[SETMAX];
+struct sem_info
+{
+ sem_t sem;
+ struct
+ {
+ key_t key;
+ int nsems;
+ 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
+ * operations */
+ } set[SETMAX];
};
-static struct sem_info *SemInfo = ( struct sem_info * )-1;
+static struct sem_info *SemInfo = (struct sem_info *) - 1;
-int semctl( int semid, int semnum, int cmd, /*...*/union semun arg )
+int
+semctl(int semid, int semnum, int cmd, /* ... */ union semun arg)
{
- int r = 0;
-
- sem_wait( &SemInfo->sem );
-
- if( semid < 0 || semid >= SETMAX ||
- semnum < 0 || semnum >= SemInfo->set[semid].nsems ) {
- sem_post( &SemInfo->sem );
- errno = EINVAL;
- return -1;
- }
-
- switch( cmd ) {
- case GETNCNT:
- r = SemInfo->set[semid].semV[semnum].semncnt;
- break;
-
- case GETPID:
- r = SemInfo->set[semid].semV[semnum].sempid;
- break;
-
- case GETVAL:
- r = SemInfo->set[semid].semV[semnum].semval;
- break;
-
- case GETALL:
- for( semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++ ) {
- arg.array[semnum] = SemInfo->set[semid].semV[semnum].semval;
- }
- break;
-
- case SETVAL:
- SemInfo->set[semid].semV[semnum].semval = arg.val;
- break;
-
- case SETALL:
- for( semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++ ) {
- SemInfo->set[semid].semV[semnum].semval = arg.array[semnum];
- }
- break;
-
- case GETZCNT:
- r = SemInfo->set[semid].semV[semnum].semzcnt;
- break;
-
- case IPC_RMID:
- for( semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++ ) {
- if( sem_destroy( &SemInfo->set[semid].sem[semnum] ) == -1 ) {
- r = -1;
- }
- }
- SemInfo->set[semid].key = -1;
- SemInfo->set[semid].nsems = 0;
- break;
-
- default:
- sem_post( &SemInfo->sem );
- errno = EINVAL;
- return -1;
- }
-
- sem_post( &SemInfo->sem );
-
- return r;
+ int r = 0;
+
+ sem_wait(&SemInfo->sem);
+
+ if (semid < 0 || semid >= SETMAX ||
+ semnum < 0 || semnum >= SemInfo->set[semid].nsems)
+ {
+ sem_post(&SemInfo->sem);
+ errno = EINVAL;
+ return -1;
+ }
+
+ switch (cmd)
+ {
+ case GETNCNT:
+ r = SemInfo->set[semid].semV[semnum].semncnt;
+ break;
+
+ case GETPID:
+ r = SemInfo->set[semid].semV[semnum].sempid;
+ break;
+
+ case GETVAL:
+ r = SemInfo->set[semid].semV[semnum].semval;
+ break;
+
+ case GETALL:
+ for (semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++)
+ arg.array[semnum] = SemInfo->set[semid].semV[semnum].semval;
+ break;
+
+ case SETVAL:
+ SemInfo->set[semid].semV[semnum].semval = arg.val;
+ break;
+
+ case SETALL:
+ for (semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++)
+ SemInfo->set[semid].semV[semnum].semval = arg.array[semnum];
+ break;
+
+ case GETZCNT:
+ r = SemInfo->set[semid].semV[semnum].semzcnt;
+ break;
+
+ case IPC_RMID:
+ for (semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++)
+ {
+ if (sem_destroy(&SemInfo->set[semid].sem[semnum]) == -1)
+ r = -1;
+ }
+ SemInfo->set[semid].key = -1;
+ SemInfo->set[semid].nsems = 0;
+ break;
+
+ default:
+ sem_post(&SemInfo->sem);
+ errno = EINVAL;
+ return -1;
+ }
+
+ sem_post(&SemInfo->sem);
+
+ return r;
}
-int semget( key_t key, int nsems, int semflg )
+int
+semget(key_t key, int nsems, int semflg)
{
- int fd, semid, semnum/*, semnum1*/;
- int exist = 0;
-
- if( nsems < 0 || nsems > SEMMAX ) {
- errno = EINVAL;
- return -1;
- }
-
- /* open and map shared memory */
- if( SemInfo == ( struct sem_info * )-1 ) {
- /* 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;
- fd = shm_open( SHM_INFO_NAME, O_RDWR | O_CREAT, MODE );
- }
- if( fd == -1 ) {
- return fd;
- }
- /* The size may only be set once. Ignore errors. */
- ltrunc( fd, sizeof( struct sem_info ), SEEK_SET );
- SemInfo = mmap( NULL, sizeof( struct sem_info ),
- PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
- if( SemInfo == MAP_FAILED ) {
- return -1;
- }
- if( !exist ) {
- /* create semaphore for locking */
- sem_init( &SemInfo->sem, 1, 1 );
- 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_wait( &SemInfo->sem );
-
- if( key != IPC_PRIVATE ) {
- /* search existing element */
- semid = 0;
- while( semid < SETMAX && SemInfo->set[semid].key != key ) semid++;
- if( !( semflg & IPC_CREAT ) && semid >= SETMAX ) {
- sem_post( &SemInfo->sem );
- errno = ENOENT;
- return -1;
- }
- else if( semid < SETMAX ) {
- if( semflg & IPC_CREAT && semflg & IPC_EXCL ) {
- sem_post( &SemInfo->sem );
- errno = EEXIST;
- return -1;
- }
- else {
- if( nsems != 0 && SemInfo->set[semid].nsems < nsems ) {
- sem_post( &SemInfo->sem );
- errno = EINVAL;
- return -1;
- }
- sem_post( &SemInfo->sem );
- return semid;
- }
- }
- }
-
- /* search first free element */
- semid = 0;
- while( semid < SETMAX && SemInfo->set[semid].key != -1 ) semid++;
- if( semid >= SETMAX ) {
- sem_post( &SemInfo->sem );
- errno = ENOSPC;
- return -1;
- }
-
- for( semnum = 0; semnum < nsems; semnum++ ) {
- sem_init( &SemInfo->set[semid].sem[semnum], 1, 0 );
+ int fd,
+ semid,
+ semnum /* , semnum1 */ ;
+ int exist = 0;
+
+ if (nsems < 0 || nsems > SEMMAX)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ /* open and map shared memory */
+ if (SemInfo == (struct sem_info *) - 1)
+ {
+ /* 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;
+ fd = shm_open(SHM_INFO_NAME, O_RDWR | O_CREAT, MODE);
+ }
+ if (fd == -1)
+ return fd;
+ /* The size may only be set once. Ignore errors. */
+ ltrunc(fd, sizeof(struct sem_info), SEEK_SET);
+ SemInfo = mmap(NULL, sizeof(struct sem_info),
+ PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+ if (SemInfo == MAP_FAILED)
+ return -1;
+ if (!exist)
+ {
+ /* create semaphore for locking */
+ sem_init(&SemInfo->sem, 1, 1);
+ 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_wait(&SemInfo->sem);
+
+ if (key != IPC_PRIVATE)
+ {
+ /* search existing element */
+ semid = 0;
+ while (semid < SETMAX && SemInfo->set[semid].key != key)
+ semid++;
+ if (!(semflg & IPC_CREAT) && semid >= SETMAX)
+ {
+ sem_post(&SemInfo->sem);
+ errno = ENOENT;
+ return -1;
+ }
+ else if (semid < SETMAX)
+ {
+ if (semflg & IPC_CREAT && semflg & IPC_EXCL)
+ {
+ sem_post(&SemInfo->sem);
+ errno = EEXIST;
+ return -1;
+ }
+ else
+ {
+ if (nsems != 0 && SemInfo->set[semid].nsems < nsems)
+ {
+ sem_post(&SemInfo->sem);
+ errno = EINVAL;
+ return -1;
+ }
+ sem_post(&SemInfo->sem);
+ return semid;
+ }
+ }
+ }
+
+ /* search first free element */
+ semid = 0;
+ while (semid < SETMAX && SemInfo->set[semid].key != -1)
+ semid++;
+ if (semid >= SETMAX)
+ {
+ sem_post(&SemInfo->sem);
+ errno = ENOSPC;
+ return -1;
+ }
+
+ for (semnum = 0; semnum < nsems; semnum++)
+ {
+ sem_init(&SemInfo->set[semid].sem[semnum], 1, 0);
/* Currently sem_init always returns -1.
- if( sem_init( &SemInfo->set[semid].sem[semnum], 1, 0 ) == -1 ) {
- for( semnum1 = 0; semnum1 < semnum; semnum1++ ) {
- sem_destroy( &SemInfo->set[semid].sem[semnum1] );
- }
- sem_post( &SemInfo->sem );
- return -1;
- }
+ if( sem_init( &SemInfo->set[semid].sem[semnum], 1, 0 ) == -1 ) {
+ for( semnum1 = 0; semnum1 < semnum; semnum1++ ) {
+ sem_destroy( &SemInfo->set[semid].sem[semnum1] );
+ }
+ sem_post( &SemInfo->sem );
+ return -1;
+ }
*/
- }
+ }
- SemInfo->set[semid].key = key;
- SemInfo->set[semid].nsems = nsems;
+ SemInfo->set[semid].key = key;
+ SemInfo->set[semid].nsems = nsems;
- sem_post( &SemInfo->sem );
+ sem_post(&SemInfo->sem);
- return semid;
+ return semid;
}
-int semop( int semid, struct sembuf *sops, size_t nsops )
+int
+semop(int semid, struct sembuf * sops, size_t nsops)
{
- int i, r = 0, r1, errno1 = 0, op;
-
- sem_wait( &SemInfo->sem );
-
- if( semid < 0 || semid >= SETMAX ) {
- sem_post( &SemInfo->sem );
- errno = EINVAL;
- return -1;
- }
- for( i = 0; i < nsops; i++ ) {
- if( /*sops[i].sem_num < 0 ||*/ sops[i].sem_num >= SemInfo->set[semid].nsems ) {
- sem_post( &SemInfo->sem );
- errno = EFBIG;
- return -1;
- }
- }
-
- for( i = 0; i < nsops; i++ ) {
- if( sops[i].sem_op < 0 ) {
- if( SemInfo->set[semid].semV[sops[i].sem_num].semval < -sops[i].sem_op ) {
- if( sops[i].sem_flg & IPC_NOWAIT ) {
- sem_post( &SemInfo->sem );
- errno = EAGAIN;
- return -1;
- }
- SemInfo->set[semid].semV[sops[i].sem_num].semncnt++;
- if( SemInfo->set[semid].pendingOps[sops[i].sem_num].idx >= OPMAX ) {
- /* pending operations array overflow */
- 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 );
- if( r1 ) {
- errno1 = errno;
- r = r1;
- /* remove pending operation */
- SemInfo->set[semid].pendingOps[sops[i].sem_num].op[--SemInfo->set[semid].pendingOps[sops[i].sem_num].idx] = 0;
- }
- else {
- SemInfo->set[semid].semV[sops[i].sem_num].semval -= -sops[i].sem_op;
- }
- SemInfo->set[semid].semV[sops[i].sem_num].semncnt--;
- }
- else {
- SemInfo->set[semid].semV[sops[i].sem_num].semval -= -sops[i].sem_op;
- }
- }
- else if( sops[i].sem_op > 0 ) {
- SemInfo->set[semid].semV[sops[i].sem_num].semval += sops[i].sem_op;
- op = sops[i].sem_op;
- while( op > 0 && SemInfo->set[semid].pendingOps[sops[i].sem_num].idx > 0 ) { /* operations pending */
- 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] ) ) {
- errno1 = errno;
- r = -1;
- }
- /* adjust pending operations */
- op += SemInfo->set[semid].pendingOps[sops[i].sem_num].op[--SemInfo->set[semid].pendingOps[sops[i].sem_num].idx];
- SemInfo->set[semid].pendingOps[sops[i].sem_num].op[SemInfo->set[semid].pendingOps[sops[i].sem_num].idx] = 0;
- }
- else {
- /* adjust pending operations */
- SemInfo->set[semid].pendingOps[sops[i].sem_num].op[SemInfo->set[semid].pendingOps[sops[i].sem_num].idx-1] += op;
- op = 0;
- }
- }
- }
- else /* sops[i].sem_op == 0 */ {
- /* not supported */
- sem_post( &SemInfo->sem );
- errno = ENOSYS;
- return -1;
- }
- SemInfo->set[semid].semV[sops[i].sem_num].sempid = getpid( );
- }
-
- sem_post( &SemInfo->sem );
-
- errno = errno1;
- return r;
+ int i,
+ r = 0,
+ r1,
+ errno1 = 0,
+ op;
+
+ sem_wait(&SemInfo->sem);
+
+ if (semid < 0 || semid >= SETMAX)
+ {
+ sem_post(&SemInfo->sem);
+ errno = EINVAL;
+ return -1;
+ }
+ for (i = 0; i < nsops; i++)
+ {
+ if ( /* sops[i].sem_num < 0 || */ sops[i].sem_num >= SemInfo->set[semid].nsems)
+ {
+ sem_post(&SemInfo->sem);
+ errno = EFBIG;
+ return -1;
+ }
+ }
+
+ for (i = 0; i < nsops; i++)
+ {
+ if (sops[i].sem_op < 0)
+ {
+ if (SemInfo->set[semid].semV[sops[i].sem_num].semval < -sops[i].sem_op)
+ {
+ if (sops[i].sem_flg & IPC_NOWAIT)
+ {
+ sem_post(&SemInfo->sem);
+ errno = EAGAIN;
+ return -1;
+ }
+ SemInfo->set[semid].semV[sops[i].sem_num].semncnt++;
+ if (SemInfo->set[semid].pendingOps[sops[i].sem_num].idx >= OPMAX)
+ {
+ /* pending operations array overflow */
+ 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);
+ if (r1)
+ {
+ errno1 = errno;
+ r = r1;
+ /* remove pending operation */
+ SemInfo->set[semid].pendingOps[sops[i].sem_num].op[--SemInfo->set[semid].pendingOps[sops[i].sem_num].idx] = 0;
+ }
+ else
+ SemInfo->set[semid].semV[sops[i].sem_num].semval -= -sops[i].sem_op;
+ SemInfo->set[semid].semV[sops[i].sem_num].semncnt--;
+ }
+ else
+ SemInfo->set[semid].semV[sops[i].sem_num].semval -= -sops[i].sem_op;
+ }
+ else if (sops[i].sem_op > 0)
+ {
+ SemInfo->set[semid].semV[sops[i].sem_num].semval += sops[i].sem_op;
+ op = sops[i].sem_op;
+ while (op > 0 && SemInfo->set[semid].pendingOps[sops[i].sem_num].idx > 0)
+ { /* operations pending */
+ 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]))
+ {
+ errno1 = errno;
+ r = -1;
+ }
+ /* adjust pending operations */
+ op += SemInfo->set[semid].pendingOps[sops[i].sem_num].op[--SemInfo->set[semid].pendingOps[sops[i].sem_num].idx];
+ SemInfo->set[semid].pendingOps[sops[i].sem_num].op[SemInfo->set[semid].pendingOps[sops[i].sem_num].idx] = 0;
+ }
+ else
+ {
+ /* adjust pending operations */
+ SemInfo->set[semid].pendingOps[sops[i].sem_num].op[SemInfo->set[semid].pendingOps[sops[i].sem_num].idx - 1] += op;
+ op = 0;
+ }
+ }
+ }
+ else
+ /* sops[i].sem_op == 0 */
+ {
+ /* not supported */
+ sem_post(&SemInfo->sem);
+ errno = ENOSYS;
+ return -1;
+ }
+ SemInfo->set[semid].semV[sops[i].sem_num].sempid = getpid();
+ }
+
+ sem_post(&SemInfo->sem);
+
+ errno = errno1;
+ return r;
}
diff --git a/src/backend/port/qnx4/sem.h b/src/backend/port/qnx4/sem.h
index a42d7fdf86e..c9fd18a05a6 100644
--- a/src/backend/port/qnx4/sem.h
+++ b/src/backend/port/qnx4/sem.h
@@ -7,59 +7,63 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/sem.h,v 1.2 2000/03/14 18:12:06 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/sem.h,v 1.3 2000/04/12 17:15:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
-#ifndef _SYS_SEM_H
-#define _SYS_SEM_H
+#ifndef _SYS_SEM_H
+#define _SYS_SEM_H
#include <sys/ipc.h>
#ifdef __cplusplus
-extern "C" {
+extern "C"
+{
#endif
/*
* Semctl Command Definitions.
*/
-#define GETNCNT 3 /* get semncnt */
-#define GETPID 4 /* get sempid */
-#define GETVAL 5 /* get semval */
-#define GETALL 6 /* get all semval's */
-#define GETZCNT 7 /* get semzcnt */
-#define SETVAL 8 /* set semval */
-#define SETALL 9 /* set all semval's */
+#define GETNCNT 3 /* get semncnt */
+#define GETPID 4 /* get sempid */
+#define GETVAL 5 /* get semval */
+#define GETALL 6 /* get all semval's */
+#define GETZCNT 7 /* get semzcnt */
+#define SETVAL 8 /* set semval */
+#define SETALL 9 /* set all semval's */
/*
* There is one semaphore structure for each semaphore in the system.
*/
-struct sem {
- ushort_t semval; /* semaphore text map address */
- pid_t sempid; /* pid of last operation */
- ushort_t semncnt; /* # awaiting semval > cval */
- ushort_t semzcnt; /* # awaiting semval = 0 */
-};
+ struct sem
+ {
+ ushort_t semval; /* semaphore text map address */
+ pid_t sempid; /* pid of last operation */
+ ushort_t semncnt; /* # awaiting semval > cval */
+ ushort_t semzcnt; /* # awaiting semval = 0 */
+ };
/*
* User semaphore template for semop system calls.
*/
-struct sembuf {
- ushort_t sem_num; /* semaphore # */
- short sem_op; /* semaphore operation */
- short sem_flg; /* operation flags */
-};
+ struct sembuf
+ {
+ ushort_t sem_num; /* semaphore # */
+ short sem_op; /* semaphore operation */
+ short sem_flg; /* operation flags */
+ };
-extern int semctl( int semid, int semnum, int cmd, /*...*/union semun arg );
-extern int semget( key_t key, int nsems, int semflg );
-extern int semop( int semid, struct sembuf *sops, size_t nsops );
+ extern int semctl(int semid, int semnum, int cmd, /* ... */ union semun arg);
+ extern int semget(key_t key, int nsems, int semflg);
+ extern int semop(int semid, struct sembuf * sops, size_t nsops);
#ifdef __cplusplus
}
+
#endif
-#endif /* _SYS_SEM_H */
+#endif /* _SYS_SEM_H */
diff --git a/src/backend/port/qnx4/shm.c b/src/backend/port/qnx4/shm.c
index 5df3ebc8c28..4cf0486544b 100644
--- a/src/backend/port/qnx4/shm.c
+++ b/src/backend/port/qnx4/shm.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/shm.c,v 1.1 1999/12/16 16:52:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/shm.c,v 1.2 2000/04/12 17:15:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -25,169 +25,202 @@
#define SHMMAX 1024
-struct shm_info {
- int shmid;
- key_t key;
- size_t size;
- void *addr;
+struct shm_info
+{
+ int shmid;
+ key_t key;
+ size_t size;
+ void *addr;
};
-static struct shm_info *ShmInfo;
+static struct shm_info *ShmInfo;
-static int shm_putinfo( struct shm_info *info );
-static int shm_updinfo( int i, struct shm_info *info );
-static int shm_getinfo( int shmid, struct shm_info *info );
-static int shm_getinfobyaddr( const void *addr, struct shm_info *info );
+static int shm_putinfo(struct shm_info * info);
+static int shm_updinfo(int i, struct shm_info * info);
+static int shm_getinfo(int shmid, struct shm_info * info);
+static int shm_getinfobyaddr(const void *addr, struct shm_info * info);
-static int shm_putinfo( struct shm_info *info )
+static int
+shm_putinfo(struct shm_info * info)
{
- int i;
-
- if( ShmInfo == NULL ) {
- ShmInfo = calloc( SHMMAX, sizeof( struct shm_info ) );
- if( ShmInfo == NULL ) return -1;
- /* initialize ShmInfo */
- for( i = 0; i < SHMMAX; i++ ) {
- ShmInfo[i].shmid = -1;
- }
- }
-
- /* search first free element */
- i = 0;
- while( i < SHMMAX && ShmInfo[i].shmid != -1 ) i++;
- if( i >= SHMMAX ) {
- errno = ENOSPC;
- return -1;
- }
-
- memcpy( &ShmInfo[i], info, sizeof( struct shm_info ) );
-
- return i;
+ int i;
+
+ if (ShmInfo == NULL)
+ {
+ ShmInfo = calloc(SHMMAX, sizeof(struct shm_info));
+ if (ShmInfo == NULL)
+ return -1;
+ /* initialize ShmInfo */
+ for (i = 0; i < SHMMAX; i++)
+ ShmInfo[i].shmid = -1;
+ }
+
+ /* search first free element */
+ i = 0;
+ while (i < SHMMAX && ShmInfo[i].shmid != -1)
+ i++;
+ if (i >= SHMMAX)
+ {
+ errno = ENOSPC;
+ return -1;
+ }
+
+ memcpy(&ShmInfo[i], info, sizeof(struct shm_info));
+
+ return i;
}
-static int shm_updinfo( int i, struct shm_info *info )
+static int
+shm_updinfo(int i, struct shm_info * info)
{
- if( i >= SHMMAX ) return -1;
- if( ShmInfo == NULL ) return -1;
+ if (i >= SHMMAX)
+ return -1;
+ if (ShmInfo == NULL)
+ return -1;
+
+ memcpy(&ShmInfo[i], info, sizeof(struct shm_info));
- memcpy( &ShmInfo[i], info, sizeof( struct shm_info ) );
-
- return i;
+ return i;
}
-static int shm_getinfo( int shmid, struct shm_info *info )
+static int
+shm_getinfo(int shmid, struct shm_info * info)
{
- int i;
+ int i;
+
+ if (ShmInfo == NULL)
+ return -1;
- if( ShmInfo == NULL ) return -1;
+ /* search element */
+ i = 0;
+ while (i < SHMMAX && ShmInfo[i].shmid != shmid)
+ i++;
+ if (i >= SHMMAX)
+ return -1;
- /* search element */
- i = 0;
- while( i < SHMMAX && ShmInfo[i].shmid != shmid ) i++;
- if( i >= SHMMAX ) return -1;
+ memcpy(info, &ShmInfo[i], sizeof(struct shm_info));
- memcpy( info, &ShmInfo[i], sizeof( struct shm_info ) );
-
- return i;
+ return i;
}
-static int shm_getinfobyaddr( const void *addr, struct shm_info *info )
+static int
+shm_getinfobyaddr(const void *addr, struct shm_info * info)
{
- int i;
+ int i;
- if( ShmInfo == ( struct shm_info * )-1 ) return -1;
+ if (ShmInfo == (struct shm_info *) - 1)
+ return -1;
- /* search element */
- i = 0;
- while( i < SHMMAX && ShmInfo[i].addr != addr ) i++;
- if( i >= SHMMAX ) return -1;
+ /* search element */
+ i = 0;
+ while (i < SHMMAX && ShmInfo[i].addr != addr)
+ i++;
+ if (i >= SHMMAX)
+ return -1;
- memcpy( info, &ShmInfo[i], sizeof( struct shm_info ) );
-
- return i;
+ memcpy(info, &ShmInfo[i], sizeof(struct shm_info));
+
+ return i;
}
-void *shmat( int shmid, const void *shmaddr, int shmflg )
+void *
+shmat(int shmid, const void *shmaddr, int shmflg)
{
- struct shm_info info;
- int i;
-
- i = shm_getinfo( shmid, &info );
- if( i == -1 ) {
- errno = EACCES;
- return ( void * )-1;
- }
-
- info.addr = mmap( ( void * )shmaddr, info.size,
- PROT_READ | PROT_WRITE, MAP_SHARED, shmid, 0 );
- if( info.addr == MAP_FAILED ) return info.addr;
-
- if( shm_updinfo( i, &info ) == -1 ) {
- errno = EACCES;
- return ( void * )-1;
- }
-
- return info.addr;
+ struct shm_info info;
+ int i;
+
+ i = shm_getinfo(shmid, &info);
+ if (i == -1)
+ {
+ errno = EACCES;
+ return (void *) -1;
+ }
+
+ info.addr = mmap((void *) shmaddr, info.size,
+ PROT_READ | PROT_WRITE, MAP_SHARED, shmid, 0);
+ if (info.addr == MAP_FAILED)
+ return info.addr;
+
+ if (shm_updinfo(i, &info) == -1)
+ {
+ errno = EACCES;
+ return (void *) -1;
+ }
+
+ return info.addr;
}
-int shmdt( const void *addr )
+int
+shmdt(const void *addr)
{
- struct shm_info info;
+ struct shm_info info;
- if( shm_getinfobyaddr( addr, &info ) == -1 ) {
- errno = EACCES;
- return -1;
- }
+ if (shm_getinfobyaddr(addr, &info) == -1)
+ {
+ errno = EACCES;
+ return -1;
+ }
- return munmap( ( void * )addr, info.size );
+ return munmap((void *) addr, info.size);
}
-int shmctl( int shmid, int cmd, struct shmid_ds *buf )
+int
+shmctl(int shmid, int cmd, struct shmid_ds * buf)
{
- struct shm_info info;
- char name[NAME_MAX+1];
-
- /* IPC_RMID supported only */
- if( cmd != IPC_RMID ) {
- errno = EINVAL;
- return -1;
- }
-
- if( shm_getinfo( shmid, &info ) == -1 ) {
- errno = EACCES;
- return -1;
- }
-
- return shm_unlink( itoa( info.key, name, 16 ) );
+ struct shm_info info;
+ char name[NAME_MAX + 1];
+
+ /* IPC_RMID supported only */
+ if (cmd != IPC_RMID)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ if (shm_getinfo(shmid, &info) == -1)
+ {
+ errno = EACCES;
+ return -1;
+ }
+
+ return shm_unlink(itoa(info.key, name, 16));
}
-int shmget( key_t key, size_t size, int flags )
+int
+shmget(key_t key, size_t size, int flags)
{
- char name[NAME_MAX+1];
- int oflag = 0;
- struct shm_info info;
-
- if( flags & IPC_CREAT ) oflag |= O_CREAT;
- if( flags & IPC_EXCL ) oflag |= O_EXCL;
- if( flags & SHM_R ) {
- if( flags & SHM_W ) oflag |= O_RDWR;
- else oflag |= O_RDONLY;
- }
- info.shmid = shm_open( itoa( key, name, 16 ), oflag, MODE );
-
- /* store shared memory information */
- if( info.shmid != -1 ) {
- info.key = key;
- info.size = size;
- info.addr = NULL;
- if( shm_putinfo( &info ) == -1 ) return -1;
- }
-
- /* The size may only be set once. Ignore errors. */
- ltrunc( info.shmid, size, SEEK_SET );
-
- return info.shmid;
+ char name[NAME_MAX + 1];
+ int oflag = 0;
+ struct shm_info info;
+
+ if (flags & IPC_CREAT)
+ oflag |= O_CREAT;
+ if (flags & IPC_EXCL)
+ oflag |= O_EXCL;
+ if (flags & SHM_R)
+ {
+ if (flags & SHM_W)
+ oflag |= O_RDWR;
+ else
+ oflag |= O_RDONLY;
+ }
+ info.shmid = shm_open(itoa(key, name, 16), oflag, MODE);
+
+ /* store shared memory information */
+ if (info.shmid != -1)
+ {
+ info.key = key;
+ info.size = size;
+ info.addr = NULL;
+ if (shm_putinfo(&info) == -1)
+ return -1;
+ }
+
+ /* The size may only be set once. Ignore errors. */
+ ltrunc(info.shmid, size, SEEK_SET);
+
+ return info.shmid;
}
diff --git a/src/backend/port/qnx4/shm.h b/src/backend/port/qnx4/shm.h
index e66cd6327d0..6fafb223785 100644
--- a/src/backend/port/qnx4/shm.h
+++ b/src/backend/port/qnx4/shm.h
@@ -7,34 +7,37 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/shm.h,v 1.1 1999/12/16 16:52:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/shm.h,v 1.2 2000/04/12 17:15:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
-#ifndef _SYS_SHM_H
-#define _SYS_SHM_H
+#ifndef _SYS_SHM_H
+#define _SYS_SHM_H
#include <sys/ipc.h>
#ifdef __cplusplus
-extern "C" {
+extern "C"
+{
#endif
-#define SHM_R 0400 /* read permission */
-#define SHM_W 0200 /* write permission */
+#define SHM_R 0400 /* read permission */
+#define SHM_W 0200 /* write permission */
-struct shmid_ds {
- int dummy;
-};
+ struct shmid_ds
+ {
+ int dummy;
+ };
-extern void *shmat( int shmid, const void *shmaddr, int shmflg );
-extern int shmdt( const void *addr );
-extern int shmctl( int shmid, int cmd, struct shmid_ds *buf );
-extern int shmget( key_t key, size_t size, int flags );
+ extern void *shmat(int shmid, const void *shmaddr, int shmflg);
+ extern int shmdt(const void *addr);
+ extern int shmctl(int shmid, int cmd, struct shmid_ds * buf);
+ extern int shmget(key_t key, size_t size, int flags);
#ifdef __cplusplus
}
+
#endif
-#endif /* _SYS_SHM_H */
+#endif /* _SYS_SHM_H */
diff --git a/src/backend/port/qnx4/tstrint.c b/src/backend/port/qnx4/tstrint.c
index f91ca7c1379..222051692a8 100644
--- a/src/backend/port/qnx4/tstrint.c
+++ b/src/backend/port/qnx4/tstrint.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/tstrint.c,v 1.1 1999/12/16 16:52:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/tstrint.c,v 1.2 2000/04/12 17:15:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -18,14 +18,16 @@
#include "os.h"
-int main( int argc, char **argv )
+int
+main(int argc, char **argv)
{
- double x;
+ double x;
- if( argc != 2 ) exit( 1 );
+ if (argc != 2)
+ exit(1);
- x = strtod( argv[1], NULL );
- printf( "rint( %f ) = %f\n", x, rint( x ) );
+ x = strtod(argv[1], NULL);
+ printf("rint( %f ) = %f\n", x, rint(x));
- return 0;
+ return 0;
}
diff --git a/src/backend/port/qnx4/tstsem.c b/src/backend/port/qnx4/tstsem.c
index a604d950178..dc697ceaed5 100644
--- a/src/backend/port/qnx4/tstsem.c
+++ b/src/backend/port/qnx4/tstsem.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/tstsem.c,v 1.2 2000/03/14 18:12:06 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/tstsem.c,v 1.3 2000/04/12 17:15:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -26,137 +26,177 @@
#define SEMMAX 16
#define OPSMAX 1
-static int semid;
+static int semid;
-static void sig_handler( int sig_no )
+static void
+sig_handler(int sig_no)
{
- union semun arg;
- int i = semctl( semid, 0, GETNCNT, arg );
- if( i == -1 ) perror( "semctl" );
- else printf( "semval = %d\n", i );
+ union semun arg;
+ int i = semctl(semid, 0, GETNCNT, arg);
+
+ if (i == -1)
+ perror("semctl");
+ else
+ printf("semval = %d\n", i);
}
-int main( int argc, char **argv )
+int
+main(int argc, char **argv)
{
- int c, errflg = 0;
- char s[80];
- key_t key = IPC_PRIVATE;
- int nsems = SEMMAX;
- int semflg = 0;
- int unlink = 0;
- int i;
- struct sembuf sops[OPSMAX];
- u_short array[SEMMAX];
- union semun arg;
-
- optarg = NULL;
- while( !errflg && ( c = getopt( argc, argv, "k:n:cxu" ) ) != -1 ) {
- switch( c ) {
- case 'k': key = atoi( optarg ); break;
- case 'n': nsems = atoi( optarg ); break;
- case 'c': semflg |= IPC_CREAT; break;
- case 'x': semflg |= IPC_EXCL; break;
- case 'u': unlink = 1; break;
- default: errflg++;
- }
- }
- if( errflg ) {
- printf( "usage: tstsem [-k key] [-n nsems] [-cxu]\n" );
- exit( 1 );
- }
-
- if( unlink ) {
- i = shm_unlink( "SysV_Sem_Info" );
- if( i == -1 ) perror( "shm_unlink" );
- exit( i );
- }
-
- semid = semget( key, nsems, semflg );
- if( semid == -1 ) {
- perror( "semget" );
- exit( semid );
- }
-
- /* test signal interrupts */
- signal( SIGTERM, sig_handler );
-
- do {
- printf( "(-)sem_op, (+)sem_op, (G)ETVAL, (S)ETVAL, GET(P)ID, GET(A)LL, SETA(L)L, GET(N)CNT, GET(Z)CNT, e(x)it: " );
- scanf( "%s", s );
- switch( s[0] ) {
- case '-':
- case '+':
- sops[0].sem_num = 0;
- sops[0].sem_op = atoi( s );
- if( sops[0].sem_op == 0 ) sops[0].sem_op = s[0] == '+' ? +1 : -1;
- sops[0].sem_flg = 0;
- if( semop( semid, sops, 1 ) == -1 ) perror( "semop" );
- break;
-
- case 'G':
- case 'g':
- i = semctl( semid, 0, GETVAL, arg );
- if( i == -1 ) perror( "semctl" );
- else printf( "semval = %d\n", i );
- break;
-
- case 'S':
- case 's':
- printf( "semval = " );
- scanf( "%d", &arg.val );
- if( semctl( semid, 0, SETVAL, arg ) == -1 ) perror( "semctl" );
- break;
-
- case 'P':
- case 'p':
- i = semctl( semid, 0, GETPID, arg );
- if( i == -1 ) perror( "semctl" );
- else printf( "PID = %d\n", i );
- break;
-
- case 'A':
- case 'a':
- arg.array = array;
- i = semctl( semid, 0, GETALL, arg );
- if( i == -1 ) perror( "semctl" );
- else {
- for( i = 0; i < nsems; i++ ) {
- printf( "semval[%d] = %hu\n", i, arg.array[i] );
- }
- }
- break;
-
- case 'L':
- case 'l':
- arg.array = array;
- for( i = 0; i < nsems; i++ ) {
- printf( "semval[%d] = ", i );
- scanf( "%hu", &arg.array[i] );
- }
- if( semctl( semid, 0, SETALL, arg ) == -1 )perror( "semctl" );
- break;
-
- case 'N':
- case 'n':
- i = semctl( semid, 0, GETNCNT, arg );
- if( i == -1 ) perror( "semctl" );
- else printf( "semval = %d\n", i );
- break;
-
- case 'Z':
- case 'z':
- i = semctl( semid, 0, GETZCNT, arg );
- if( i == -1 ) perror( "semctl" );
- else printf( "semval = %d\n", i );
- break;
- }
- }
- while( s[0] != 'x' );
-
- if( semctl( semid, 0, IPC_RMID, arg ) == -1 ) {
- perror( "semctl" );
- exit( -1 );
- }
-
- exit( 0 );
+ int c,
+ errflg = 0;
+ char s[80];
+ key_t key = IPC_PRIVATE;
+ int nsems = SEMMAX;
+ int semflg = 0;
+ int unlink = 0;
+ int i;
+ struct sembuf sops[OPSMAX];
+ u_short array[SEMMAX];
+ union semun arg;
+
+ optarg = NULL;
+ while (!errflg && (c = getopt(argc, argv, "k:n:cxu")) != -1)
+ {
+ switch (c)
+ {
+ case 'k':
+ key = atoi(optarg);
+ break;
+ case 'n':
+ nsems = atoi(optarg);
+ break;
+ case 'c':
+ semflg |= IPC_CREAT;
+ break;
+ case 'x':
+ semflg |= IPC_EXCL;
+ break;
+ case 'u':
+ unlink = 1;
+ break;
+ default:
+ errflg++;
+ }
+ }
+ if (errflg)
+ {
+ printf("usage: tstsem [-k key] [-n nsems] [-cxu]\n");
+ exit(1);
+ }
+
+ if (unlink)
+ {
+ i = shm_unlink("SysV_Sem_Info");
+ if (i == -1)
+ perror("shm_unlink");
+ exit(i);
+ }
+
+ semid = semget(key, nsems, semflg);
+ if (semid == -1)
+ {
+ perror("semget");
+ exit(semid);
+ }
+
+ /* test signal interrupts */
+ signal(SIGTERM, sig_handler);
+
+ do
+ {
+ printf("(-)sem_op, (+)sem_op, (G)ETVAL, (S)ETVAL, GET(P)ID, GET(A)LL, SETA(L)L, GET(N)CNT, GET(Z)CNT, e(x)it: ");
+ scanf("%s", s);
+ switch (s[0])
+ {
+ case '-':
+ case '+':
+ sops[0].sem_num = 0;
+ sops[0].sem_op = atoi(s);
+ if (sops[0].sem_op == 0)
+ sops[0].sem_op = s[0] == '+' ? +1 : -1;
+ sops[0].sem_flg = 0;
+ if (semop(semid, sops, 1) == -1)
+ perror("semop");
+ break;
+
+ case 'G':
+ case 'g':
+ i = semctl(semid, 0, GETVAL, arg);
+ if (i == -1)
+ perror("semctl");
+ else
+ printf("semval = %d\n", i);
+ break;
+
+ case 'S':
+ case 's':
+ printf("semval = ");
+ scanf("%d", &arg.val);
+ if (semctl(semid, 0, SETVAL, arg) == -1)
+ perror("semctl");
+ break;
+
+ case 'P':
+ case 'p':
+ i = semctl(semid, 0, GETPID, arg);
+ if (i == -1)
+ perror("semctl");
+ else
+ printf("PID = %d\n", i);
+ break;
+
+ case 'A':
+ case 'a':
+ arg.array = array;
+ i = semctl(semid, 0, GETALL, arg);
+ if (i == -1)
+ perror("semctl");
+ else
+ {
+ for (i = 0; i < nsems; i++)
+ printf("semval[%d] = %hu\n", i, arg.array[i]);
+ }
+ break;
+
+ case 'L':
+ case 'l':
+ arg.array = array;
+ for (i = 0; i < nsems; i++)
+ {
+ printf("semval[%d] = ", i);
+ scanf("%hu", &arg.array[i]);
+ }
+ if (semctl(semid, 0, SETALL, arg) == -1)
+ perror("semctl");
+ break;
+
+ case 'N':
+ case 'n':
+ i = semctl(semid, 0, GETNCNT, arg);
+ if (i == -1)
+ perror("semctl");
+ else
+ printf("semval = %d\n", i);
+ break;
+
+ case 'Z':
+ case 'z':
+ i = semctl(semid, 0, GETZCNT, arg);
+ if (i == -1)
+ perror("semctl");
+ else
+ printf("semval = %d\n", i);
+ break;
+ }
+ }
+ while (s[0] != 'x');
+
+ if (semctl(semid, 0, IPC_RMID, arg) == -1)
+ {
+ perror("semctl");
+ exit(-1);
+ }
+
+ exit(0);
}
diff --git a/src/backend/port/qnx4/tstshm.c b/src/backend/port/qnx4/tstshm.c
index e7421f5f87b..d6e577f2924 100644
--- a/src/backend/port/qnx4/tstshm.c
+++ b/src/backend/port/qnx4/tstshm.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/tstshm.c,v 1.1 1999/12/16 16:52:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/tstshm.c,v 1.2 2000/04/12 17:15:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -18,63 +18,81 @@
#include <sys/shm.h>
-int main( int argc, char **argv )
+int
+main(int argc, char **argv)
{
- int c, errflg = 0;
- char s[80];
- key_t key = 0x1000;
- size_t size = 256;
- int shmid = -1;
- caddr_t addr = NULL;
+ int c,
+ errflg = 0;
+ char s[80];
+ key_t key = 0x1000;
+ size_t size = 256;
+ int shmid = -1;
+ caddr_t addr = NULL;
- optarg = NULL;
- while( !errflg && ( c = getopt( argc, argv, "k:s:" ) ) != -1 ) {
- switch( c ) {
- case 'k': key = atoi( optarg ); break;
- case 's': size = atoi( optarg ); break;
- default: errflg++;
- }
- }
- if( errflg ) {
- printf( "usage: tstshm [-k key] [-s size]\n" );
- exit( 1 );
- }
+ optarg = NULL;
+ while (!errflg && (c = getopt(argc, argv, "k:s:")) != -1)
+ {
+ switch (c)
+ {
+ case 'k':
+ key = atoi(optarg);
+ break;
+ case 's':
+ size = atoi(optarg);
+ break;
+ default:
+ errflg++;
+ }
+ }
+ if (errflg)
+ {
+ printf("usage: tstshm [-k key] [-s size]\n");
+ exit(1);
+ }
- do {
- printf( "shm(g)et, shm(a)t, shm(d)t, shm(c)tl, (w)rite, (r)ead, e(x)it: " );
- scanf( "%s", s );
- switch( s[0] ) {
- case 'g':
- shmid = shmget( key, size, IPC_CREAT | SHM_R | SHM_W );
- if( shmid == -1 ) perror( "shmget" );
- break;
+ do
+ {
+ printf("shm(g)et, shm(a)t, shm(d)t, shm(c)tl, (w)rite, (r)ead, e(x)it: ");
+ scanf("%s", s);
+ switch (s[0])
+ {
+ case 'g':
+ shmid = shmget(key, size, IPC_CREAT | SHM_R | SHM_W);
+ if (shmid == -1)
+ perror("shmget");
+ break;
- case 'a':
- addr = shmat( shmid, NULL, 0 );
- if( addr == ( void * )-1 ) perror( "shmat" );
- break;
+ case 'a':
+ addr = shmat(shmid, NULL, 0);
+ if (addr == (void *) -1)
+ perror("shmat");
+ break;
- case 'd':
- if( shmdt( addr ) == -1 ) perror( "shmdt" );
- else addr = NULL;
- break;
+ case 'd':
+ if (shmdt(addr) == -1)
+ perror("shmdt");
+ else
+ addr = NULL;
+ break;
- case 'c':
- if( shmctl( shmid, IPC_RMID, NULL ) == -1 ) perror( "shmctl" );
- else shmid = -1;
- break;
+ case 'c':
+ if (shmctl(shmid, IPC_RMID, NULL) == -1)
+ perror("shmctl");
+ else
+ shmid = -1;
+ break;
- case 'w':
- printf( "String to write: " );
- scanf( "%s", addr );
- break;
+ case 'w':
+ printf("String to write: ");
+ scanf("%s", addr);
+ break;
- case 'r':
- puts( addr );
- break;
- }
- }
- while( s[0] != 'x' );
+ case 'r':
+ puts(addr);
+ break;
+ }
+ }
+ while (s[0] != 'x');
- return 0;
+ return 0;
}