Go to the documentation of this file.
29 #if !defined( __INOS_1MS_H )
68 long SetInterval(
long aiInterval)
96 CINOSxmsHandler(
void* aHandler,
void* aObject, int32 aInterval,
bool aActive=
true,
bool aSingle=
false)
100 pHandler = (void(*)(void)) aHandler;
105 virtual void Call()
override { INOSCallClassMember_0(pObject, (
void *) pHandler); }
125 typedef std::function<void()> tFunction;
129 m_Function(aFunction)
134 virtual void Call()
override { m_Function(); }
140 const tFunction m_Function;
222 uintptr_t& aTimeoutId,
const CINOSxmsHandlerFunction::tFunction& aFunction, int32 aMS,
223 bool aActive=
true,
bool aSingle=
false);
247 {
return g_pTarget->GetTickCount();};
250 {
return aiTickCount-g_pTarget->GetTickCount();};
253 {
return g_pTarget->GetTickAddress();};
256 { m_pTickAddress = apAddress; *m_pTickAddress = 0; };
259 {
return GetResumeTicks();};
261 typedef uintptr_t tIntervalId;
276 template<
typename TFct>
277 void SetInterval(TFct aFct, uint32 aIntervalMs, tIntervalId& aIntervalId) {
290 aIntervalId = tIntervalId();
294 typedef uintptr_t tTimeoutId;
309 template<
typename TFct>
310 void SetTimeout(TFct aFct, uint32 aTimeoutMs, tTimeoutId& aTimeoutId) {
311 AddHandler(aTimeoutId, aFct, aTimeoutMs,
true,
true);
323 aTimeoutId = tTimeoutId();
329 {
return m_Hooks.
HasHooks(auNumber); }
337 TINOSDoubleLinkedList<int32>* p1msTimers;
341 int32* m_pTickAddress = 0;
346 uint32 m_uTicksFor1ms = 0;
355 eThresholdMultiplier = 10
357 uint32 m_uTicksThresholdToSwitchSelected = 0;
360 uint32 m_uCountOfReselection = 0;
363 volatile uint32 m_uMostRecentlyResumedTicks = 0;
366 uint32 m_uOverrun = 0;
370 uint32 m_uWakeUpCount = 0;
401 virtual
void Action() override;
425 #define pINOS1ms CINOS1ms::pInstance()
428 #define g_pINOS1ms CINOS1ms::pInstance()
430 #endif // __INOS_1MS_H
Definition: cinosmutex.h:35
bool KickSporadically() INOS_COMPILE_OPTIMIZED
CINOSxmsHandler * AddHandler(void *aHandler, void *aObject, int32 aMS, bool aActive=true, bool aSingle=false)
void ClearTimeout(tTimeoutId &aTimeoutId)
Definition: inos_1ms.h:319
uint32 Enable()
Enable hook.
int32 * GetTickAddress()
Definition: inos_1ms.h:252
bool KickExactly(CINOSTask *apSource=0) INOS_COMPILE_OPTIMIZED
void SetIntervalCmd(uint32 auInterval)
Set hook interval.
Definition: cinosbushooks.h:163
Definition: cinosbushooks.h:478
virtual void Action() override
Task action loop, needs to be overwritten by the user. For more info, see section Creation.
void ClearInterval(tIntervalId &aIntervalId)
Definition: inos_1ms.h:286
long GetTimer() const
Definition: inos_1ms.h:75
void SetInterval(TFct aFct, uint32 aIntervalMs, tIntervalId &aIntervalId)
Definition: inos_1ms.h:277
uint32 GetIntervalAct() const
Get actual hook interval counter.
Definition: cinosbushooks.h:180
Definition: cinosbushooks.h:144
uint32 GetIntervalCmd()
Get commanded hook interval.
Definition: cinosbushooks.h:173
Definition: inos_1ms.h:53
bool HasHandlers(uint32 auNumber)
Definition: inos_1ms.h:328
int32 GetTickCount()
Definition: inos_1ms.h:246
static uint32 m_uCoreMask
core mask
Definition: inos_1ms.h:413
void RemoveHandler(CINOSxmsHandlerBase *aHandler, bool aDelete=true)
uint32 Disable()
Disable hook.
void eAddTimer(uint32 aTimerPtr)
Definition: inos_1ms.h:172
uint32 GetSystemTicksAtLast1msTick()
Definition: inos_1ms.h:258
void SetTickAddress(int32 *apAddress)
Definition: inos_1ms.h:255
virtual void Call() override
Definition: inos_1ms.h:105
Definition: inos_1ms.h:120
virtual void Call() override
Definition: inos_1ms.h:134
Definition: inos_1ms.h:90
int32 GetTickDelta(int32 aiTickCount)
Definition: inos_1ms.h:249
static CINOS1ms & Instance()
singleton
void AddTimer(int32 *aTimer)
static CINOSMutex m_Mutex
public
Definition: inos_1ms.h:411
void SetTimeout(TFct aFct, uint32 aTimeoutMs, tTimeoutId &aTimeoutId)
Definition: inos_1ms.h:310
bool HasHooks(uint32 auNumber)
Check whether the given number of hooks are still available.
Definition: cinosbushooks.h:887
Definition: cinostask.h:51