[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

 


Rackspace

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