Viewing file:      ucontext.h (3.07 KB)      -rw-r--r-- Select action/file-type:    (+) |   (+) |   (+) | Code (+) | Session (+) |   (+) | SDB (+) |   (+) |   (+) |   (+) |   (+) |   (+) |
 
/* Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.    This file is part of the GNU C Library.
     The GNU C Library is free software; you can redistribute it and/or    modify it under the terms of the GNU Lesser General Public    License as published by the Free Software Foundation; either    version 2.1 of the License, or (at your option) any later version.
     The GNU C Library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Lesser General Public License for more details.
     You should have received a copy of the GNU Lesser General Public    License along with the GNU C Library; if not, write to the Free    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA    02111-1307 USA.  */
  #ifndef _SYS_UCONTEXT_H #define _SYS_UCONTEXT_H    1
  #include <features.h> #include <signal.h>
  /* We need the signal context definitions even if they are not used    included in <signal.h>.  */ #include <bits/sigcontext.h>
 
  /* Type for general register.  */ typedef int greg_t;
  /* Number of general registers.  */ #define NGREG    19
  /* Container for all general registers.  */ typedef greg_t gregset_t[NGREG];
  #ifdef __USE_GNU /* Number of each register is the `gregset_t' array.  */ enum {   REG_GS = 0, # define REG_GS        REG_GS   REG_FS, # define REG_FS        REG_FS   REG_ES, # define REG_ES        REG_ES   REG_DS, # define REG_DS        REG_DS   REG_EDI, # define REG_EDI    REG_EDI   REG_ESI, # define REG_ESI    REG_ESI   REG_EBP, # define REG_EBP    REG_EBP   REG_ESP, # define REG_ESP    REG_ESP   REG_EBX, # define REG_EBX    REG_EBX   REG_EDX, # define REG_EDX    REG_EDX   REG_ECX, # define REG_ECX    REG_ECX   REG_EAX, # define REG_EAX    REG_EAX   REG_TRAPNO, # define REG_TRAPNO    REG_TRAPNO   REG_ERR, # define REG_ERR    REG_ERR   REG_EIP, # define REG_EIP    REG_EIP   REG_CS, # define REG_CS        REG_CS   REG_EFL, # define REG_EFL    REG_EFL   REG_UESP, # define REG_UESP    REG_UESP   REG_SS # define REG_SS    REG_SS }; #endif
  /* Definitions taken from the kernel headers.  */ struct _libc_fpreg {   unsigned short int significand[4];   unsigned short int exponent; };
  struct _libc_fpstate {   unsigned long int cw;   unsigned long int sw;   unsigned long int tag;   unsigned long int ipoff;   unsigned long int cssel;   unsigned long int dataoff;   unsigned long int datasel;   struct _libc_fpreg _st[8];   unsigned long int status; };
  /* Structure to describe FPU registers.  */ typedef struct _libc_fpstate *fpregset_t;
  /* Context to describe whole processor state.  */ typedef struct   {     gregset_t gregs;     /* Due to Linux's history we have to use a pointer here.  The SysV/i386        ABI requires a struct with the values.  */     fpregset_t fpregs;     unsigned long int oldmask;     unsigned long int cr2;   } mcontext_t;
  /* Userlevel context.  */ typedef struct ucontext   {     unsigned long int uc_flags;     struct ucontext *uc_link;     stack_t uc_stack;     mcontext_t uc_mcontext;     __sigset_t uc_sigmask;     struct _libc_fpstate __fpregs_mem;   } ucontext_t;
  #endif /* sys/ucontext.h */ 
  |