17 TimeOutElement *
volatile pNext;
19 TimeOutElement *
volatile pPrev;
22 TimeOutManager *
volatile pOwner;
24 volatile uint32_t NextTime;
33 virtual void TimeElementEvent() = 0;
36 inline uint32_t GetNextTime() {
return NextTime; };
37 inline void ChangeNextInterval(uint32_t nt) { Interval = nt; };
38 inline uint32_t GetInterval() {
return Interval; }
39 void SetNextTime(uint32_t nextTime);
40 friend class TimeOutManager;
41} __attribute__((packed));
46 TimeOutElement *
volatile pElHead;
47 TimeOutElement *
volatile pElTail;
48 volatile uint32_t NextTime;
49 volatile uint32_t LastRun;
50 OS_TCB * OwningTaskTcb;
52 void Remove(TimeOutElement &te);
53 void Insert(TimeOutElement &te);
54 void CheckTime(TimeOutElement &te);
57 void CheckList(
const char *msg, TimeOutElement *pte);
58 void DumpList(uint32_t n);
59 volatile uint32_t entries;
72 void RegisterInterval(TimeOutElement &te, uint16_t TickInterval,
const char *fromwhere,
bool OkToSpread =
false);
75 void RegisterTriggerAt(TimeOutElement &te, uint32_t TriggerTime);
77 void RegisterTriggerAt(TimeOutElement &te,
TickTimeout & tt);
81 void DeRegister(TimeOutElement &te);
86 uint32_t ProcessEvents();
88 void CoreProcessEvents();
91inline void TimeOutElement::SetNextTime(uint32_t nextTime)
93 if (pOwner) pOwner->RegisterTriggerAt(*
this, nextTime);
98typedef void(ActionFunction)();
100extern TimeOutManager NetTimeOutManager;
102class IntervalAction :
public TimeOutElement
105 ActionFunction *m_pFunc;
108 IntervalAction(ActionFunction *pf);
109 virtual void TimeElementEvent();
112typedef void(DHCPProcessFunction)(PoolPtr p);
113extern DHCPProcessFunction *pDHCPProcessFunction;
115typedef void(MULTICastProcessFunction)(PoolPtr p, uint16_t csum);
116extern MULTICastProcessFunction *pMultiCastFunc;
120typedef void(DHCPv6ProcessFunction)(
UDPPacket *pkt);
121extern DHCPv6ProcessFunction *pDHCPv6ClientProcessFunction;
TickTimeout objects are used to facilitate sequential function calls with timeout parameters that nee...
Definition nbrtos.h:157
UDP Packet Class.
Definition udp.h:81
An OS_CRIT object is used to establish critical sections of code that can only be run by one task at ...
Definition nbrtos.h:1084
NetBurner User Datagram Protocol Header File.