- 论坛徽章:
- 0
|
补丁里面有这么一段代码,不是很懂,帮忙解释,这段代码功能是做什么的?能详细点更好
谢谢,大家
case PROC_PID_MEM_PHYS_ADDR:
+ if ( copy_from_user (&addr, (void *) arg, sizeof addr) )
+ {
+ return -EFAULT;
+ break;
+ }
+ read_lock (&tasklist_lock);
+ tsk = get_task (inode->i_ino >> 16);
+ if (!tsk)
+ {
+ read_unlock (&tasklist_lock);
+ return -ESRCH;
+ }
+ pte = pte_offset (pmd_offset (pgd_offset (tsk->mm, addr), addr), addr);
+ if ( !pte_present (*pte) )
+ {
+ read_unlock (&tasklist_lock);
+ return -EINVAL;
+ break;
+ }
+ addr = __pa (pte_page (*pte)) + (addr & (PAGE_SIZE-1));
+ read_unlock (&tasklist_lock);
+ return copy_to_user ( (void *) arg, &addr, sizeof addr ) ? -EFAULT : 0;
+ break |
|