The C and C++ Include Header Files
/usr/include/x86_64-linux-gnu/sys/ucontext.h
$ cat -n /usr/include/x86_64-linux-gnu/sys/ucontext.h 1 /* Copyright (C) 2001-2024 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library; if not, see 16
. */ 17 18 #ifndef _SYS_UCONTEXT_H 19 #define _SYS_UCONTEXT_H 1 20 21 #include
22 23 #include
24 #include
25 #include
26 27 28 #ifdef __USE_MISC 29 # define __ctx(fld) fld 30 #else 31 # define __ctx(fld) __ ## fld 32 #endif 33 34 #ifdef __x86_64__ 35 36 /* Type for general register. */ 37 __extension__ typedef long long int greg_t; 38 39 /* Number of general registers. */ 40 #define __NGREG 23 41 #ifdef __USE_MISC 42 # define NGREG __NGREG 43 #endif 44 45 /* Container for all general registers. */ 46 typedef greg_t gregset_t[__NGREG]; 47 48 #ifdef __USE_GNU 49 /* Number of each register in the `gregset_t' array. */ 50 enum 51 { 52 REG_R8 = 0, 53 # define REG_R8 REG_R8 54 REG_R9, 55 # define REG_R9 REG_R9 56 REG_R10, 57 # define REG_R10 REG_R10 58 REG_R11, 59 # define REG_R11 REG_R11 60 REG_R12, 61 # define REG_R12 REG_R12 62 REG_R13, 63 # define REG_R13 REG_R13 64 REG_R14, 65 # define REG_R14 REG_R14 66 REG_R15, 67 # define REG_R15 REG_R15 68 REG_RDI, 69 # define REG_RDI REG_RDI 70 REG_RSI, 71 # define REG_RSI REG_RSI 72 REG_RBP, 73 # define REG_RBP REG_RBP 74 REG_RBX, 75 # define REG_RBX REG_RBX 76 REG_RDX, 77 # define REG_RDX REG_RDX 78 REG_RAX, 79 # define REG_RAX REG_RAX 80 REG_RCX, 81 # define REG_RCX REG_RCX 82 REG_RSP, 83 # define REG_RSP REG_RSP 84 REG_RIP, 85 # define REG_RIP REG_RIP 86 REG_EFL, 87 # define REG_EFL REG_EFL 88 REG_CSGSFS, /* Actually short cs, gs, fs, __pad0. */ 89 # define REG_CSGSFS REG_CSGSFS 90 REG_ERR, 91 # define REG_ERR REG_ERR 92 REG_TRAPNO, 93 # define REG_TRAPNO REG_TRAPNO 94 REG_OLDMASK, 95 # define REG_OLDMASK REG_OLDMASK 96 REG_CR2 97 # define REG_CR2 REG_CR2 98 }; 99 #endif 100 101 struct _libc_fpxreg 102 { 103 unsigned short int __ctx(significand)[4]; 104 unsigned short int __ctx(exponent); 105 unsigned short int __glibc_reserved1[3]; 106 }; 107 108 struct _libc_xmmreg 109 { 110 __uint32_t __ctx(element)[4]; 111 }; 112 113 struct _libc_fpstate 114 { 115 /* 64-bit FXSAVE format. */ 116 __uint16_t __ctx(cwd); 117 __uint16_t __ctx(swd); 118 __uint16_t __ctx(ftw); 119 __uint16_t __ctx(fop); 120 __uint64_t __ctx(rip); 121 __uint64_t __ctx(rdp); 122 __uint32_t __ctx(mxcsr); 123 __uint32_t __ctx(mxcr_mask); 124 struct _libc_fpxreg _st[8]; 125 struct _libc_xmmreg _xmm[16]; 126 __uint32_t __glibc_reserved1[24]; 127 }; 128 129 /* Structure to describe FPU registers. */ 130 typedef struct _libc_fpstate *fpregset_t; 131 132 /* Context to describe whole processor state. */ 133 typedef struct 134 { 135 gregset_t __ctx(gregs); 136 /* Note that fpregs is a pointer. */ 137 fpregset_t __ctx(fpregs); 138 __extension__ unsigned long long __reserved1 [8]; 139 } mcontext_t; 140 141 /* Userlevel context. */ 142 typedef struct ucontext_t 143 { 144 unsigned long int __ctx(uc_flags); 145 struct ucontext_t *uc_link; 146 stack_t uc_stack; 147 mcontext_t uc_mcontext; 148 sigset_t uc_sigmask; 149 struct _libc_fpstate __fpregs_mem; 150 __extension__ unsigned long long int __ssp[4]; 151 } ucontext_t; 152 153 #else /* !__x86_64__ */ 154 155 /* Type for general register. */ 156 typedef int greg_t; 157 158 /* Number of general registers. */ 159 #define __NGREG 19 160 #ifdef __USE_MISC 161 # define NGREG __NGREG 162 #endif 163 164 /* Container for all general registers. */ 165 typedef greg_t gregset_t[__NGREG]; 166 167 #ifdef __USE_GNU 168 /* Number of each register is the `gregset_t' array. */ 169 enum 170 { 171 REG_GS = 0, 172 # define REG_GS REG_GS 173 REG_FS, 174 # define REG_FS REG_FS 175 REG_ES, 176 # define REG_ES REG_ES 177 REG_DS, 178 # define REG_DS REG_DS 179 REG_EDI, 180 # define REG_EDI REG_EDI 181 REG_ESI, 182 # define REG_ESI REG_ESI 183 REG_EBP, 184 # define REG_EBP REG_EBP 185 REG_ESP, 186 # define REG_ESP REG_ESP 187 REG_EBX, 188 # define REG_EBX REG_EBX 189 REG_EDX, 190 # define REG_EDX REG_EDX 191 REG_ECX, 192 # define REG_ECX REG_ECX 193 REG_EAX, 194 # define REG_EAX REG_EAX 195 REG_TRAPNO, 196 # define REG_TRAPNO REG_TRAPNO 197 REG_ERR, 198 # define REG_ERR REG_ERR 199 REG_EIP, 200 # define REG_EIP REG_EIP 201 REG_CS, 202 # define REG_CS REG_CS 203 REG_EFL, 204 # define REG_EFL REG_EFL 205 REG_UESP, 206 # define REG_UESP REG_UESP 207 REG_SS 208 # define REG_SS REG_SS 209 }; 210 #endif 211 212 /* Definitions taken from the kernel headers. */ 213 struct _libc_fpreg 214 { 215 unsigned short int __ctx(significand)[4]; 216 unsigned short int __ctx(exponent); 217 }; 218 219 struct _libc_fpstate 220 { 221 unsigned long int __ctx(cw); 222 unsigned long int __ctx(sw); 223 unsigned long int __ctx(tag); 224 unsigned long int __ctx(ipoff); 225 unsigned long int __ctx(cssel); 226 unsigned long int __ctx(dataoff); 227 unsigned long int __ctx(datasel); 228 struct _libc_fpreg _st[8]; 229 unsigned long int __ctx(status); 230 }; 231 232 /* Structure to describe FPU registers. */ 233 typedef struct _libc_fpstate *fpregset_t; 234 235 /* Context to describe whole processor state. */ 236 typedef struct 237 { 238 gregset_t __ctx(gregs); 239 /* Due to Linux's history we have to use a pointer here. The SysV/i386 240 ABI requires a struct with the values. */ 241 fpregset_t __ctx(fpregs); 242 unsigned long int __ctx(oldmask); 243 unsigned long int __ctx(cr2); 244 } mcontext_t; 245 246 /* Userlevel context. */ 247 typedef struct ucontext_t 248 { 249 unsigned long int __ctx(uc_flags); 250 struct ucontext_t *uc_link; 251 stack_t uc_stack; 252 mcontext_t uc_mcontext; 253 sigset_t uc_sigmask; 254 struct _libc_fpstate __fpregs_mem; 255 unsigned long int __ssp[4]; 256 } ucontext_t; 257 258 #endif /* !__x86_64__ */ 259 260 #undef __ctx 261 262 #endif /* sys/ucontext.h */
Contact us
|
About us
|
Term of use
|
Copyright © 2000-2024 MyWebUniversity.com ™