diff options
Diffstat (limited to 'src/include/port')
-rw-r--r-- | src/include/port/darwin.h | 7 | ||||
-rw-r--r-- | src/include/port/darwin/sem.h | 75 |
2 files changed, 81 insertions, 1 deletions
diff --git a/src/include/port/darwin.h b/src/include/port/darwin.h index 597b998a017..5d5072aa550 100644 --- a/src/include/port/darwin.h +++ b/src/include/port/darwin.h @@ -1,5 +1,10 @@ +#define __darwin__ 1 + +#if defined(__ppc__) #define HAS_TEST_AND_SET -#if defined(__powerpc__) +#endif + +#if defined(__ppc__) typedef unsigned int slock_t; #else typedef unsigned char slock_t; diff --git a/src/include/port/darwin/sem.h b/src/include/port/darwin/sem.h new file mode 100644 index 00000000000..9e3e28d646a --- /dev/null +++ b/src/include/port/darwin/sem.h @@ -0,0 +1,75 @@ +/*------------------------------------------------------------------------- + * + * sem.h + * System V Semaphore Emulation + * + * Copyright (c) 1999, repas AEG Automation GmbH + * + * + * IDENTIFICATION + * $Header: /cvsroot/pgsql/src/include/port/darwin/Attic/sem.h,v 1.1 2000/12/11 00:49:53 tgl Exp $ + * + *------------------------------------------------------------------------- + */ + +#ifndef _SYS_SEM_H +#define _SYS_SEM_H + +/* #define DEBUG_IPC here if you want to see the shim in action */ + +#include <sys/ipc.h> + +#ifdef __cplusplus +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 */ + +#ifndef ushort_t +#define ushort_t unsigned int +#endif + +/* + * 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 */ + }; + +/* + * User semaphore template for semop system calls. + */ + + 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); + +#ifdef __cplusplus +} + +#endif + +#endif /* _SYS_SEM_H */ |