]> Zhao Yanbai Git Server - minix.git/commitdiff
sched: simplify 65/3065/1
authorDavid van Moolenbroek <david@minix3.org>
Mon, 24 Aug 2015 07:20:26 +0000 (09:20 +0200)
committerDavid van Moolenbroek <david@minix3.org>
Mon, 31 Aug 2015 12:55:30 +0000 (12:55 +0000)
- do not use timers when there is only ever one timer;
- do not include kernel header files for no reason;
- do not reply to notifications ever.

Change-Id: I5817e22c1b46c4e30e5135069df318af0b4f87fd

minix/servers/sched/Makefile
minix/servers/sched/main.c
minix/servers/sched/proto.h
minix/servers/sched/sched.h
minix/servers/sched/schedule.c
minix/servers/sched/utility.c

index 4202ecd9a9e2e15d3b6b3f5f54b5c6a3b5ff5974..067e9fedb5e89a8be0c3b7f0f9fb984f9849af8c 100644 (file)
@@ -2,11 +2,7 @@
 PROG=  sched
 SRCS=  main.c schedule.c utility.c
 
-DPADD+=        ${LIBSYS} ${LIBTIMERS}
-LDADD+=        -lsys -ltimers
-
-CPPFLAGS.main.c+=      -I${NETBSDSRCDIR}/minix
-CPPFLAGS.schedule.c+=  -I${NETBSDSRCDIR}/minix
-CPPFLAGS.utility.c+=   -I${NETBSDSRCDIR}/minix
+DPADD+=        ${LIBSYS}
+LDADD+=        -lsys
 
 .include <minix.service.mk>
index 8e0a990b5899501929a3f9316bd0268c8b3cc679..1b87bb4b9d653e5c3c06528a281e986d12ea5802 100644 (file)
@@ -49,14 +49,14 @@ int main(void)
                /* Check for system notifications first. Special cases. */
                if (is_ipc_notify(ipc_status)) {
                        switch(who_e) {
-                               case CLOCK:
-                                       expire_timers(m_in.m_notify.timestamp);
-                                       continue;       /* don't reply */
-                               default :
-                                       result = ENOSYS;
+                       case CLOCK:
+                               balance_queues();
+                               break;
+                       default :
+                               break;
                        }
 
-                       goto sendreply;
+                       continue; /* Don't reply. */
                }
 
                switch(call_nr) {
@@ -91,7 +91,6 @@ int main(void)
                        result = no_sys(who_e, call_nr);
                }
 
-sendreply:
                /* Send reply. */
                if (result != SUSPEND) {
                        m_in.m_type = result;           /* build reply message */
index a4262e2474feaf39b2cbb7aa16cc223fa241f9c0..640550d90336412d20463d2eb6ac593ebfc521b5 100644 (file)
@@ -1,7 +1,6 @@
 /* Function prototypes. */
 
 struct schedproc;
-#include <minix/timers.h>
 
 /* main.c */
 int main(void);
@@ -13,6 +12,7 @@ int do_start_scheduling(message *m_ptr);
 int do_stop_scheduling(message *m_ptr);
 int do_nice(message *m_ptr);
 void init_scheduling(void);
+void balance_queues(void);
 
 /* utility.c */
 int no_sys(int who_e, int call_nr);
index c1bd76d1f15a82e25557a5ecd80cc0f75f43248d..6d8190027189f1d3191afcbd0059d3a60be50130 100644 (file)
@@ -10,7 +10,6 @@
 
 #include <minix/syslib.h>
 #include <minix/sysutil.h>
-#include <minix/timers.h>
 
 #include <errno.h>
 
index 6fac2fb82f3b33df04ce1c682430af3c3878b614..9d1c503a2cd218d8ba162d33cca06032235187bd 100644 (file)
 #include <assert.h>
 #include <minix/com.h>
 #include <machine/archtypes.h>
-#include "kernel/proc.h" /* for queue constants */
 
-static minix_timer_t sched_timer;
 static unsigned balance_timeout;
 
 #define BALANCE_TIMEOUT        5 /* how often to balance queues in seconds */
 
 static int schedule_process(struct schedproc * rmp, unsigned flags);
-static void balance_queues(minix_timer_t *tp);
 
 #define SCHEDULE_CHANGE_PRIO   0x1
 #define SCHEDULE_CHANGE_QUANTUM        0x2
@@ -330,29 +327,31 @@ static int schedule_process(struct schedproc * rmp, unsigned flags)
 
 
 /*===========================================================================*
- *                             start_scheduling                             *
+ *                             init_scheduling                              *
  *===========================================================================*/
-
 void init_scheduling(void)
 {
+       int r;
+
        balance_timeout = BALANCE_TIMEOUT * sys_hz();
-       init_timer(&sched_timer);
-       set_timer(&sched_timer, balance_timeout, balance_queues, 0);
+
+       if ((r = sys_setalarm(balance_timeout, 0)) != OK)
+               panic("sys_setalarm failed: %d", r);
 }
 
 /*===========================================================================*
  *                             balance_queues                               *
  *===========================================================================*/
 
-/* This function in called every 100 ticks to rebalance the queues. The current
+/* This function in called every N ticks to rebalance the queues. The current
  * scheduler bumps processes down one priority when ever they run out of
  * quantum. This function will find all proccesses that have been bumped down,
  * and pulls them back up. This default policy will soon be changed.
  */
-static void balance_queues(minix_timer_t *tp)
+void balance_queues(void)
 {
        struct schedproc *rmp;
-       int proc_nr;
+       int r, proc_nr;
 
        for (proc_nr=0, rmp=schedproc; proc_nr < NR_PROCS; proc_nr++, rmp++) {
                if (rmp->flags & IN_USE) {
@@ -363,5 +362,6 @@ static void balance_queues(minix_timer_t *tp)
                }
        }
 
-       set_timer(&sched_timer, balance_timeout, balance_queues, 0);
+       if ((r = sys_setalarm(balance_timeout, 0)) != OK)
+               panic("sys_setalarm failed: %d", r);
 }
index 3755ad1e18b533c0b29960c9daa54c82de5454a0..f05bf8886136cb2cd860462b2ad2c4c87aa3ecc4 100644 (file)
@@ -10,7 +10,6 @@
 #include "sched.h"
 #include <machine/archtypes.h>
 #include <sys/resource.h> /* for PRIO_MAX & PRIO_MIN */
-#include "kernel/proc.h" /* for queue constants */
 #include "schedproc.h"
 
 /*===========================================================================*