]> Zhao Yanbai Git Server - minix.git/commitdiff
do_schedule() cleanup
authorTomas Hruby <tom@minix3.org>
Sat, 10 Apr 2010 15:17:09 +0000 (15:17 +0000)
committerTomas Hruby <tom@minix3.org>
Sat, 10 Apr 2010 15:17:09 +0000 (15:17 +0000)
- it is not neccessary to test whether the scheduler is a system
  process as the process already head permissions to make this call.

- it is better to test whether the scheduler has permission to make
  changes to this process before testing whether the values are valid.

kernel/system/do_schedule.c

index f9c37e4db7104e3343a22e45c8e7a549e7549620..7e75bf8da77ff7cf4687c6b099de8fc520b24190 100644 (file)
@@ -12,19 +12,15 @@ PUBLIC int do_schedule(struct proc * caller, message * m_ptr)
 
        p = proc_addr(_ENDPOINT_P(m_ptr->SCHEDULING_ENDPOINT));
 
+       /* Only this process' scheduler can schedule it */
+       if (caller != p->p_scheduler)
+               return(EPERM);
+
        /* Make sure the priority number given is within the allowed range.*/
        if (m_ptr->SCHEDULING_PRIORITY < TASK_Q ||
                m_ptr->SCHEDULING_PRIORITY > NR_SCHED_QUEUES)
                return(EINVAL);
 
-       /* Only system processes can schedule processes */
-       if (! (priv(caller)->s_flags & SYS_PROC))
-               return(EPERM);
-
-       /* Only this process' scheduler can schedule it */
-       if (caller != p->p_scheduler)
-               return(EPERM);
-
        /* In some cases, we might be rescheduling a runnable process. In such
         * a case (i.e. if we are updating the priority) we set the NO_QUANTUM
         * flag before the generic unset to dequeue/enqueue the process