/* 32-bit ucontext as seen from an 64-bit kernel */ struct compat_ucontext {
compat_uint_t uc_flags;
compat_uptr_t uc_link;
compat_stack_t uc_stack; /* struct compat_sigaltstack (12 bytes)*/ /* FIXME: Pad out to get uc_mcontext to start at an 8-byte aligned boundary */
compat_uint_t pad[1]; struct compat_sigcontext uc_mcontext;
compat_sigset_t uc_sigmask; /* mask last for extensibility */
};
/* ELF32 signal handling */
/* In a deft move of uber-hackery, we decide to carry the top half of all *64-bitregistersinanon-portable,non-ABI,hiddenstructure. *Userspacecanreadthehiddenstructureifit*wants*butisnever *guaranteedtobeinthesameplace.Infacttheuc_sigmaskfromthe *ucontext_tstructuremaypushthehiddenregisterfiledownards
*/ struct compat_regfile { /* Upper half of all the 64-bit registers that were truncated
on a copy to a 32-bit userspace */
compat_int_t rf_gr[32];
compat_int_t rf_iasq[2];
compat_int_t rf_iaoq[2];
compat_int_t rf_sar;
};
struct compat_rt_sigframe { unsignedint tramp[2]; /* holds original return address */
compat_siginfo_t info; struct compat_ucontext uc; /* Hidden location of truncated registers, *must* be last. */ struct compat_regfile regs;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.