调用过程
nice()->sys_nice()
函数原型
int nice(int inc);
SYSCALL_DEFINE1(nice, int, increment)
sys_nice()分析
SYSCALL_DEFINE1(nice, int, increment)
{
long nice, retval;
//下面是对参数的校验 并修正
if (increment < -40)
increment = -40;
if (increment > 40)
increment = 40;
//从此处可以看到nice()的参数是一个增量
nice = TASK_NICE(current) + increment;
//对nice值进行修改 校验
if (nice < -20)
nice = -20;
if (nice > 19)
nice = 19;
//检查资源限制
if (increment < 0 && !can_nice(current, nice))
return -EPERM;
//lsm钩子函数
retval = security_task_setnice(current, nice);
if (retval)
return retval;
//在此处才真正使用nice值设置优先级
set_user_nice(current, nice);
return 0;
}
-----------------------------------------------------------------------------