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;
425#define pINOS1ms CINOS1ms::pInstance()
428#define g_pINOS1ms CINOS1ms::pInstance()
#define DECLARE_DYNAMIC_PLACEMENT(aClass)
Definition cinospartitionmemory.h:348
#define DECLARE_DYNAMIC(aClass)
Definition cinospartitionmemory.h:328
Definition inos_1ms.h:173
virtual void Action() override
Task action loop, needs to be overwritten by the user. For more info, see section Creation.
void RemoveHandler(CINOSxmsHandlerBase *aHandler, bool aDelete=true)
bool KickExactly(CINOSTask *apSource=0) INOS_COMPILE_OPTIMIZED
uint32 GetSystemTicksAtLast1msTick()
Definition inos_1ms.h:258
void AddHandler(CINOSxmsHandlerBase *aHandler)
int32 GetTickCount()
Definition inos_1ms.h:246
bool KickSporadically() INOS_COMPILE_OPTIMIZED
void ClearInterval(tIntervalId &aIntervalId)
Definition inos_1ms.h:286
void SetTimeout(TFct aFct, uint32 aTimeoutMs, tTimeoutId &aTimeoutId)
Definition inos_1ms.h:310
void SetInterval(TFct aFct, uint32 aIntervalMs, tIntervalId &aIntervalId)
Definition inos_1ms.h:277
static CINOSMutex m_Mutex
public
Definition inos_1ms.h:411
int32 GetTickDelta(int32 aiTickCount)
Definition inos_1ms.h:249
static CINOS1ms & Instance()
singleton
static uint32 m_uCoreMask
core mask
Definition inos_1ms.h:413
CINOSxmsHandler * AddHandler(void *aHandler, void *aObject, int32 aMS, bool aActive=true, bool aSingle=false)
void eAddTimer(uint32 aTimerPtr)
bool HasHandlers(uint32 auNumber)
Definition inos_1ms.h:328
CINOSxmsHandlerFunction * AddHandler(uintptr_t &aTimeoutId, const CINOSxmsHandlerFunction::tFunction &aFunction, int32 aMS, bool aActive=true, bool aSingle=false)
void AddTimer(int32 *aTimer)
int32 * GetTickAddress()
Definition inos_1ms.h:252
void SetTickAddress(int32 *apAddress)
Definition inos_1ms.h:255
void ClearTimeout(tTimeoutId &aTimeoutId)
Definition inos_1ms.h:319
Definition cinosbushooks.h:145
void SetIntervalCmd(uint32 auInterval)
Set hook interval.
Definition cinosbushooks.h:163
uint32 GetIntervalAct() const
Get actual hook interval counter.
Definition cinosbushooks.h:180
uint32 GetIntervalCmd()
Get commanded hook interval.
Definition cinosbushooks.h:173
uint32 Disable()
Disable hook.
uint32 Enable()
Enable hook.
Definition cinosbushooks.h:479
bool HasHooks(uint32 auNumber)
Check whether the given number of hooks are still available.
Definition cinosbushooks.h:887
Definition cinosmutex.h:36
Definition cinostask.h:52
long GetTimer() const
Definition inos_1ms.h:75
Definition inos_1ms.h:121
virtual void Call() override
Definition inos_1ms.h:134
virtual void Call() override
Definition inos_1ms.h:105