- 论坛徽章:
- 0
|
+ case PROC_PID_MEM_ENABLE_COLOURING:
+ case PROC_PID_MEM_DEBUG_COLOURING:
+ if ( copy_from_user (&int_val, (void *) arg, sizeof int_val) )/*从用户空间arg拷贝数据到内核空间int_val,长度为sizeof int_val*/
+ return -EFAULT;
+ int_val = int_val ? 1 : 0;/*不明白这个条件判断是啥意思,怎么理解????????????函数copy_from_user()返回值是什么?赋给变量int_val吗?*/
+ /* Need to be careful: unlock the tasklist in every return path */
+ read_lock (&tasklist_lock);
+ tsk = get_task (inode->i_ino >> 16);
+ if (!tsk)
+ {
+ read_unlock (&tasklist_lock);
+ return -ESRCH;
+ }
+ switch (cmd)/*case里面嵌套了一个switch结构*/
+ {
+ case PROC_PID_MEM_ENABLE_COLOURING:
+ tsk->page_colouring.enable = int_val; /*好像给进程task结构体中一变量赋值*/
+ break;
+ case PROC_PID_MEM_DEBUG_COLOURING:
+ tsk->page_colouring.debug = int_val; /*/*好像给进程task结构体中一变量赋值*/
*/
+ break;
+ }
+ read_unlock (&tasklist_lock);
+ break;
+ default:
+ return -ENOIOCTLCMD;
+ break;
大家帮忙看下,解释下这段代码功能,谢谢了 |
|