74 lines
806 B
C
74 lines
806 B
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1998 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
etimer.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
SIS Groveler event timer include file
|
||
|
|
||
|
Authors:
|
||
|
|
||
|
John Douceur, 1998
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
User Mode
|
||
|
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#ifndef _INC_ETIMER
|
||
|
|
||
|
#define _INC_ETIMER
|
||
|
|
||
|
typedef void (*EventCallback)(void *);
|
||
|
|
||
|
class EventTimer
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
EventTimer();
|
||
|
|
||
|
~EventTimer();
|
||
|
|
||
|
void run();
|
||
|
|
||
|
void halt();
|
||
|
|
||
|
void schedule(
|
||
|
unsigned int event_time,
|
||
|
void *context,
|
||
|
EventCallback callback);
|
||
|
|
||
|
private:
|
||
|
|
||
|
struct Event
|
||
|
{
|
||
|
unsigned int event_time;
|
||
|
void *context;
|
||
|
EventCallback callback;
|
||
|
};
|
||
|
|
||
|
struct HeapSegment
|
||
|
{
|
||
|
HeapSegment *previous;
|
||
|
HeapSegment *next;
|
||
|
Event events[1];
|
||
|
};
|
||
|
|
||
|
HeapSegment *first_segment, *last_segment;
|
||
|
int population;
|
||
|
int segment_size;
|
||
|
bool heap_ok;
|
||
|
bool running;
|
||
|
};
|
||
|
|
||
|
#endif /* _INC_ETIMER */
|