/* * To use the stack unwinder it has to be initialized with unwind_start. * There four combinations for task and regs: * 1) task==NULL, regs==NULL: the unwind starts for the task that is currently * running, sp/ip picked up from the CPU registers * 2) task==NULL, regs!=NULL: the unwind starts from the sp/ip found in * the struct pt_regs of an interrupt frame for the current task * 3) task!=NULL, regs==NULL: the unwind starts for an inactive task with * the sp picked up from task->thread.ksp and the ip picked up from the * return address stored by __switch_to * 4) task!=NULL, regs!=NULL: the sp/ip are picked up from the interrupt * frame 'regs' of a inactive task * If 'first_frame' is not zero unwind_start skips unwind frames until it * reaches the specified stack pointer. * The end of the unwinding is indicated with unwind_done, this can be true * right after unwind_start, e.g. with first_frame!=0 that can not be found. * unwind_next_frame skips to the next frame. * Once the unwind is completed unwind_error() can be used to check if there * has been a situation where the unwinder could not correctly understand * the tasks call chain.
*/
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.