[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 2/4] lib/ukcontext: Import ucontext.h from musl
Hi Charalampos, Please see my comments inline. On 8/22/19 7:06 PM, Charalampos Mainas wrote: > 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> s/Signed-off by/Signed-off-by/g > --- > 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) */ I think we should add musl's license (please check for file under musl-imported/ subdirectory in newlib glue code). And please keep the split into 2 headers, ucontext.h and signal.h, because we want to support other architectures as well. > + > +#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 *); > _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |