1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-15 03:41:20 +03:00

Ye-old pgindent run. Same 4-space tabs.

This commit is contained in:
Bruce Momjian
2000-04-12 17:17:23 +00:00
parent db4518729d
commit 52f77df613
434 changed files with 24799 additions and 21246 deletions

View File

@@ -1,10 +1,11 @@
/* $Id: isinf.c,v 1.14 1999/12/16 01:25:02 momjian Exp $ */
/* $Id: isinf.c,v 1.15 2000/04/12 17:15:28 momjian Exp $ */
#include <math.h>
#include "config.h"
#if HAVE_FPCLASS /* this is _not_ HAVE_FP_CLASS, and not typo */
#if HAVE_FPCLASS /* this is _not_ HAVE_FP_CLASS, and not
* typo */
#if HAVE_IEEEFP_H
#include <ieeefp.h>
@@ -73,11 +74,11 @@ isinf(double x)
int
isinf(double x)
{
if (x == HUGE_VAL)
return 1;
if (x == -HUGE_VAL)
return -1;
return 0;
if (x == HUGE_VAL)
return 1;
if (x == -HUGE_VAL)
return -1;
return 0;
}
#endif

View File

@@ -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 */

View File

@@ -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));
}

View File

@@ -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;
}

View File

@@ -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 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;
int semctl( int semid, int semnum, int cmd, /*...*/union semun arg )
struct pending_ops
{
int r = 0;
int op[OPMAX]; /* array of pending operations */
int idx; /* index of first free array member */
};
sem_wait( &SemInfo->sem );
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];
};
if( semid < 0 || semid >= SETMAX ||
semnum < 0 || semnum >= SemInfo->set[semid].nsems ) {
sem_post( &SemInfo->sem );
errno = EINVAL;
return -1;
}
static struct sem_info *SemInfo = (struct sem_info *) - 1;
switch( cmd ) {
case GETNCNT:
r = SemInfo->set[semid].semV[semnum].semncnt;
break;
case GETPID:
r = SemInfo->set[semid].semV[semnum].sempid;
break;
int
semctl(int semid, int semnum, int cmd, /* ... */ union semun arg)
{
int r = 0;
case GETVAL:
r = SemInfo->set[semid].semV[semnum].semval;
break;
sem_wait(&SemInfo->sem);
case GETALL:
for( semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++ ) {
arg.array[semnum] = SemInfo->set[semid].semV[semnum].semval;
}
break;
if (semid < 0 || semid >= SETMAX ||
semnum < 0 || semnum >= SemInfo->set[semid].nsems)
{
sem_post(&SemInfo->sem);
errno = EINVAL;
return -1;
}
case SETVAL:
SemInfo->set[semid].semV[semnum].semval = arg.val;
break;
switch (cmd)
{
case GETNCNT:
r = SemInfo->set[semid].semV[semnum].semncnt;
break;
case SETALL:
for( semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++ ) {
SemInfo->set[semid].semV[semnum].semval = arg.array[semnum];
}
break;
case GETPID:
r = SemInfo->set[semid].semV[semnum].sempid;
break;
case GETZCNT:
r = SemInfo->set[semid].semV[semnum].semzcnt;
break;
case GETVAL:
r = SemInfo->set[semid].semV[semnum].semval;
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;
case GETALL:
for (semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++)
arg.array[semnum] = SemInfo->set[semid].semV[semnum].semval;
break;
default:
sem_post( &SemInfo->sem );
errno = EINVAL;
return -1;
}
case SETVAL:
SemInfo->set[semid].semV[semnum].semval = arg.val;
break;
sem_post( &SemInfo->sem );
case SETALL:
for (semnum = 0; semnum < SemInfo->set[semid].nsems; semnum++)
SemInfo->set[semid].semV[semnum].semval = arg.array[semnum];
break;
return r;
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;
int fd,
semid,
semnum /* , semnum1 */ ;
int exist = 0;
if( nsems < 0 || nsems > SEMMAX ) {
errno = EINVAL;
return -1;
}
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 );
}
}
/* 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 );
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;
}
}
}
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;
}
/* 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 );
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;
int i,
r = 0,
r1,
errno1 = 0,
op;
sem_wait( &SemInfo->sem );
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;
}
}
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( );
}
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 );
sem_post(&SemInfo->sem);
errno = errno1;
return r;
errno = errno1;
return r;
}

View File

@@ -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 */

View File

@@ -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;
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;
}
}
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;
}
/* 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;
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 ) );
return i;
memcpy(&ShmInfo[i], info, sizeof(struct shm_info));
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 ) );
return i;
memcpy(info, &ShmInfo[i], sizeof(struct shm_info));
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;
struct shm_info info;
int i;
i = shm_getinfo( shmid, &info );
if( i == -1 ) {
errno = EACCES;
return ( void * )-1;
}
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;
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;
}
if (shm_updinfo(i, &info) == -1)
{
errno = EACCES;
return (void *) -1;
}
return info.addr;
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];
struct shm_info info;
char name[NAME_MAX + 1];
/* IPC_RMID supported only */
if( cmd != IPC_RMID ) {
errno = EINVAL;
return -1;
}
/* IPC_RMID supported only */
if (cmd != IPC_RMID)
{
errno = EINVAL;
return -1;
}
if( shm_getinfo( shmid, &info ) == -1 ) {
errno = EACCES;
return -1;
}
if (shm_getinfo(shmid, &info) == -1)
{
errno = EACCES;
return -1;
}
return shm_unlink( itoa( info.key, name, 16 ) );
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;
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 );
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;
}
/* 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 );
/* The size may only be set once. Ignore errors. */
ltrunc(info.shmid, size, SEEK_SET);
return info.shmid;
return info.shmid;
}

View File

@@ -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 */

View File

@@ -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;
}

View File

@@ -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;
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 );
}
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 );
}
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 );
}
semid = semget(key, nsems, semflg);
if (semid == -1)
{
perror("semget");
exit(semid);
}
/* test signal interrupts */
signal( SIGTERM, sig_handler );
/* 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;
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 '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 '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 '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 '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 '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 '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' );
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 );
}
if (semctl(semid, 0, IPC_RMID, arg) == -1)
{
perror("semctl");
exit(-1);
}
exit( 0 );
exit(0);
}

View File

@@ -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;
}