diff druntime/import/stdc/posix/ucontext.d @ 760:6f33b427bfd1

Seems like hg ignores .di files, so I missed a bunch of stuff. complete druntime should be there now :)
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 12 Nov 2008 00:19:18 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/druntime/import/stdc/posix/ucontext.d	Wed Nov 12 00:19:18 2008 +0100
@@ -0,0 +1,155 @@
+/**
+ * D header file for POSIX.
+ *
+ * Copyright: Public Domain
+ * License:   Public Domain
+ * Authors:   Sean Kelly
+ * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition
+ */
+module stdc.posix.ucontext;
+
+private import stdc.posix.config;
+public import stdc.posix.signal; // for sigset_t, stack_t
+
+extern (C):
+
+//
+// XOpen (XSI)
+//
+/*
+mcontext_t
+
+struct ucontext_t
+{
+    ucontext_t* uc_link;
+    sigset_t    uc_sigmask;
+    stack_t     uc_stack;
+    mcontext_t  uc_mcontext;
+}
+*/
+
+version( linux )
+{
+
+    version( X86_64 )
+    {
+        private
+        {
+            struct _libc_fpxreg
+            {
+                ushort[4] significand;
+                ushort    exponent;
+                ushort[3] padding;
+            }
+
+            struct _libc_xmmreg
+            {
+                uint[4] element;
+            }
+
+            struct _libc_fpstate
+            {
+                ushort           cwd;
+                ushort           swd;
+                ushort           ftw;
+                ushort           fop;
+                ulong            rip;
+                ulong            rdp;
+                uint             mxcsr;
+                uint             mxcr_mask;
+                _libc_fpxreg[8]  _st;
+                _libc_xmmreg[16] _xmm;
+                uint[24]         padding;
+            }
+
+            const NGREG = 23;
+
+            alias c_long            greg_t;
+            alias greg_t[NGREG]     gregset_t;
+            alias _libc_fpstate*    fpregset_t;
+        }
+
+        struct mcontext_t
+        {
+            gregset_t   gregs;
+            fpregset_t  fpregs;
+            c_ulong[8]  __reserved1;
+        }
+
+        struct ucontext_t
+        {
+            c_ulong         uc_flags;
+            ucontext_t*     uc_link;
+            stack_t         uc_stack;
+            mcontext_t      uc_mcontext;
+            sigset_t        uc_sigmask;
+            _libc_fpstate   __fpregs_mem;
+        }
+    }
+    else version( X86 )
+    {
+        private
+        {
+            struct _libc_fpreg
+            {
+              ushort[4] significand;
+              ushort    exponent;
+            }
+
+            struct _libc_fpstate
+            {
+              c_ulong           cw;
+              c_ulong           sw;
+              c_ulong           tag;
+              c_ulong           ipoff;
+              c_ulong           cssel;
+              c_ulong           dataoff;
+              c_ulong           datasel;
+              _libc_fpreg[8]    _st;
+              c_ulong           status;
+            }
+
+            const NGREG = 19;
+
+            alias int               greg_t;
+            alias greg_t[NGREG]     gregset_t;
+            alias _libc_fpstate*    fpregset_t;
+        }
+
+        struct mcontext_t
+        {
+            gregset_t   gregs;
+            fpregset_t  fpregs;
+            c_ulong     oldmask;
+            c_ulong     cr2;
+        }
+
+        struct ucontext_t
+        {
+            c_ulong         uc_flags;
+            ucontext_t*     uc_link;
+            stack_t         uc_stack;
+            mcontext_t      uc_mcontext;
+            sigset_t        uc_sigmask;
+            _libc_fpstate   __fpregs_mem;
+        }
+    }
+}
+
+//
+// Obsolescent (OB)
+//
+/*
+int  getcontext(ucontext_t*);
+void makecontext(ucontext_t*, void function(), int, ...);
+int  setcontext(in ucontext_t*);
+int  swapcontext(ucontext_t*, in ucontext_t*);
+*/
+
+static if( is( ucontext_t ) )
+{
+    int  getcontext(ucontext_t*);
+    void makecontext(ucontext_t*, void function(), int, ...);
+    int  setcontext(in ucontext_t*);
+    int  swapcontext(ucontext_t*, in ucontext_t*);
+}