[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Minios-devel] [UNIKRAFT PATCH 2/4] lib/ukcontext: Import ucontext.h from musl



Copied from the official musl git mirror (arch/x86_64/bits/signal.h)
git://git.musl-libc.org/musl, commit c99317d3.

Signed-off by: Charalampos Mainas <charalampos.mainas@xxxxxxxxx>
---
 lib/ukucontext/include/ucontext.h | 80 +++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)
 create mode 100644 lib/ukucontext/include/ucontext.h

diff --git a/lib/ukucontext/include/ucontext.h 
b/lib/ukucontext/include/ucontext.h
new file mode 100644
index 00000000..eb83ce24
--- /dev/null
+++ b/lib/ukucontext/include/ucontext.h
@@ -0,0 +1,80 @@
+/* Taken from musl header files (ucontext.h and arch/x86_64/bits/signal.h) */
+
+#ifdef _GNU_SOURCE
+#define REG_R8          0
+#define REG_R9          1
+#define REG_R10         2
+#define REG_R11         3
+#define REG_R12         4
+#define REG_R13         5
+#define REG_R14         6
+#define REG_R15         7
+#define REG_RDI         8
+#define REG_RSI         9
+#define REG_RBP         10
+#define REG_RBX         11
+#define REG_RDX         12
+#define REG_RAX         13
+#define REG_RCX         14
+#define REG_RSP         15
+#define REG_RIP         16
+#define REG_EFL         17
+#define REG_CSGSFS      18
+#define REG_ERR         19
+#define REG_TRAPNO      20
+#define REG_OLDMASK     21
+#define REG_CR2         22
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef long long greg_t, gregset_t[23];
+typedef struct _fpstate {
+       unsigned short cwd, swd, ftw, fop;
+       unsigned long long rip, rdp;
+       unsigned mxcsr, mxcr_mask;
+       struct {
+               unsigned short significand[4], exponent, padding[3];
+       } _st[8];
+       struct {
+               unsigned element[4];
+       } _xmm[16];
+       unsigned padding[24];
+} *fpregset_t;
+struct sigcontext {
+       unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
+       unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
+       unsigned short cs, gs, fs, __pad0;
+       unsigned long err, trapno, oldmask, cr2;
+       struct _fpstate *fpstate;
+       unsigned long __reserved1[8];
+};
+typedef struct {
+       gregset_t gregs;
+       fpregset_t fpregs;
+       unsigned long long __reserved1[8];
+} mcontext_t;
+#else
+typedef struct {
+       unsigned long __space[32];
+} mcontext_t;
+#endif
+
+struct sigaltstack {
+       void *ss_sp;
+       int ss_flags;
+       size_t ss_size;
+};
+
+typedef struct __ucontext {
+       unsigned long uc_flags;
+       struct __ucontext *uc_link;
+       stack_t uc_stack;
+       mcontext_t uc_mcontext;
+       sigset_t uc_sigmask;
+       unsigned long __fpregs_mem[64];
+} ucontext_t;
+
+int  getcontext(ucontext_t *);
+int  setcontext(const ucontext_t *);
+void makecontext(ucontext_t *, void (*__func) (void), int, ...);
+int  swapcontext(ucontext_t *, const ucontext_t *);
-- 
2.17.1


_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.