aboutsummaryrefslogtreecommitdiff
path: root/src/include/port
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/port')
-rw-r--r--src/include/port/darwin.h7
-rw-r--r--src/include/port/darwin/sem.h75
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 */