用来调整nice值,强制控制了nice值的范围。


asmlinkage long sys_setn(pid_t mypid, int flag, int nicevalue, int __user *prio){
printk("<0.00> enter syscall setn");
struct task_struct * task = find_task_by_vpid(mypid);
int nicev = task_nice(task);
if(flag){
printk("<0.00> mode setnice");
if(nicevalue < -40) nicevalue = -40; if(nicevalue > 40) nicevalue = 40;
nicev = nicev + nicevalue;
if(nicev < -20) nicev = -20; if(nicev > 19) nicev = 19;
if(nicevalue < 0 && !can_nice(task, nicev)) return -EPERM; long result = security_task_setnice(task, nicev); if (result) return result; set_user_nice(task, nicev); return 0; }else{ printk("<0.00> mode getnice");
return nicev;
}
}

分类:

发表评论

电子邮件地址不会被公开。