@Aklis
2016-10-24T11:42:41.000000Z
字数 1083
阅读 555
未分类
陈品维 14051409
SYSCALL_DEFINE0(mycall){printk("cpw is Here!\n");return 0;}SYSCALL_DEFINE3(mysetnice, int, pid, int, flag, int, nicevalue){// set_one_prio// set_user_nicestruct task_struct *g, *p;struct user_struct *user;const struct cred *cred = current_cred();long niceval, retval = -ESRCH;struct pid *pgrp;kuid_t uid;// setint error = -EINVAL;niceval = (long)nicevalue;// hookint which = PRIO_PROCESS;int who = pid;printk("Aklis's SysCall!\n");if (which > PRIO_USER || which < PRIO_PROCESS)return -EINVAL;error = -ESRCH;if (flag == 1) {if (niceval < MIN_NICE)niceval = MIN_NICE;if (niceval > MAX_NICE)niceval = MAX_NICE;}rcu_read_lock(); // 上锁read_lock(&tasklist_lock); // 上锁if (flag == 1) {switch (which) {case PRIO_PROCESS:if (who)p = find_task_by_vpid(who);elsep = current;if (p)error = set_one_prio(p, niceval, error);break;}read_unlock(&tasklist_lock); // 解锁rcu_read_unlock();return error;}else if (flag == 0){printk("Aklis want to get the nice!\n");switch (which) {case PRIO_PROCESS:if (who)p = find_task_by_vpid(who);elsep = current;if (p) {niceval = (task_nice(p));if (niceval >= MIN_NICE)retval = niceval;}break;}}read_unlock(&tasklist_lock); // 解锁rcu_read_unlock();return retval;}