函数逻辑报告 |
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 插件可实现:逻辑报告 代码生成和批量转换代码 |