diff druntime/import/core/sys/posix/sys/shm.d @ 1458:e0b2d67cfe7c

Added druntime (this should be removed once it works).
author Robert Clipsham <robert@octarineparrot.com>
date Tue, 02 Jun 2009 17:43:06 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/druntime/import/core/sys/posix/sys/shm.d	Tue Jun 02 17:43:06 2009 +0100
@@ -0,0 +1,116 @@
+/**
+ * D header file for POSIX.
+ *
+ * Copyright: Copyright Sean Kelly 2005 - 2009.
+ * License:   <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a>.
+ * Authors:   Sean Kelly
+ * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
+ *
+ *          Copyright Sean Kelly 2005 - 2009.
+ * Distributed under the Boost Software License, Version 1.0.
+ *    (See accompanying file LICENSE_1_0.txt or copy at
+ *          http://www.boost.org/LICENSE_1_0.txt)
+ */
+module core.sys.posix.sys.shm;
+
+private import core.sys.posix.config;
+public import core.sys.posix.sys.types; // for pid_t, time_t, key_t, size_t
+public import core.sys.posix.sys.ipc;
+
+extern (C):
+
+//
+// XOpen (XSI)
+//
+/*
+SHM_RDONLY
+SHM_RND
+
+SHMLBA
+
+shmatt_t
+
+struct shmid_ds
+{
+    ipc_perm    shm_perm;
+    size_t      shm_segsz;
+    pid_t       shm_lpid;
+    pid_t       shm_cpid;
+    shmatt_t    shm_nattch;
+    time_t      shm_atime;
+    time_t      shm_dtime;
+    time_t      shm_ctime;
+}
+
+void* shmat(int, in void*, int);
+int   shmctl(int, int, shmid_ds*);
+int   shmdt(in void*);
+int   shmget(key_t, size_t, int);
+*/
+
+version( linux )
+{
+    enum SHM_RDONLY     = 010000;
+    enum SHM_RND        = 020000;
+
+    int   __getpagesize();
+    alias __getpagesize SHMLBA;
+
+    alias c_ulong   shmatt_t;
+
+    struct shmid_ds
+    {
+        ipc_perm    shm_perm;
+        size_t      shm_segsz;
+        time_t      shm_atime;
+        c_ulong     __unused1;
+        time_t      shm_dtime;
+        c_ulong     __unused2;
+        time_t      shm_ctime;
+        c_ulong     __unused3;
+        pid_t       shm_cpid;
+        pid_t       shm_lpid;
+        shmatt_t    shm_nattch;
+        c_ulong     __unused4;
+        c_ulong     __unused5;
+    }
+
+    void* shmat(int, in void*, int);
+    int   shmctl(int, int, shmid_ds*);
+    int   shmdt(in void*);
+    int   shmget(key_t, size_t, int);
+}
+else version( freebsd )
+{
+    enum SHM_RDONLY     = 010000;
+    enum SHM_RND        = 020000;
+    enum SHMLBA         = 1 << 12; // PAGE_SIZE = (1<<PAGE_SHIFT)
+
+    alias c_ulong   shmatt_t;
+
+    struct shmid_ds
+    {
+        ipc_perm    shm_perm;
+        size_t      shm_segsz;
+        time_t      shm_atime;
+        c_ulong     __unused1;
+        time_t      shm_dtime;
+        c_ulong     __unused2;
+        time_t      shm_ctime;
+        c_ulong     __unused3;
+        pid_t       shm_cpid;
+        pid_t       shm_lpid;
+        shmatt_t    shm_nattch;
+        c_ulong     __unused4;
+        c_ulong     __unused5;
+    }
+
+    void* shmat(int, in void*, int);
+    int   shmctl(int, int, shmid_ds*);
+    int   shmdt(in void*);
+    int   shmget(key_t, size_t, int);
+}
+else version( OSX )
+{
+
+}