[ RCOS.java Home | RCOS Home | David's Home ]
      Name: | 
    Timer | 
      Comment: | 
    
      Data structures to emulate a hardware timer.
 A hardware timer generates a CPU interrupt every X milliseconds. This means it can be used for implementing time-slicing, or for having a thread go to sleep for a specific period of time. We emulate a hardware timer by scheduling an interrupt to occur every time stats->totalTicks has increased by TimerTicks. In order to introduce some randomness into time-slicing, if "doRandom" is set, then the interrupt comes after a random number of ticks.  | 
  
      Collaborators: | 
    
class Timer {
  public:
    Timer(VoidFunctionPtr timerHandler, int callArg, bool doRandom);
                                // Initialize the timer, to call the interrupt
                                // handler "timerHandler" every time slice.
    ~Timer() {}
// Internal routines to the timer emulation -- DO NOT call these
    void TimerExpired();        // called internally when the hardware
                                // timer generates an interrupt
    int TimeOfNextInterrupt();  // figure out when the timer will generate
                                // its next interrupt
  private:
    bool randomize;             // set if we need to use a random timeout delay
    VoidFunctionPtr handler;    // timer interrupt handler
    int arg;                    // argument to pass to interrupt handler
};