|
end of doxygen exclude friend void | Suspend (uint32 auTaskState, uint32 auFlags) |
| Suspend current task from execution. Note that upon Resume, the interrupt state will be restored to the one at the time of calling Suspend, or in other words if interrupts were disabled at calling Suspend, they are still disabled after Resume. Any hold locks are NOT released. If this is required, use SuspendEx instead.
|
|
void | SuspendEx (uint32 auTaskState, SINOSCoreLock *apLock, CINOSTask *apTask) |
| Suspend current task from execution and release the given lock. The lock will be released completely, means that even if it was acquired multiple times (recursively), it'll be completely released (means: be set to 0). This is required, as the function will cause the calling task to suspend - and therefore it'll not continue execution and therefore, any core locks MUST be released in order to not disturb other cores. Note that upon Resume, any previously held lock will NOT be re-acquired. This is in contrast to interrupt state at the time of calling Suspend, which will be restored - but core locks will NOT. This is because it could add unwanted jitter to the Resumed()-ed task. Therefore, the caller needs to take additional action in order to lock any previously held core locks again.
|
|
void | Goodbye () |
| Suspend current task from execution without saving its context.
|
|
void | Resume (class CINOSTask *apTask, uint32 auFlags) |
| Resume given task and put it into ready list.
|
|
void | Resume (tTaskId aidTask, uint32 auFlags) |
| Resume given task and put it into ready list.
|
|
void | Ready (class CINOSTask *apTask, uint32 auFlags) |
| Put given task into ready list but do not schedule. This method is normally used in conjunction with Schedule.
|
|
void | Ready (tTaskId aidTask, uint32 auFlags) |
| Put given task into ready list but do not schedule. This method is normally used in conjunction with Schedule.
|
|
uint32 | SwitchCore (uint32 auCoreId) |
| Switch current task to the given core.
|
|
void | Schedule () |
| Do an explicite schedule. This method is normally used in in conjunction with Ready In case of using a multi core system (INOS_MULTICORE), the very same rules related to core locks are valid as for Suspend(). Read these notes carefully.
|
|
void | Schedule (uint32 auCoreId) |
| Do an explicite schedule or given core. This method is normally used in in conjunction with Ready In case of using a multi core system (INOS_MULTICORE), be aware that this function may call the overloaded function Schedule() (the version taking no arguments), which may alter any "core locks" as explained there.
|
|
void | Relinquish () |
| Give other tasks with the same priority a chance to run. For more info see section Relinquish.
|
|
void | Exit (uint32 auExitCode) |
| Terminate actual task.
|
|
void | ChangePriority (uint32 auPriority) |
| Change priority of current task and do a reschedule if necessary. For more info see section Priority.
|
|
class CINOSTask * | ActualTask () |
| Return pointer to actual running task.
|
|
void CINOSKernel::AddBootedCallback |
( |
void * |
apFunction, |
|
|
void * |
apObject |
|
) |
| |
Add kernel booted callback, it is called after the kernel has entered the running state. Usage example:
KERNEL.AddBootedCallback(P_TYP_CLS_FCT(MyClass, this, void, MyClass::OnKernelBooted, ()), this);
Get kernel state. Valid values are.
eStaPreboot = -1,
eStaBootingCore0 = 0,
eStaBootingCore1 = 1,
eStaBootingCore2 = 2,
eStaBootingCore3 = 3,
eStaBootingCore4 = 4,
eStaBootingCore5 = 5,
eStaBootingCore6 = 6,
eStaBootingCore7 = 7,
eStaBootingCore8 = 8,
eStaBootingCore9 = 9,
eStaBootingCore10 = 10,
eStaBootingCore11 = 11,
eStaBootingCore12 = 12,
eStaBootingCore13 = 13,
eStaBootingCore14 = 14,
eStaBootingCore15 = 15,
eStaSyncTimebase = 64,
eStaFinalyse = 65,
eStaRunning = 66,
- Returns
- none
Suspend current task from execution and release the given lock. The lock will be released completely, means that even if it was acquired multiple times (recursively), it'll be completely released (means: be set to 0). This is required, as the function will cause the calling task to suspend - and therefore it'll not continue execution and therefore, any core locks MUST be released in order to not disturb other cores. Note that upon Resume, any previously held lock will NOT be re-acquired. This is in contrast to interrupt state at the time of calling Suspend, which will be restored - but core locks will NOT. This is because it could add unwanted jitter to the Resumed()-ed task. Therefore, the caller needs to take additional action in order to lock any previously held core locks again.
- Parameters
-
auState | Required task state |
apLock | Pointer lock to be unlocked |
apTask | Pointer to task be atomically resumed AFTER suspend |
- Returns
- none