]> Zhao Yanbai Git Server - minix.git/commitdiff
move timers code to libsys
authorDavid van Moolenbroek <david@minix3.org>
Fri, 9 Jul 2010 12:58:18 +0000 (12:58 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Fri, 9 Jul 2010 12:58:18 +0000 (12:58 +0000)
34 files changed:
drivers/floppy/floppy.c
drivers/fxp/fxp.c
drivers/orinoco/orinoco.c
drivers/rtl8139/rtl8139.c
drivers/rtl8139/rtl8139.h
drivers/rtl8169/rtl8169.c
drivers/tty/console.c
drivers/tty/keyboard.c
drivers/tty/tty.c
drivers/tty/tty.h
include/Makefile
include/minix/drivers.h
include/minix/timers.h [new file with mode: 0644]
lib/libsys/Makefile
lib/libsys/timers.c [new file with mode: 0644]
servers/inet/inet.c
servers/pm/Makefile
servers/pm/alarm.c
servers/pm/main.c
servers/pm/pm.h
servers/pm/proto.h
servers/pm/timers.c [deleted file]
servers/sched/Makefile
servers/sched/main.c
servers/sched/proto.h
servers/sched/sched.h
servers/sched/schedule.c
servers/sched/timers.c [deleted file]
servers/vfs/Makefile
servers/vfs/fs.h
servers/vfs/main.c
servers/vfs/proto.h
servers/vfs/select.c
servers/vfs/timers.c [deleted file]

index d8384d8e70e6f21469480c185238298417ea78db..2a706e5a1c4ec3b4256efd247e2ccb6783a3b7e8 100644 (file)
@@ -238,12 +238,8 @@ PRIVATE u8_t f_results[MAX_RESULTS];/* the controller can give lots of output */
  * floppy disk drive contains a 'fl_tmr_stop' timer. 
  */
 PRIVATE timer_t f_tmr_timeout;         /* timer for various timeouts */
-PRIVATE timer_t *f_timers;             /* queue of floppy timers */
-PRIVATE clock_t f_next_timeout;        /* the next timeout time */
 PRIVATE u32_t system_hz;               /* system clock frequency */
 FORWARD _PROTOTYPE( void f_expire_tmrs, (struct driver *dp, message *m_ptr) );
-FORWARD _PROTOTYPE( void f_set_timer, (timer_t *tp, clock_t delta,
-                                                tmr_func_t watchdog)   );
 FORWARD _PROTOTYPE( void stop_motor, (timer_t *tp)                     );
 FORWARD _PROTOTYPE( void f_timeout, (timer_t *tp)                      );
 
@@ -348,14 +344,13 @@ PRIVATE int sef_cb_init_fresh(int type, sef_init_info_t *info)
        AC_LOWER16M | AC_ALIGN4K, &floppy_buf_phys)))
        panic("couldn't allocate dma buffer");
 
-  f_next_timeout = TMR_NEVER;
-  tmr_inittimer(&f_tmr_timeout);
+  init_timer(&f_tmr_timeout);
 
   for (fp = &floppy[0]; fp < &floppy[NR_DRIVES]; fp++) {
        fp->fl_curcyl = NO_CYL;
        fp->fl_density = NO_DENS;
        fp->fl_class = ~0;
-       tmr_inittimer(&fp->fl_tmr_stop);
+       init_timer(&fp->fl_tmr_stop);
   }
 
   /* Set IRQ policy, only request notifications, do not automatically 
@@ -394,57 +389,11 @@ PRIVATE void sef_cb_signal_handler(int signo)
  *===========================================================================*/
 PRIVATE void f_expire_tmrs(struct driver *dp, message *m_ptr)
 {
-/* A synchronous alarm message was received. Check if there are any expired 
- * timers. Possibly reschedule the next alarm.  
+/* A synchronous alarm message was received. Call the watchdog function for
+ * each expired timer, if any.
  */
-  clock_t now;                         /* current time */
-  int s;
-
-  /* Get the current time to compare the timers against. */
-  if ((s=getuptime(&now)) != OK)
-       panic("Couldn't get uptime from clock: %d", s);
-
-  /* Scan the timers queue for expired timers. Dispatch the watchdog function
-   * for each expired timers. FLOPPY watchdog functions are f_tmr_timeout() 
-   * and stop_motor(). Possibly a new alarm call must be scheduled.
-   */
-  tmrs_exptimers(&f_timers, now, NULL);
-  if (f_timers == NULL) {
-       f_next_timeout = TMR_NEVER;
-  } else {                                       /* set new sync alarm */
-       f_next_timeout = f_timers->tmr_exp_time;
-       if ((s=sys_setalarm(f_next_timeout, 1)) != OK)
-               panic("Couldn't set synchronous alarm: %d", s);
-  }
-}
 
-/*===========================================================================*
- *                             f_set_timer                                  *
- *===========================================================================*/
-PRIVATE void f_set_timer(tp, delta, watchdog)
-timer_t *tp;                           /* timer to be set */
-clock_t delta;                         /* in how many ticks */
-tmr_func_t watchdog;                   /* watchdog function to be called */
-{
-  clock_t now;                         /* current time */
-  int s;
-
-  /* Get the current time. */
-  if ((s=getuptime(&now)) != OK)
-       panic("Couldn't get uptime from clock: %d", s);
-
-  /* Add the timer to the local timer queue. */
-  tmrs_settimer(&f_timers, tp, now + delta, watchdog, NULL);
-
-  /* Possibly reschedule an alarm call. This happens when the front of the 
-   * timers queue was reinserted at another position, i.e., when a timer was 
-   * reset, or when a new timer was added in front. 
-   */
-  if (f_timers->tmr_exp_time != f_next_timeout) {
-       f_next_timeout = f_timers->tmr_exp_time; 
-       if ((s=sys_setalarm(f_next_timeout, 1)) != OK)
-               panic("Couldn't set synchronous alarm: %d", s);
-  }
+  expire_timers(m_ptr->NOTIFY_TIMESTAMP);
 }
 
 /*===========================================================================*
@@ -492,8 +441,7 @@ PRIVATE char *f_name(void)
 PRIVATE void f_cleanup(void)
 {
   /* Start a timer to turn the motor off in a few seconds. */
-  tmr_arg(&f_fp->fl_tmr_stop)->ta_int = f_drive;
-  f_set_timer(&f_fp->fl_tmr_stop, MOTOR_OFF, stop_motor);
+  set_timer(&f_fp->fl_tmr_stop, MOTOR_OFF, stop_motor, f_drive);
 
   /* Exiting the floppy driver, so forget where we are. */
   f_fp->fl_sector = NO_SECTOR;
@@ -818,7 +766,7 @@ PRIVATE void start_motor(void)
   /* Set an alarm timer to force a timeout if the hardware does not interrupt
    * in time. Expect an interrupt, but check for a timeout.
    */ 
