函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\unwind_orc.c Create Date:2022-07-27 09:50:25
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:__unwind_start

函数原型:void __unwind_start(struct unwind_state *state, struct task_struct *task, struct pt_regs *regs, unsigned long *first_frame)

返回类型:void

参数:

类型参数名称
struct unwind_state *state
struct task_struct *task
struct pt_regs *regs
unsigned long *first_frame
585  memset(state, 0, state的长度)
586  task等于task
593  如果task_on_another_cpu(task)则转到:done
596  如果regs
597  如果ser_mode(regs) determines whether a register set came from user* mode则转到:done
600  ip等于 Return frame for iretq
601  sp等于sp
602  bp等于bp
603  regs等于regs
604  full_regs = true
605  signal = true
607  否则如果task恒等于当前进程
608  asm volatile
614  否则
615  frame等于sp
617  sp等于sp
618  bp等于Use READ_ONCE_NOCHECK() instead of READ_ONCE() if you need* to hide memory access from KASAN.(These two fields must be together. They form a stack frame header,* needed by get_frame_pointer().)
619  ip等于Use READ_ONCE_NOCHECK() instead of READ_ONCE() if you need* to hide memory access from KASAN.(ret_addr)
622  如果get_stack_info((unsignedlong * )sp, task, & stack_info, & stack_mask)则
630  next_page等于 align the pointer to the (next) page boundary ((unsignedlong)sp)
631  如果get_stack_info(next_page, task, & stack_info, & stack_mask)则返回
643  如果regs
644  unwind_next_frame(state)
645  返回
649  当非unwind_done(state)且非on_stack( & stack_info, first_frame, sizeof(long))或sp小于等于first_frame的值循环
652  unwind_next_frame(state)
654  返回
656  done :
657  type等于STACK_TYPE_UNKNOWN
658  返回