函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\vm86_32.c Create Date:2022-07-27 09:40:53
Last Modify:2022-05-22 10:11:03 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:There are so many possible reasons for this function to return* VM86_INTx, so adding another doesn't bother me. We can expect* userspace programs to be able to handle it. (Getting a problem* in userspace is always better than an Oops anyway.) [KD]

函数原型:static void do_int(struct kernel_vm86_regs *regs, int i, unsigned char __user *ssp, unsigned short sp)

返回类型:void

参数:

类型参数名称
struct kernel_vm86_regs *regs
inti
unsigned char __user *ssp
unsigned shortsp
539  __userintr_ptr
541  vm86等于vm86
543  如果cs恒等于BIOSSEG则转到:cannot_handle
545  如果is_revectored(i, & int_revectored)则转到:cannot_handle
547  如果i恒等于0x21且is_revectored(AH(regs), & int21_revectored)则转到:cannot_handle
549  intr_ptr__user等于i左移2位
550  如果Careful: we have to cast the result to the type of the pointer* for sign reasons(segoffs, intr_ptr)则转到:cannot_handle
552  如果segoffs右移16位恒等于BIOSSEG则转到:cannot_handle
554  pushw(ssp, sp, get_vflags(regs), cannot_handle)
555  pushw(ssp, sp, cs, cannot_handle)
556  pushw(ssp, sp, IP(regs), cannot_handle)
557  cs等于segoffs右移16位
558  SP(regs)减等于6
559  IP(regs)等于segoffs按位与0xffff
560  clear_TF(regs)
561  clear_IF(regs)
562  clear_AC(regs)
563  返回
565  cannot_handle :
566  save_v86_state(regs, 3/int x instruction (ARG = x) + (i << 8))
调用者
名称描述
handle_vm86_trap
handle_vm86_fault