函数逻辑报告 | 
Source Code:arch\x86\kernel\vm86_32.c | 
Create Date:2022-07-27 09:40:49 | 
| Last Modify:2022-05-22 10:11:03 | Copyright©Brick | 
| 首页 | 函数Tree | 
| 注解内核,赢得工具 | 下载SCCT | English | 
函数名称:do_sys_vm86
函数原型:static long do_sys_vm86(struct vm86plus_struct __user *user_vm86, bool plus)
返回类型:long
参数:
| 类型 | 参数 | 名称 | 
|---|---|---|
| struct vm86plus_struct __user * | user_vm86 | |
| bool | plus | 
| 243 | regs等于current_pt_regs() | 
| 244 | err等于0 | 
| 246 | err等于security_mmap_addr(0) | 
| 247 | 如果err则 | 
| 266 | pr_info_once("Denied a call to vm86(old) from %s[%d] (uid: %d). Set the vm.mmap_min_addr sysctl to 0 and/or adjust LSM mmap_min_addr policy to enable vm86 if you are using a vm86-based DOS emulator.\n", comm, task_pid_nr(当前进程), from_kuid_munged( & init_user_ns, current_uid())) | 
| 269 | 返回:负EPERM | 
| 272 | 如果非vm86则 | 
| 289 | get_user_ex(cx, & ecx) | 
| 290 | get_user_ex(dx, & edx) | 
| 291 | get_user_ex(si, & esi) | 
| 292 | get_user_ex(di, & edi) | 
| 293 | get_user_ex(bp, & ebp) | 
| 294 | get_user_ex(ax, & eax) | 
| 295 | get_user_ex( Return frame for iretq , & eip) | 
| 296 | get_user_ex(seg, & cs) | 
| 298 | get_user_ex(flags, & eflags) | 
| 299 | get_user_ex(sp, & esp) | 
| 300 | get_user_ex(seg, & ss) | 
| 303 | get_user_ex(ds, & ds) | 
| 304 | get_user_ex(fs, & fs) | 
| 305 | get_user_ex(gs, & gs) | 
| 307 | get_user_ex(flags, & flags) | 
| 308 | get_user_ex(screen_bitmap, & screen_bitmap) | 
| 309 | get_user_ex(cpu_type, & cpu_type) | 
| 310 | get_user_catch(err) | 
| 314 | 如果copy_from_user( & int_revectored, & int_revectored, sizeof(structrevectored_struct))则返回:负EFAULT | 
| 318 | 如果copy_from_user( & int21_revectored, & int21_revectored, sizeof(structrevectored_struct))则返回:负EFAULT | 
| 322 | 如果plus则 | 
| 323 | 如果copy_from_user( & vm86plus, & vm86plus, sizeof(structvm86plus_info_struct))则返回:负EFAULT | 
| 326 | for vm86 internal use 等于1 | 
| 327 | 否则memset( & vm86plus, 0, sizeof(structvm86plus_info_struct)) | 
| 342 | flags或等于No VM86 support | 
| 348 | veflags_mask等于0 | 
| 349 | 退出 | 
| 352 | 退出 | 
| 355 | 退出 | 
| 356 | 默认 | 
| 358 | 退出 | 
| 365 | lazy_save_gs(gs) | 
| 368 | 禁止抢占() | 
| 369 | sp0加等于16 | 
| 371 | 如果boot_cpu_has(SYSENTER/SYSEXIT )则 | 
| 372 | sysenter_cs等于0 | 
| 377 | 禁用抢占和中断() | 
| 379 | 如果flags按位与lags masks则mark_screen_rdonly(内存信息) | 
| 382 | memcpy((structkernel_vm86_regs * )regs, & vm86regs, vm86regs的长度) | 
| 384 | 返回:ax | 
| 源代码转换工具 开放的插件接口  | X | 
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码  |