PxServiceTaskInit()
Instantiate the calling task as PXROS service task.
- APPLIES TO
-
8.2.0
- SYNOPSIS
-
PxError_t PxServiceTaskInit (void);
- RETURN VALUES
-
-
PXROS error code
-
- ERROR CODES
-
PXERR_ACCESS_RIGHT
The calling task has not the right to act as a service task
PXERR_TASK_DIESRV_INITIALIZED
The dieserver is (seems to be) already initialized
- DESCRIPTION
-
PxServiceTaskInit instantiates the calling task as the PXROS service task. The PXROS service task is responsible to call PxDieService on request. There are two special events which announce the PXROS service task to call this service. The event PXSERVICE_TASK_DIED is signaled from the systemcall PxDie after the calling task has been suspended and is no longer scheduled and ready for deletion. In receiving this event the PXROS service task has to call PxDieService to remove the terminated task from the system.
An example for a PXROS service task could be:
PxError_t ServiceTaskCode(void) { PxMbx_t relmbx; PxEvents_t ev; PxError_t err; relmbx = PxMbxRequest(PXOpoolTaskdefault); // or relmbx = PxTaskGetMbx(PxGetId()); if (PxMbxIdError(relmbx) != PXERR_NOERROR) return PxMbxIdError(relmbx); err = PxServiceTaskInit(); if (err != PXERR_NOERROR) return err; while(1) { ev = PxAwaitEvents(PXSERVICE_TASK_DIED); if (ev & PXSERVICE_TASK_DIED) { err = PxDieService(); if (err != PXERR_NOERROR) { // do error handling } } } }
- IMPLEMENTATION GUIDELINES
-
- Before call
-
-
The calling task must have the right to act as service task
(PXACCESS_SYSTEM_CONTROL)
. (V)
-
- After call
-
-
The function returns
PXERR_NOERROR
if the task could be installed as service task. Any other return value describes an error, which has to be interpreted (C).
-
- Best Practice
-
-
No restrictions
-
- SEE ALSO
- USAGE
-
#include "pxdef.h" PxError_t err = PxServiceTaskInit(); if (err != PXERR_NOERROR) { // Report error }