-  f_set_timer(&f_tmr_timeout, f_dp->start_ms * system_hz / 1000, f_timeout);
+  set_timer(&f_tmr_timeout, f_dp->start_ms * system_hz / 1000, f_timeout, 0);
   f_busy = BSY_IO;
   do {
        driver_receive(ANY, &mess, &ipc_status); 
@@ -826,7 +774,7 @@ PRIVATE void start_motor(void)
        if (is_ipc_notify(ipc_status)) {
                switch (_ENDPOINT_P(mess.m_source)) {
                        case CLOCK:
-                               f_expire_tmrs(NULL, NULL);
+                               f_expire_tmrs(NULL, &mess);
                                break;
                        default :
                                f_busy = BSY_IDLE;
@@ -893,7 +841,7 @@ PRIVATE int seek(void)
        /* Set a synchronous alarm to force a timeout if the hardware does
         * not interrupt.
         */ 
-       f_set_timer(&f_tmr_timeout, system_hz/30, f_timeout);
+       set_timer(&f_tmr_timeout, system_hz/30, f_timeout, 0);
        f_busy = BSY_IO;
        do {
                driver_receive(ANY, &mess, &ipc_status); 
@@ -901,7 +849,7 @@ PRIVATE int seek(void)
                if (is_ipc_notify(ipc_status)) {
                        switch (_ENDPOINT_P(mess.m_source)) {
                                case CLOCK:
-                                       f_expire_tmrs(NULL, NULL);
+                                       f_expire_tmrs(NULL, &mess);
                                        break;
                                default :
                                        f_busy = BSY_IDLE;
@@ -1057,7 +1005,7 @@ PRIVATE int fdc_command(
    * Note that the actual check is done by the code that issued the
    * fdc_command() call.
    */ 
-  f_set_timer(&f_tmr_timeout, WAKEUP, f_timeout);
+  set_timer(&f_tmr_timeout, WAKEUP, f_timeout, 0);
 
   f_busy = BSY_IO;
   while (len > 0) {
@@ -1183,7 +1131,7 @@ PRIVATE void f_reset(void)
        if (is_ipc_notify(ipc_status)) {
                switch (_ENDPOINT_P(mess.m_source)) {
                        case CLOCK:
-                               f_expire_tmrs(NULL, NULL);
+                               f_expire_tmrs(NULL, &mess);
                                break;
                        default :
                                f_busy = BSY_IDLE;
@@ -1233,7 +1181,7 @@ PRIVATE int f_intr_wait(void)
        if (is_ipc_notify(ipc_status)) {
                switch (_ENDPOINT_P(mess.m_source)) {
                        case CLOCK:
-                               f_expire_tmrs(NULL, NULL);
+                               f_expire_tmrs(NULL, &mess);
                                break;
                        default :
                                f_busy = BSY_IDLE;
index 02480986b9503f84cc6b0b324a8e93496f99a616..3271c6620e350bae6446985c6d9b75f30fcdf573 100644 (file)
@@ -20,8 +20,6 @@
 
 #include <timers.h>
 
-#define tmra_ut                        timer_t
-#define tmra_inittimer(tp)     tmr_inittimer(tp)
 #define debug                  0
 #define RAND_UPDATE            /**/
 #define printW()               ((void)0)
@@ -61,9 +59,6 @@ PRIVATE struct pcitab pcitab_fxp[]=
 
 typedef int irq_hook_t;
 
-static timer_t *fxp_timers= NULL;
-static clock_t fxp_next_timeout= 0;
-
 /* ignore interrupt for the moment */
 #define interrupt(x)   0
 
@@ -165,7 +160,7 @@ PRIVATE int fxp_instance;
 
 PRIVATE fxp_t *fxp_state;
 
-PRIVATE tmra_ut fxp_watchdog;
+PRIVATE timer_t fxp_watchdog;
 
 PRIVATE u32_t system_hz;
 
@@ -202,9 +197,6 @@ _PROTOTYPE( static void mess_reply, (message *req, message *reply)  );
 _PROTOTYPE( static u16_t eeprom_read, (fxp_t *fp, int reg)             );
 _PROTOTYPE( static void eeprom_addrsize, (fxp_t *fp)                   );
 _PROTOTYPE( static u16_t mii_read, (fxp_t *fp, int reg)                        );
-_PROTOTYPE( static void fxp_set_timer,(timer_t *tp, clock_t delta,
-                                               tmr_func_t watchdog)    );
-_PROTOTYPE( static void fxp_expire_timers,(void)                       );
 _PROTOTYPE( static u8_t do_inb, (port_t port)                          );
 _PROTOTYPE( static u32_t do_inl, (port_t port)                         );
 _PROTOTYPE( static void do_outb, (port_t port, u8_t v)                 );
@@ -266,7 +258,7 @@ int main(int argc, char *argv[])
                                        handle_hw_intr();
                                        break;
                                case CLOCK:
-                                       fxp_expire_timers();
+                                       expire_timers(m.NOTIFY_TIMESTAMP);
                                        break;
                                default:
                                        panic(" illegal notify from: %d", m.m_source);
@@ -382,9 +374,8 @@ message *mp;
                first_time= 0;
                fxp_pci_conf(); /* Configure PCI devices. */
 
-               tmra_inittimer(&fxp_watchdog);
-               tmr_arg(&fxp_watchdog)->ta_int= 0;
-               fxp_set_timer(&fxp_watchdog, system_hz, fxp_watchdog_f);
+               init_timer(&fxp_watchdog);
+               set_timer(&fxp_watchdog, system_hz, fxp_watchdog_f, 0);
        }
 
        fp= fxp_state;
@@ -1771,8 +1762,7 @@ timer_t *tp;
 {
        fxp_t *fp;
 
-       tmr_arg(&fxp_watchdog)->ta_int= 0;
-       fxp_set_timer(&fxp_watchdog, system_hz, fxp_watchdog_f);
+       set_timer(&fxp_watchdog, system_hz, fxp_watchdog_f, 0);
 
        fp= fxp_state;
        if (fp->fxp_mode != FM_ENABLED)
@@ -2260,73 +2250,6 @@ int reg;
        return v & CM_DATA_MASK;
 }
 
-/*===========================================================================*
- *                             fxp_set_timer                                *
- *===========================================================================*/
-PRIVATE void fxp_set_timer(tp, delta, watchdog)
-timer_t *tp;                           /* timer to be set */
-clock_t delta;                         /* in how many ticks */
-tmr_func_t watchdog;                   /* watchdog function to be called */
-{
-       clock_t now;                            /* current time */
-       int r;
-
-       /* Get the current time. */
-       r= getuptime(&now);
-       if (r != OK)
-               panic("unable to get uptime from clock: %d", r);
-
-       /* Add the timer to the local timer queue. */
-       tmrs_settimer(&fxp_timers, tp, now + delta, watchdog, NULL);
-
-       /* Possibly reschedule an alarm call. This happens when a new timer
-        * is added in front. 
-        */
-       if (fxp_next_timeout == 0 || 
-               fxp_timers->tmr_exp_time < fxp_next_timeout)
-       {
-               fxp_next_timeout= fxp_timers->tmr_exp_time; 
-#if VERBOSE
-               printf("fxp_set_timer: calling sys_setalarm for %d (now+%d)\n",
-                       fxp_next_timeout, fxp_next_timeout-now);
-#endif
-               r= sys_setalarm(fxp_next_timeout, 1);
-               if (r != OK)
-                       panic("unable to set synchronous alarm: %d", r);
-       }
-}
-
-/*===========================================================================*
- *                             fxp_expire_tmrs                              *
- *===========================================================================*/
-PRIVATE void fxp_expire_timers()
-{
-/* A synchronous alarm message was received. Check if there are any expired 
- * timers. Possibly reschedule the next alarm.  
- */
-  clock_t now;                         /* current time */
-  int r;
-
-  /* Get the current time to compare the timers against. */
-  r= getuptime(&now);
-  if (r != OK)
-       panic("Unable to get uptime from clock: %d", r);
-
-  /* Scan the timers queue for expired timers. Dispatch the watchdog function
-   * for each expired timers. Possibly a new alarm call must be scheduled.
-   */
-  tmrs_exptimers(&fxp_timers, now, NULL);
-  if (fxp_timers == NULL)
-       fxp_next_timeout= TMR_NEVER;
-  else
-  {                                      /* set new alarm */
-       fxp_next_timeout = fxp_timers->tmr_exp_time;
-       r= sys_setalarm(fxp_next_timeout, 1);
-       if (r != OK)
-               panic("Unable to set synchronous alarm: %d", r);
-  }
-}
-
 static u8_t do_inb(port_t port)
 {
        int r;
index 97409e9432fc50b56a3df2204f144a96d5283c70..43430493bf1ba9628b59d3a2ff5f77a68c002182 100644 (file)
@@ -37,8 +37,6 @@ PRIVATE struct pcitab {
 };
 
 
-static timer_t or_watchdog;
-
 #include       <stdio.h>
 #include       <stdlib.h>
 #include       <minix/com.h>
@@ -437,7 +435,6 @@ static void or_init (message * mp) {
                first_time = 0;
                or_pci_conf (); /* Configure PCI devices. */
        
-               tmr_inittimer(&or_watchdog);
                /* Use a synchronous alarm instead of a watchdog timer. */
                sys_setalarm(system_hz, 0);
        }       
index 3ba0c411f163ea7a12b1af263ae82ce38cbfc591..c7cef8c84f87dbac0e0073d482bb52ec54fe49e3 100644 (file)
@@ -50,8 +50,6 @@ PUBLIC re_t re_state;
 
 static int re_instance;
 
-static tmra_ut rl_watchdog;
-
 static unsigned my_inb(u16_t port) {
        u32_t value;
        int s;
@@ -372,7 +370,6 @@ message *mp;
                first_time= 0;
                rl_pci_conf(); /* Configure PCI devices. */
 
-               tmra_inittimer(&rl_watchdog);
                /* Use a synchronous alarm instead of a watchdog timer. */
                sys_setalarm(system_hz, 0);
        }
index 9ed63d914ce486fa39b179c79fd7809cfcdb0434..cebda5b72092c8604432e1fa8b209b98ade5b7a4 100644 (file)
@@ -453,8 +453,6 @@ d8  R/W     Config5         Configuration register 5
 d9-ff                          reserved
 #endif
 
-#define tmra_ut                        timer_t
-#define tmra_inittimer(tp)     tmr_inittimer(tp)
 #define Proc_number(p)         proc_number(p)
 #define debug                  0
 #define printW()               ((void)0)
index a1ff8108c5494ddab4185e20a8cd097bcb498743..82b86a5c23619688b35612db77113760ecb74bda 100644 (file)
@@ -179,8 +179,6 @@ static re_t re_state;
 
 static int re_instance;
 
-static timer_t rl_watchdog;
-
 static unsigned my_inb(u16_t port)
 {
        u32_t value;
@@ -579,7 +577,6 @@ message *mp;
                first_time = 0;
                rl_pci_conf();  /* Configure PCI devices. */
 
-               tmr_inittimer(&rl_watchdog);
                /* Use a synchronous alarm instead of a watchdog timer. */
                sys_setalarm(system_hz, 0);
        }
index deb920153e24d0edefddfb5e829892fc64fe2432..bbe4b3cf1243e4dca1ff5f3590dd01f05f1ee710 100644 (file)
@@ -771,9 +771,9 @@ PRIVATE void beep()
   unsigned long port_b_val;
   int s;
   
-  /* Fetch current time in advance to prevent beeping delay. */
-  if ((s=getuptime(&now)) != OK)
-       panic("Console couldn't get clock's uptime: %d", s);
+  /* Set timer in advance to prevent beeping delay. */
+  set_timer(&tmr_stop_beep, B_TIME, stop_beep, 0);
+
   if (!beeping) {
        /* Set timer channel 2, square wave, with given frequency. */
         pv_set(char_out[0], TIMER_MODE, 0xB6); 
@@ -785,13 +785,6 @@ PRIVATE void beep()
                        beeping = TRUE;
         }
   }
-  /* Add a timer to the timers list. Possibly reschedule the alarm. */
-  tmrs_settimer(&tty_timers, &tmr_stop_beep, now+B_TIME, stop_beep, NULL);
-  if (tty_timers->tmr_exp_time != tty_next_timeout) {
-       tty_next_timeout = tty_timers->tmr_exp_time;
-       if ((s=sys_setalarm(tty_next_timeout, 1)) != OK)
-               panic("Console couldn't set alarm: %d", s);
-  }
 }
 
 
@@ -898,9 +891,9 @@ clock_t dur;
   if (ival == 0 || ival > 0xffff)
        return; /* Frequency out of range */
 
-  /* Fetch current time in advance to prevent beeping delay. */
-  if ((s=getuptime(&now)) != OK)
-       panic("Console couldn't get clock's uptime: %d", s);
+  /* Set timer in advance to prevent beeping delay. */
+  set_timer(&tmr_stop_beep, dur, stop_beep, 0);
+
   if (!beeping) {
        /* Set timer channel 2, square wave, with given frequency. */
         pv_set(char_out[0], TIMER_MODE, 0xB6); 
@@ -912,13 +905,6 @@ clock_t dur;
                        beeping = TRUE;
         }
   }
-  /* Add a timer to the timers list. Possibly reschedule the alarm. */
-  tmrs_settimer(&tty_timers, &tmr_stop_beep, now+dur, stop_beep, NULL);
-  if (tty_timers->tmr_exp_time != tty_next_timeout) {
-       tty_next_timeout = tty_timers->tmr_exp_time;
-       if ((s=sys_setalarm(tty_next_timeout, 1)) != OK)
-               panic("Console couldn't set alarm: %d", s);
-  }
 }
 
 /*===========================================================================*
index aece6f9f86ed25248beba386064c64901d465493..6938e4a91c7b06b73ed87a74effc3e534c39f8f4 100644 (file)
@@ -706,18 +706,9 @@ PRIVATE void kbd_send()
        kbd_alive= 1;
        if (kbd_watchdog_set)
        {
-               /* Add a timer to the timers list. Possibly reschedule the
-                * alarm.
-                */
-               if ((r= getuptime(&now)) != OK)
-                       panic("Keyboard couldn't get clock's uptime: %d", r);
-               tmrs_settimer(&tty_timers, &tmr_kbd_wd, now+system_hz, kbd_watchdog,
-                       NULL);
-               if (tty_timers->tmr_exp_time != tty_next_timeout) {
-                       tty_next_timeout = tty_timers->tmr_exp_time;
-                       if ((r= sys_setalarm(tty_next_timeout, 1)) != OK)
-                               panic("Keyboard couldn't set alarm: %d", r);
-               }
+               /* Set a watchdog timer for one second. */
+               set_timer(&tmr_kbd_wd, system_hz, kbd_watchdog, 0);
+
                kbd_watchdog_set= 1;
         }
 }
@@ -1320,14 +1311,7 @@ timer_t *tmrp;
        }
        kbd_alive= 0;
 
-       if ((r= getuptime(&now)) != OK)
-               panic("Keyboard couldn't get clock's uptime: %d", r);
-       tmrs_settimer(&tty_timers, &tmr_kbd_wd, now+system_hz, kbd_watchdog,
-               NULL);
-       if (tty_timers->tmr_exp_time != tty_next_timeout) {
-               tty_next_timeout = tty_timers->tmr_exp_time;
-               if ((r= sys_setalarm(tty_next_timeout, 1)) != OK)
-                       panic("Keyboard couldn't set alarm: %d", r);
-       }
+       set_timer(&tmr_kbd_wd, system_hz, kbd_watchdog, 0);
+
        kbd_watchdog_set= 1;
 }
index 9a1ea518e08cef98f1342d4243ccc01db8ea354c..6f3b6d9bbd1f0a08bf62ee3055ae8b5a7b66dfde 100644 (file)
@@ -102,7 +102,6 @@ unsigned long rs_irq_set = 0;
 struct kmessages kmess;
 
 FORWARD _PROTOTYPE( void tty_timed_out, (timer_t *tp)                  );
-FORWARD _PROTOTYPE( void expire_timers, (void)                         );
 FORWARD _PROTOTYPE( void settimer, (tty_t *tty_ptr, int enable)                );
 FORWARD _PROTOTYPE( void do_cancel, (tty_t *tp, message *m_ptr)                );
 FORWARD _PROTOTYPE( void do_ioctl, (tty_t *tp, message *m_ptr, int s)  );
@@ -136,8 +135,6 @@ PRIVATE struct winsize winsize_defaults;    /* = all zeroes */
 /* Global variables for the TTY task (declared extern in tty.h). */
 PUBLIC tty_t tty_table[NR_CONS+NR_RS_LINES+NR_PTYS];
 PUBLIC int ccurrent;                   /* currently active console */
-PUBLIC timer_t *tty_timers;            /* queue of TTY timers */
-PUBLIC clock_t tty_next_timeout;       /* time that the next alarm is due */
 PUBLIC struct machine machine;         /* kernel environment variables */
 PUBLIC u32_t system_hz;
 
@@ -187,7 +184,7 @@ PUBLIC int main(void)
                switch (_ENDPOINT_P(tty_mess.m_source)) {
                        case CLOCK:
                                /* run watchdogs of expired timers */
-                               expire_timers();
+                               expire_timers(tty_mess.NOTIFY_TIMESTAMP);
                                break;
                        case HARDWARE: 
                                /* hardware interrupt notification */
@@ -201,7 +198,7 @@ PUBLIC int main(void)
                                        rs_interrupt(&tty_mess);
 #endif
                                /* run watchdogs of expired timers */
-                               expire_timers();
+                               expire_timers(tty_mess.NOTIFY_TIMESTAMP);
                                break;
                        default:
                                /* do nothing */
@@ -1629,7 +1626,7 @@ PRIVATE void tty_init()
 
        tp->tty_index = s;
 
-       tmr_inittimer(&tp->tty_tmr);
+       init_timer(&tp->tty_tmr);
 
        tp->tty_intail = tp->tty_inhead = tp->tty_inbuf;
        tp->tty_min = 1;
@@ -1667,33 +1664,6 @@ PRIVATE void tty_timed_out(timer_t *tp)
   tty_ptr->tty_events = 1;             
 }
 
-/*===========================================================================*
- *                             expire_timers                                *
- *===========================================================================*/
-PRIVATE void expire_timers(void)
-{
-/* A synchronous alarm message was received. Check if there are any expired 
- * timers. Possibly set the event flag and reschedule another alarm.  
- */
-  clock_t now;                         /* current time */
-  int s;
-
-  /* Get the current time to compare the timers against. */
-  if ((s=getuptime(&now)) != OK)
-       panic("Couldn't get uptime from clock: %d", s);
-
-  /* Scan the queue of timers for expired timers. This dispatch the watchdog
-   * functions of expired timers. Possibly a new alarm call must be scheduled.
-   */
-  tmrs_exptimers(&tty_timers, now, NULL);
-  if (tty_timers == NULL) tty_next_timeout = TMR_NEVER;
-  else {                                         /* set new sync alarm */
-       tty_next_timeout = tty_timers->tmr_exp_time;
-       if ((s=sys_setalarm(tty_next_timeout, 1)) != OK)
-               panic("Couldn't set synchronous alarm: %d", s);
-  }
-}
-
 /*===========================================================================*
  *                             settimer                                     *
  *===========================================================================*/
@@ -1701,32 +1671,16 @@ PRIVATE void settimer(tty_ptr, enable)
 tty_t *tty_ptr;                        /* line to set or unset a timer on */
 int enable;                    /* set timer if true, otherwise unset */
 {
-  clock_t now;                         /* current time */
-  clock_t exp_time;
-  int s;
+  clock_t ticks;
 
-  /* Get the current time to calculate the timeout time. */
-  if ((s=getuptime(&now)) != OK)
-       panic("Couldn't get uptime from clock: %d", s);
   if (enable) {
-       exp_time = now + tty_ptr->tty_termios.c_cc[VTIME] * (system_hz/10);
+       ticks = tty_ptr->tty_termios.c_cc[VTIME] * (system_hz/10);
+
        /* Set a new timer for enabling the TTY events flags. */
-       tmrs_settimer(&tty_timers, &tty_ptr->tty_tmr, 
-               exp_time, tty_timed_out, NULL);  
+       set_timer(&tty_ptr->tty_tmr, ticks, tty_timed_out, 0);
   } else {
        /* Remove the timer from the active and expired lists. */
-       tmrs_clrtimer(&tty_timers, &tty_ptr->tty_tmr, NULL);
-  }
-  
-  /* Now check if a new alarm must be scheduled. This happens when the front
-   * of the timers queue was disabled or reinserted at another position, or
-   * when a new timer was added to the front.
-   */
-  if (tty_timers == NULL) tty_next_timeout = TMR_NEVER;
-  else if (tty_timers->tmr_exp_time != tty_next_timeout) { 
-       tty_next_timeout = tty_timers->tmr_exp_time;
-       if ((s=sys_setalarm(tty_next_timeout, 1)) != OK)
-               panic("Couldn't set synchronous alarm: %d", s);
+       cancel_timer(&tty_ptr->tty_tmr);
   }
 }
 
index c77d03a09c70bb04e3009db0a0b12691e951cddf..ff9329ffad54a974ad93eb7a1228530ae7044e86 100644 (file)
@@ -128,10 +128,6 @@ extern unsigned long rs_irq_set;
 /* Times and timeouts. */
 #define force_timeout()        ((void) (0))
 
-/* Memory allocated in tty.c, so extern here. */
-extern timer_t *tty_timers;            /* queue of TTY timers */
-extern clock_t tty_next_timeout;       /* next TTY timeout */
-
 /* Number of elements and limit of a buffer. */
 #define buflen(buf)    (sizeof(buf) / sizeof((buf)[0]))
 #define bufend(buf)    ((buf) + buflen(buf))
index e453d0c1f88da14bf7dacd90154aa8e1b153e64c..13f1855e255365c2e575186fedc826c642d404d9 100644 (file)
@@ -23,7 +23,7 @@ INCS+=        minix/a.out.h minix/bitmap.h minix/callnr.h minix/cdrom.h \
        minix/portio.h minix/profile.h minix/queryparam.h \
        minix/rs.h minix/safecopies.h minix/sched.h minix/sef.h minix/sound.h \
        minix/sys_config.h minix/sysinfo.h minix/syslib.h \
-       minix/sysutil.h minix/tty.h minix/type.h minix/types.h \
+       minix/sysutil.h minix/timers.h minix/tty.h minix/type.h minix/types.h \
        minix/u64.h minix/vfsif.h minix/vm.h \
        minix/compiler.h minix/compiler-ack.h minix/sha2.h
 INCS+= net/hton.h net/if.h net/ioctl.h net/netlib.h
index b68b447fb56aaf0f1d06eac95395d8dc6ac04bb9..fd2ae6cb6a8b6a2f803a09cd7bccce9892c1be06 100644 (file)
@@ -21,6 +21,7 @@
 #include <minix/devio.h>
 #include <minix/syslib.h>
 #include <minix/sysutil.h>
+#include <minix/timers.h>
 #include <minix/bitmap.h>
 
 #include <machine/interrupt.h> /* IRQ vectors and miscellaneous ports */
diff --git a/include/minix/timers.h b/include/minix/timers.h
new file mode 100644 (file)
index 0000000..edc44e4
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef _MINIX_TIMERS_H
+#define _MINIX_TIMERS_H
+
+/* Timers abstraction for system processes. This would be in minix/sysutil.h
+ * if it weren't for naming conflicts.
+ */
+
+#include <timers.h>
+
+_PROTOTYPE( void init_timer, (timer_t *tp));
+_PROTOTYPE( void set_timer, (timer_t *tp, int ticks, tmr_func_t watchdog,
+       int arg));
+_PROTOTYPE( void cancel_timer, (timer_t *tp));
+_PROTOTYPE( void expire_timers, (clock_t now));
+
+#endif /* _MINIX_TIMERS_H */
index ad76629e867a59dba643a017de7cb7f7b061fa6a..cc8e7773cbb7db6178fcba83a5766b16e4fc0975 100644 (file)
@@ -120,7 +120,8 @@ SRCS=  \
        timing.c \
        profile_extern.c \
        profile.c \
-       vprintf.c
+       vprintf.c \
+       timers.c
 
 CPPFLAGS.sched_start.c+=       -I${MINIXSRCDIR}
 
diff --git a/lib/libsys/timers.c b/lib/libsys/timers.c
new file mode 100644 (file)
index 0000000..726583c
--- /dev/null
@@ -0,0 +1,88 @@
+/* Watchdog timer management. These functions in this file provide a
+ * convenient interface to the timers library that manages a list of
+ * watchdog timers. All details of scheduling an alarm at the CLOCK task
+ * are hidden behind this interface.
+ *
+ * The entry points into this file are:
+ *   init_timer:     initialize a timer structure
+ *   set_timer:      reset and existing or set a new watchdog timer
+ *   cancel_timer:   remove a timer from the list of timers
+ *   expire_timers:  check for expired timers and run watchdog functions
+ *
+ */
+
+#include "syslib.h"
+#include <timers.h>
+
+PRIVATE timer_t *timers = NULL;
+PRIVATE int expiring = 0;
+
+/*===========================================================================*
+ *                              init_timer                                   *
+ *===========================================================================*/
+PUBLIC void init_timer(timer_t *tp)
+{
+        tmr_inittimer(tp);
+}
+
+/*===========================================================================*
+ *                              set_timer                                    *
+ *===========================================================================*/
+PUBLIC void set_timer(timer_t *tp, int ticks, tmr_func_t watchdog, int arg)
+{
+        int r;
+        clock_t now, prev_time = 0, next_time;
+
+        if ((r = getuptime(&now)) != OK)
+                panic("set_timer: couldn't get uptime");
+
+        /* Set timer argument and add timer to the list. */
+        tmr_arg(tp)->ta_int = arg;
+        prev_time = tmrs_settimer(&timers, tp, now+ticks, watchdog, &next_time);
+
+        /* Reschedule our synchronous alarm if necessary. */
+        if (expiring == 0 && (! prev_time || prev_time > next_time)) {
+                if (sys_setalarm(next_time, 1) != OK)
+                        panic("set_timer: couldn't set alarm");
+        }
+}
+
+/*===========================================================================*
+ *                              cancel_timer                                 *
+ *===========================================================================*/
+PUBLIC void cancel_timer(timer_t *tp)
+{
+        clock_t next_time, prev_time;
+        prev_time = tmrs_clrtimer(&timers, tp, &next_time);
+
+        /* If the earliest timer has been removed, we have to set the alarm to
+         * the next timer, or cancel the alarm altogether if the last timer
+         * has been cancelled (next_time will be 0 then).
+         */
+        if (expiring == 0 && (prev_time < next_time || ! next_time)) {
+                if (sys_setalarm(next_time, 1) != OK)
+                        panic("cancel_timer: couldn't set alarm");
+        }
+}
+
+/*===========================================================================*
+ *                              expire_timers                                *
+ *===========================================================================*/
+PUBLIC void expire_timers(clock_t now)
+{
+        clock_t next_time;
+
+        /* Check for expired timers. Use a global variable to indicate that
+         * watchdog functions are called, so that sys_setalarm() isn't called
+         * more often than necessary when set_timer or cancel_timer are called
+         * from these watchdog functions. */
+        expiring = 1;
+        tmrs_exptimers(&timers, now, &next_time);
+        expiring = 0;
+
+        /* Reschedule an alarm if necessary. */
+        if (next_time > 0) {
+                if (sys_setalarm(next_time, 1) != OK)
+                        panic("expire_timers: couldn't set alarm");
+        }
+}
index cf4b5785b7003303be8b1ce8f51ff58b940ed5a7..40dae5e8fce54a700b088675069e7ef35b0aac1b 100644 (file)
@@ -42,7 +42,6 @@ from DL_ETH:
 #include <sys/svrctl.h>
 #include <minix/ds.h>
 #include <minix/endpoint.h>
-#include <minix/drivers.h>
 #include <minix/driver.h>
 
 #include "mq.h"
index ef0f950ac031c32c042b2c5f900a4ad257526427..c1acafd783464914b78458680cb2cec81898b117 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for Process Manager (PM)
 PROG=  pm
-SRCS=  main.c forkexit.c break.c exec.c time.c timers.c alarm.c \
+SRCS=  main.c forkexit.c break.c exec.c time.c alarm.c \
        signal.c utility.c table.c trace.c getset.c misc.c \
        profile.c dma.c mcontext.c schedule.c
 
index 4c29103e4d5d551855c00ffa82ecbfaa0a78bc8f..9bb3a4a734ffd540a63c0894f4881da4141331a7 100644 (file)
@@ -337,10 +337,10 @@ struct mproc *rmp;                /* process that wants the alarm */
 clock_t ticks;                 /* how many ticks delay before the signal */
 {
   if (ticks > 0) {
-       pm_set_timer(&rmp->mp_timer, ticks, cause_sigalrm, rmp->mp_endpoint);
+       set_timer(&rmp->mp_timer, ticks, cause_sigalrm, rmp->mp_endpoint);
        rmp->mp_flags |=  ALARM_ON;
   } else if (rmp->mp_flags & ALARM_ON) {
-       pm_cancel_timer(&rmp->mp_timer);
+       cancel_timer(&rmp->mp_timer);
        rmp->mp_flags &= ~ALARM_ON;
   }
 }
@@ -367,9 +367,10 @@ struct timer *tp;
   if ((rmp->mp_flags & ALARM_ON) == 0) return;
 
   /* If an interval is set, set a new timer; otherwise clear the ALARM_ON flag.
-   * The set_alarm call will be calling pm_set_timer from within this callback
-   * from the pm_expire_timers function. This is safe, but we must not use the
-   * "tp" structure below this point anymore. */
+   * The set_alarm call will be calling set_timer from within this callback
+   * from the expire_timers function. This is safe, but we must not use the
+   * "tp" structure below this point anymore.
+   */
   if (rmp->mp_interval[ITIMER_REAL] > 0)
        set_alarm(rmp, rmp->mp_interval[ITIMER_REAL]);
   else rmp->mp_flags &= ~ALARM_ON;
index 3142c4f8896c6a1d3e2a98bcc6227026c1882bdf..6c7e89fd1d2e522cf3d00f9af6a72f7d3b7dbc78 100644 (file)
@@ -94,7 +94,7 @@ PUBLIC int main()
        if (is_ipc_notify(ipc_status)) {
                switch(who_p) {
                        case CLOCK:
-                               pm_expire_timers(m_in.NOTIFY_TIMESTAMP);
+                               expire_timers(m_in.NOTIFY_TIMESTAMP);
                                result = SUSPEND;       /* don't reply */
                                break;
                        default :
@@ -201,7 +201,7 @@ PRIVATE int sef_cb_init_fresh(int type, sef_init_info_t *info)
 
   /* Initialize process table, including timers. */
   for (rmp=&mproc[0]; rmp<&mproc[NR_PROCS]; rmp++) {
-       tmr_inittimer(&rmp->mp_timer);
+       init_timer(&rmp->mp_timer);
   }
 
   /* Build the set of signals which cause core dumps, and the set of signals
index 0d610454ef4c6b4d6e928f3278e4df920796ae8f..c915aa8ae8d3df5d782293c9385c3e6a7b9c4f6f 100644 (file)
@@ -16,6 +16,7 @@
 #include <unistd.h>
 #include <minix/syslib.h>
 #include <minix/sysutil.h>
+#include <minix/timers.h>
 
 #include <limits.h>
 #include <errno.h>
index 4a216ba84a0e2b742ba8b6e5de80eb7da8e0fb63..76d0ef31833cf6a4710b4015ed8ed58100aa29f0 100644 (file)
@@ -92,12 +92,6 @@ _PROTOTYPE( int do_stime, (void)                                     );
 _PROTOTYPE( int do_time, (void)                                                );
 _PROTOTYPE( int do_times, (void)                                       );
 
-/* timers.c */
-_PROTOTYPE( void pm_set_timer, (timer_t *tp, int delta, 
-       tmr_func_t watchdog, int arg)                                   );
-_PROTOTYPE( void pm_expire_timers, (clock_t now)                       );
-_PROTOTYPE( void pm_cancel_timer, (timer_t *tp)                                );
-
 /* trace.c */
 _PROTOTYPE( int do_trace, (void)                                       );
 _PROTOTYPE( void stop_proc, (struct mproc *rmp, int sig_nr)            );
diff --git a/servers/pm/timers.c b/servers/pm/timers.c
deleted file mode 100644 (file)
index df6d4ad..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/* PM watchdog timer management. These functions in this file provide
- * a convenient interface to the timers library that manages a list of
- * watchdog timers. All details of scheduling an alarm at the CLOCK task 
- * are hidden behind this interface.
- * Only system processes are allowed to set an alarm timer at the kernel. 
- * Therefore, the PM maintains a local list of timers for user processes
- * that requested an alarm signal. 
- * 
- * The entry points into this file are:
- *   pm_set_timer:      reset and existing or set a new watchdog timer
- *   pm_expire_timers:  check for expired timers and run watchdog functions
- *   pm_cancel_timer:   remove a time from the list of timers
- *
- */
-
-#include "pm.h"
-
-#include <timers.h>
-#include <minix/syslib.h>
-#include <minix/com.h>
-
-PRIVATE timer_t *pm_timers = NULL;
-PRIVATE int pm_expiring = 0;
-
-/*===========================================================================*
- *                             pm_set_timer                                 *
- *===========================================================================*/
-PUBLIC void pm_set_timer(timer_t *tp, int ticks, tmr_func_t watchdog, int arg)
-{
-       int r;
-       clock_t now, prev_time = 0, next_time;
-
-       if ((r = getuptime(&now)) != OK)
-               panic("PM couldn't get uptime");
-
-       /* Set timer argument and add timer to the list. */
-       tmr_arg(tp)->ta_int = arg;
-       prev_time = tmrs_settimer(&pm_timers,tp,now+ticks,watchdog,&next_time);
-
-       /* Reschedule our synchronous alarm if necessary. */
-       if (pm_expiring == 0 && (! prev_time || prev_time > next_time)) {
-               if (sys_setalarm(next_time, 1) != OK)
-                       panic("PM set timer couldn't set alarm");
-       }
-
-       return;
-}
-
-/*===========================================================================*
- *                             pm_expire_timers                             *
- *===========================================================================*/
-PUBLIC void pm_expire_timers(clock_t now)
-{
-       clock_t next_time;
-
-       /* Check for expired timers. Use a global variable to indicate that
-        * watchdog functions are called, so that sys_setalarm() isn't called
-        * more often than necessary when pm_set_timer or pm_cancel_timer are
-        * called from these watchdog functions. */
-       pm_expiring = 1;
-       tmrs_exptimers(&pm_timers, now, &next_time);
-       pm_expiring = 0;
-
-       /* Reschedule an alarm if necessary. */
-       if (next_time > 0) {
-               if (sys_setalarm(next_time, 1) != OK)
-                       panic("PM expire timer couldn't set alarm");
-       }
-}
-
-/*===========================================================================*
- *                             pm_cancel_timer                              *
- *===========================================================================*/
-PUBLIC void pm_cancel_timer(timer_t *tp)
-{
-       clock_t next_time, prev_time;
-       prev_time = tmrs_clrtimer(&pm_timers, tp, &next_time);
-
-       /* If the earliest timer has been removed, we have to set the alarm to  
-     * the next timer, or cancel the alarm altogether if the last timer has 
-     * been cancelled (next_time will be 0 then).
-        */
-       if (pm_expiring == 0 && (prev_time < next_time || ! next_time)) {
-               if (sys_setalarm(next_time, 1) != OK)
-                       panic("PM expire timer couldn't set alarm");
-       }
-}
index 777216c35b37296684ce584dba7794029af368f2..da3b08115daf0956519ac4fa70d67f983b696947 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for Scheduler (SCHED)
 PROG=  sched
-SRCS=  main.c schedule.c utility.c timers.c
+SRCS=  main.c schedule.c utility.c
 
 DPADD+=        ${LIBSYS} ${LIBTIMERS}
 LDADD+=        -lsys -ltimers
index 5a51da7b91536eb678846168da94b1b07f2d2857..1b6a12113eb1566a10743994f93df2783bcaa72e 100644 (file)
@@ -45,7 +45,7 @@ PUBLIC int main(void)
                if (is_ipc_notify(ipc_status)) {
                        switch(who_e) {
                                case CLOCK:
-                                       sched_expire_timers(m_in.NOTIFY_TIMESTAMP);
+                                       expire_timers(m_in.NOTIFY_TIMESTAMP);
                                        continue;       /* don't reply */
                                default :
                                        result = ENOSYS;
index e6312f23e7aac06c58ec71cc35644a9eeffd1c22..fcf59e0467a53079f11e717a84e139039176bc61 100644 (file)
@@ -19,9 +19,4 @@ _PROTOTYPE( void init_scheduling, (void)                              );
 _PROTOTYPE( int no_sys, (int who_e, int call_nr)                       );
 _PROTOTYPE( int sched_isokendpt, (int ep, int *proc)                   );
 _PROTOTYPE( int sched_isemtyendpt, (int ep, int *proc)                 );
-_PROTOTYPE( int accept_message, (message *m_ptr)                               );
-
-/* timers.c */
-_PROTOTYPE( void sched_set_timer, (timer_t *tp, int delta,
-       tmr_func_t watchdog, int arg)                                   );
-_PROTOTYPE( void sched_expire_timers, (clock_t now)                    );
+_PROTOTYPE( int accept_message, (message *m_ptr)                       );
index 24cfeb36d63f1a616b2ac7e98be5907a1f55563a..3388a2fa5a73236de96cb758cfa0148b189ed0be 100644 (file)
@@ -13,6 +13,7 @@
 
 #include <minix/syslib.h>
 #include <minix/sysutil.h>
+#include <minix/timers.h>
 
 #include <errno.h>
 
index 9ed806d35e26b86183d2951e3491fb011529a288..be904c12cc031259e1bd163aa1ce688cbd31704f 100644 (file)
@@ -227,8 +227,8 @@ PRIVATE int schedule_process(struct schedproc * rmp)
 PUBLIC void init_scheduling(void)
 {
        balance_timeout = BALANCE_TIMEOUT * sys_hz();
-       tmr_inittimer(&sched_timer);
-       sched_set_timer(&sched_timer, balance_timeout, balance_queues, 0);
+       init_timer(&sched_timer);
+       set_timer(&sched_timer, balance_timeout, balance_queues, 0);
 }
 
 /*===========================================================================*
@@ -255,5 +255,5 @@ PRIVATE void balance_queues(struct timer *tp)
                }
        }
 
-       sched_set_timer(&sched_timer, balance_timeout, balance_queues, 0);
+       set_timer(&sched_timer, balance_timeout, balance_queues, 0);
 }
diff --git a/servers/sched/timers.c b/servers/sched/timers.c
deleted file mode 100644 (file)
index 39efb9b..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/* SCHED watchdog timer management, based on servers/pm/timers.c.
- *
- * The entry points into this file are:
- *   sched_set_timer:      reset and existing or set a new watchdog timer
- *   sched_expire_timers:  check for expired timers and run watchdog functions
- *
- */
-
-#include "sched.h"
-
-#include <timers.h>
-#include <minix/syslib.h>
-#include <minix/com.h>
-
-PRIVATE timer_t *sched_timers = NULL;
-PRIVATE int sched_expiring = 0;
-
-/*===========================================================================*
- *                             pm_set_timer                                 *
- *===========================================================================*/
-PUBLIC void sched_set_timer(timer_t *tp, int ticks, tmr_func_t watchdog, int arg)
-{
-       int r;
-       clock_t now, prev_time = 0, next_time;
-
-       if ((r = getuptime(&now)) != OK)
-               panic("SCHED couldn't get uptime");
-
-       /* Set timer argument and add timer to the list. */
-       tmr_arg(tp)->ta_int = arg;
-       prev_time = tmrs_settimer(&sched_timers,tp,now+ticks,watchdog,&next_time);
-
-       /* Reschedule our synchronous alarm if necessary. */
-       if (sched_expiring == 0 && (! prev_time || prev_time > next_time)) {
-               if (sys_setalarm(next_time, 1) != OK)
-                       panic("SCHED set timer couldn't set alarm");
-       }
-
-       return;
-}
-
-/*===========================================================================*
- *                             sched_expire_timers                          *
- *===========================================================================*/
-PUBLIC void sched_expire_timers(clock_t now)
-{
-       clock_t next_time;
-
-       /* Check for expired timers. Use a global variable to indicate that
-        * watchdog functions are called, so that sys_setalarm() isn't called
-        * more often than necessary when sched_set_timer is
-        * called from these watchdog functions. */
-       sched_expiring = 1;
-       tmrs_exptimers(&sched_timers, now, &next_time);
-       sched_expiring = 0;
-
-       /* Reschedule an alarm if necessary. */
-       if (next_time > 0) {
-               if (sys_setalarm(next_time, 1) != OK)
-                       panic("SCHED expire timer couldn't set alarm");
-       }
-}
index 3c0ed1375cfe26634e3285484c0cb64e75ae477a..ae18060162be42169fc6109426df959851f09c2d 100644 (file)
@@ -3,7 +3,7 @@ PROG=   vfs
 SRCS=  main.c open.c read.c write.c pipe.c dmap.c \
        path.c device.c mount.c link.c exec.c \
        filedes.c stadir.c protect.c time.c \
-       lock.c misc.c utility.c select.c timers.c table.c \
+       lock.c misc.c utility.c select.c table.c \
        vnode.c vmnt.c request.c fscall.c
 
 DPADD+=        ${LIBSYS} ${LIBTIMERS}
index 62a7cb7444f00e0a24e2ece96cfbd309eee67e12..7ac097f24ddb177533e4609bc2408633eaf2bb28 100644 (file)
@@ -34,6 +34,7 @@
 
 #include <minix/syslib.h>
 #include <minix/sysutil.h>
+#include <minix/timers.h>
 
 #include "const.h"
 #include "dmap.h"
index d4be05cb21a9aca11555e9d651b14bbde80a5967..974f16af13ee675487f481061be8410d5ffa8251 100644 (file)
@@ -111,7 +111,7 @@ PUBLIC int main(void)
                        /* Alarm timer expired. Used only for select().
                         * Check it.
                         */
-                       fs_expire_timers(m_in.NOTIFY_TIMESTAMP);
+                       expire_timers(m_in.NOTIFY_TIMESTAMP);
                }
                else if(who_e == DS_PROC_NR)
                {
index 2d799972d3a393c6fbb48944626cc6a6491cc6c6..0a107e4c98bae1f653f4975480e8676523c628a2 100644 (file)
@@ -265,12 +265,3 @@ _PROTOTYPE( void select_timeout_check, (timer_t *)                 );
 _PROTOTYPE( void init_select, (void)                                   );
 _PROTOTYPE( void select_unsuspend_by_endpt, (endpoint_t proc)          );
 _PROTOTYPE( int select_notified, (int major, int minor, int ops)       );
-
-/* timers.c */
-_PROTOTYPE( void fs_set_timer, (timer_t *tp, int delta, 
-            tmr_func_t watchdog, int arg)                               );
-_PROTOTYPE( void fs_expire_timers, (clock_t now)                       );
-_PROTOTYPE( void fs_cancel_timer, (timer_t *tp)                                );
-_PROTOTYPE( void fs_init_timer, (timer_t *tp)                          );
-
-
index 3dcf2549733cdc295880dbac7116415eaad6ac48..8e1badc670a3b57b897e37162718998245340d08 100644 (file)
@@ -235,7 +235,7 @@ PUBLIC int do_select(void)
        ticks = timeout.tv_sec * system_hz +
                (timeout.tv_usec * system_hz + USECPERSEC-1) / USECPERSEC;
        se->expiry = ticks;
-       fs_set_timer(&se->timer, ticks, select_timeout_check, s);
+       set_timer(&se->timer, ticks, select_timeout_check, s);
   }
 
   /* if we're blocking, the table entry is now valid. */
@@ -456,7 +456,7 @@ PRIVATE void select_cancel_all(struct selectentry *e)
 #if DEBUG_SELECT
                printf("cancelling timer %d\n", e - selecttab);
 #endif
-               fs_cancel_timer(&e->timer); 
+               cancel_timer(&e->timer); 
                e->expiry = 0;
        }
 
@@ -612,7 +612,7 @@ PUBLIC void init_select(void)
        int s;
 
        for(s = 0; s < MAXSELECTS; s++)
-               fs_init_timer(&selecttab[s].timer);
+               init_timer(&selecttab[s].timer);
 }
 
 
diff --git a/servers/vfs/timers.c b/servers/vfs/timers.c
deleted file mode 100644 (file)
index c191a79..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/* FS timers library
- */
-
-#include "fs.h"
-#include <timers.h>
-#include <minix/syslib.h>
-#include <minix/com.h>
-
-PRIVATE timer_t *fs_timers = NULL;
-
-PUBLIC void fs_set_timer(timer_t *tp, int ticks, tmr_func_t watchdog, int arg)
-{
-       int r;
-       clock_t now, old_head = 0, new_head;
-
-       if ((r = getuptime(&now)) != OK)
-               panic("FS couldn't get uptime from system task");
-
-       tmr_arg(tp)->ta_int = arg;
-
-       old_head = tmrs_settimer(&fs_timers, tp, now+ticks, watchdog, &new_head);
-
-       /* reschedule our synchronous alarm if necessary */
-       if (!old_head || old_head > new_head) {
-               if (sys_setalarm(new_head, 1) != OK)
-                       panic("FS set timer couldn't set synchronous alarm");
-       }
-
-       return;
-}
-
-PUBLIC void fs_expire_timers(clock_t now)
-{
-       clock_t new_head;
-       tmrs_exptimers(&fs_timers, now, &new_head);
-       if (new_head > 0) {
-               if (sys_setalarm(new_head, 1) != OK)
-                       panic("FS expire timer couldn't set synchronous alarm");
-       }
-}
-
-PUBLIC void fs_init_timer(timer_t *tp)
-{
-       tmr_inittimer(tp);
-}
-
-PUBLIC void fs_cancel_timer(timer_t *tp)
-{
-       clock_t new_head, old_head;
-       old_head = tmrs_clrtimer(&fs_timers, tp, &new_head);
-
-       /* if the earliest timer has been removed, we have to set
-        * the synalarm to the next timer, or cancel the synalarm
-        * altogether if th last time has been cancelled (new_head
-        * will be 0 then).
-        */
-       if (old_head < new_head || !new_head) {
-               if (sys_setalarm(new_head, 1) != OK)
-                       panic("FS expire timer couldn't set synchronous alarm");
-       }
-}