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 */
|