[ 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
};