//系统调用服务例程代码
SYSCALL_DEFINE5(mysetnice,pid_t,pid,int,flag,int,nicevalue,void __user*,prio,void __user*,nice)
{
struct task_struct *p;
int befnice;
int befprio;
for(p=&init_task;(p=next_task(p))!=&init_task;)
{
if(p->pid==pid) //
{
befnice= task_nice(p);
befprio= task_prio(p);
if(flag == 1)
{
set_user_nice(p, nicevalue);
printk("修改前的nice值:%d\t修改后的nice值:%d\n", befnice, nicevalue);
return 0;
}
else if(flag == 0)
{
copy_to_user(nice, (const void*)&befnice, sizeof(befnice));
copy_to_user(prio, (const void*)&befprio, sizeof(befprio));
printk("该进程的nice值是:%d\n", befnice);
printk("该进程的prio值是:%d\n", befprio);
return 0;
}
printk("你输入的 flag 有误,请重新输入!\n");
return EFAULT;
}
}
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余1页未读,立即下载