1/**************************************************************************** 2 **************************************************************************** 3 *** 4 *** This header was automatically generated from a Linux kernel header 5 *** of the same name, to make information necessary for userspace to 6 *** call into the kernel available to libc. It contains only constants, 7 *** structures, and macros generated from the original header, and thus, 8 *** contains no copyrightable information. 9 *** 10 *** To edit the content of this header, modify the corresponding 11 *** source file (e.g. under external/kernel-headers/original/) then 12 *** run bionic/libc/kernel/tools/update_all.py 13 *** 14 *** Any manual change here will be lost the next time this script will 15 *** be run. You've been warned! 16 *** 17 **************************************************************************** 18 ****************************************************************************/ 19#ifndef __LOONGARCH_UAPI_ASM_UCONTEXT_H 20#define __LOONGARCH_UAPI_ASM_UCONTEXT_H 21 22/** 23 * struct ucontext - user context structure 24 * @uc_flags: 25 * @uc_link: 26 * @uc_stack: 27 * @uc_mcontext: holds basic processor state 28 * @uc_sigmask: 29 * @uc_extcontext: holds extended processor state 30 */ 31struct ucontext { 32 unsigned long uc_flags; 33 struct ucontext *uc_link; 34 stack_t uc_stack; 35 sigset_t uc_sigmask; 36 /* There's some padding here to allow sigset_t to be expanded in the 37 * future. Though this is unlikely, other architectures put uc_sigmask 38 * at the end of this structure and explicitly state it can be 39 * expanded, so we didn't want to box ourselves in here. */ 40 __u8 __unused[1024 / 8 - sizeof(sigset_t)]; 41 /* We can't put uc_sigmask at the end of this structure because we need 42 * to be able to expand sigcontext in the future. For example, the 43 * vector ISA extension will almost certainly add ISA state. We want 44 * to ensure all user-visible ISA state can be saved and restored via a 45 * ucontext, so we're putting this at the end in order to allow for 46 * infinite extensibility. Since we know this will be extended and we 47 * assume sigset_t won't be extended an extreme amount, we're 48 * prioritizing this. */ 49 struct sigcontext uc_mcontext; 50}; 51 52#endif /* __LOONGARCH_UAPI_ASM_UCONTEXT_H */ 53