aboutsummaryrefslogtreecommitdiff
path: root/src/backend/port/qnx4/tstsem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/port/qnx4/tstsem.c')
-rw-r--r--src/backend/port/qnx4/tstsem.c37
1 files changed, 32 insertions, 5 deletions
diff --git a/src/backend/port/qnx4/tstsem.c b/src/backend/port/qnx4/tstsem.c
index fee5d867740..a604d950178 100644
--- a/src/backend/port/qnx4/tstsem.c
+++ b/src/backend/port/qnx4/tstsem.c
@@ -7,12 +7,13 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/tstsem.c,v 1.1 1999/12/16 16:52:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/port/qnx4/Attic/tstsem.c,v 1.2 2000/03/14 18:12:06 momjian Exp $
*
*-------------------------------------------------------------------------
*/
+#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -22,9 +23,18 @@
#include <sys/sem.h>
-#define SEMMAX 1
-#define OPSMAX 1
+#define SEMMAX 16
+#define OPSMAX 1
+static int semid;
+
+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 );
+}
int main( int argc, char **argv )
{
@@ -34,7 +44,7 @@ int main( int argc, char **argv )
int nsems = SEMMAX;
int semflg = 0;
int unlink = 0;
- int semid, i;
+ int i;
struct sembuf sops[OPSMAX];
u_short array[SEMMAX];
union semun arg;
@@ -67,8 +77,11 @@ int main( int argc, char **argv )
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, e(x)it: " );
+ 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 '-':
@@ -122,6 +135,20 @@ int main( int argc, char **argv )
}
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' );