F´ Flight Software - C/C++ Documentation
devel
A framework for building embedded system applications to NASA flight quality standards.
|
#include <Os/Task.hpp>
Classes | |
class | TaskRoutineWrapper |
Wrapper for task routine that ensures onStart() is called once the task actually begins. More... | |
Public Types | |
typedef FwSizeType | ParamType |
backwards-compatible parameter type More... | |
Public Types inherited from Os::TaskInterface | |
enum | Status { OP_OK , INVALID_HANDLE , INVALID_PARAMS , INVALID_STACK , UNKNOWN_ERROR , INVALID_AFFINITY , DELAY_ERROR , JOIN_ERROR , ERROR_RESOURCES , ERROR_PERMISSION , INVALID_STATE } |
enum | SuspensionType { INTENTIONAL , UNINTENTIONAL } |
enum | State { NOT_STARTED , STARTING , RUNNING , SUSPENDED_INTENTIONALLY , SUSPENDED_UNINTENTIONALLY , EXITED , UNKNOWN } |
typedef void(* | taskRoutine) (void *ptr) |
Prototype for task routine started in task context. More... | |
Public Member Functions | |
Task () | |
default constructor More... | |
~Task () final | |
default virtual destructor More... | |
Task (const Task &other)=delete | |
copy constructor is forbidden More... | |
Task & | operator= (const Task &other)=delete |
assignment operator is forbidden More... | |
void | suspend () |
suspend the current task More... | |
State | getState () |
get the task's state More... | |
DEPRECATED (Status start(const Fw::StringBase &name, const taskRoutine routine, void *const arg=nullptr, const ParamType priority=TASK_DEFAULT, const ParamType stackSize=TASK_DEFAULT, const ParamType cpuAffinity=TASK_DEFAULT, const ParamType identifier=TASK_DEFAULT), "Switch to Task::start(Arguments&)") | |
start this task More... | |
Status | start (const Arguments &arguments) override |
start the task More... | |
void | onStart () override |
perform delegate's required task start actions More... | |
void | invokeRoutine () |
invoke the task's routine More... | |
DEPRECATED (Status join(void **value_ptr), "Please switch to argument free join.") | |
join calling thread to this thread More... | |
Status | join () override |
block until the task has ended More... | |
void | suspend (SuspensionType suspensionType) override |
suspend the task given the suspension type More... | |
void | resume () override |
resume a suspended task More... | |
Status | _delay (Fw::TimeInterval interval) override |
delay the current task More... | |
bool | isCooperative () override |
determine if the task is cooperative multitasking (implementation specific) More... | |
FwSizeType | getPriority () |
get the task priority More... | |
TaskHandle * | getHandle () override |
return the underlying task handle (implementation specific) More... | |
Public Member Functions inherited from Os::TaskInterface | |
TaskInterface ()=default | |
default constructor More... | |
virtual | ~TaskInterface ()=default |
default virtual destructor More... | |
TaskInterface (const TaskInterface &other)=delete | |
copy constructor is forbidden More... | |
TaskInterface & | operator= (const TaskInterface &other)=delete |
assignment operator is forbidden More... | |
Static Public Member Functions | |
static void | init () |
initialize singleton More... | |
static FwSizeType | getNumTasks () |
get the current number of tasks More... | |
static void | registerTaskRegistry (TaskRegistry *registry) |
register a task registry to track Threads More... | |
static Task & | getSingleton () |
get a reference to singleton More... | |
static Status | delay (Fw::TimeInterval interval) |
delay the current task More... | |
Static Public Member Functions inherited from Os::TaskInterface | |
static TaskInterface * | getDelegate (TaskHandleStorage &aligned_placement_new_memory) |
provide a pointer to a task delegate object More... | |
Additional Inherited Members | |
Static Public Attributes inherited from Os::TaskInterface | |
static constexpr FwSizeType | TASK_DEFAULT = std::numeric_limits<FwSizeType>::max() |
Task class intended to be used by the rest of the fprime system. This is final as it is not intended to be a parent class. Instead it wraps a delegate provided by TaskInterface::getDelegate()
to provide system specific behaviour.
typedef FwSizeType Os::Task::ParamType |
|
delete |
copy constructor is forbidden
|
overridevirtual |
delay the current task
Delays, or sleeps, the current task by the supplied time interval. In non-preempting os implementations the task will resume no earlier than expected but an exact wake-up time is not guaranteed.
interval | delay time |
Implements Os::TaskInterface.
|
static |
delay the current task
Delays, or sleeps, the current task by the supplied time interval. In non-preempting os implementations the task will resume no earlier than expected but an exact wake-up time is not guaranteed.
interval | delay time |
Os::Task::DEPRECATED | ( | Status | joinvoid **value_ptr, |
"Please switch to argument free join." | |||
) |
join calling thread to this thread
Note: this function is deprecated as the value_ptr object is not used anyway and should always be set to nullptr.
value_ptr | must be set to nullptr |
Os::Task::DEPRECATED | ( | Status | startconst Fw::StringBase &name, const taskRoutine routine, void *const arg=nullptr, const ParamType priority=TASK_DEFAULT, const ParamType stackSize=TASK_DEFAULT, const ParamType cpuAffinity=TASK_DEFAULT, const ParamType identifier=TASK_DEFAULT, |
"Switch to Task::start(Arguments&)" | |||
) |
start this task
Start this task with supplied name, task routine (run function), priority, stack, affinity, and task identifier. These arguments are supplied into an Arguments class and that version of the function is called. It is illegal to supply a nullptr as routine.
name | name of the task to start |
routine | user routine to run |
arg | (optional) user argument to supply to task routine |
priority | (optional) priority of this task |
stackSize | (optional) stack size of this task |
cpuAffinity | (optional) affinity of this task. Use Task::start(Arguments&) to supply affinity set. |
identifier | (optional) identifier of this task |
|
overridevirtual |
return the underlying task handle (implementation specific)
Implements Os::TaskInterface.
|
static |
FwSizeType Os::Task::getPriority | ( | ) |
|
static |
Task::State Os::Task::getState | ( | ) |
void Os::Task::invokeRoutine | ( | ) |
|
overridevirtual |
determine if the task is cooperative multitasking (implementation specific)
Reimplemented from Os::TaskInterface.
|
overridevirtual |
block until the task has ended
Blocks the current (calling) task until this task execution has ended. Callers should ensure that any signals required to stop this task have already been emitted or will be emitted by another task.
Implements Os::TaskInterface.
|
overridevirtual |
perform delegate's required task start actions
Implements Os::TaskInterface.
|
static |
|
overridevirtual |
resume a suspended task
Resumes this task. Not started, running, and exited tasks take no action.
Implements Os::TaskInterface.
|
overridevirtual |
start the task
Starts the task given the supplied arguments. This is done via the a task routine wrapper intermediary that ensures that setStarted
is called once the task has actually started to run. The task then runs the user routine. This function may return before the new task begins to run. It is illegal for arguments.m_routine to be null.
arguments | arguments supplied to the task start call |
Implements Os::TaskInterface.
void Os::Task::suspend | ( | ) |
|
overridevirtual |
suspend the task given the suspension type
Suspends the task. Some implementations track if the suspension of a task was intentional or unintentional. The supplied suspensionType
parameter indicates that this was intentional or unintentional. The type of suspension is also returned when calling isSuspended
.
suspensionType | intentionality of the suspension |
Implements Os::TaskInterface.