|
[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 |