aboutsummaryrefslogtreecommitdiff
path: root/src/backend/port/qnx4/tstshm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/port/qnx4/tstshm.c')
-rw-r--r--src/backend/port/qnx4/tstshm.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/backend/port/qnx4/tstshm.c b/src/backend/port/qnx4/tstshm.c
new file mode 100644
index 00000000000..e7421f5f87b
--- /dev/null
+++ b/src/backend/port/qnx4/tstshm.c
@@ -0,0 +1,80 @@
+/*-------------------------------------------------------------------------
+ *
+ * tstshm.c
+ * Test of System V Shared Memory Emulation
+ *
+ * Copyright (c) 1999, repas AEG Automation GmbH
+ *
+ *
+ * IDENTIFICATION
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/tstshm.c,v 1.1 1999/12/16 16:52:52 momjian Exp $
+ *
+ *-------------------------------------------------------------------------
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/shm.h>
+
+
+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;
+
+ 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;
+
+ 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 '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 'r':
+ puts( addr );
+ break;
+ }
+ }
+ while( s[0] != 'x' );
+
+ return 0;
+}