PxTaskSignalEvents()

Signal events to a task (task service).

APPLIES TO

8.2.0

SYNOPSIS
PxError_t PxTaskSignalEvents (PxTask_t TaskId, PxEvents_t events);
ARGUMENTS
TaskId

Task to send the events to

events

Events to send

RETURN VALUES
  • PXROS error code

ERROR CODES

PXERR_TASK_ILLTASK

TaskId is not a valid task object

PXERR_OPOOL_ILLOPOOL

The object pool is not valid

PXERR_OBJ_NOOBJ

No free objects available to send the request

PXERR_GLOBAL_ILLEGAL_CORE

The requested object pool is not on the same core

PXERR_OBJ_ILLOBJ

The passed object handle is not valid

PXERR_ILLEGAL_ACCESS

Access through parameter pointer in size is illegal

PXERR_INTERNAL_INCONSISTENCY

Allocated object not convertible

DESCRIPTION

PxTaskSignalEvents signals the events specified in events to TaskId. There they are saved until handled by task.

If TaskId waits for any of the events (with a PxAwaitEvents call or a call with the _EvWait suffix), the task is readied and the service returns. If some of the task’s aborting events occur (see PxExpectAbort) and task’s abort mechanism is enabled, the PxExpectAbort call returns prematurely. If the events are signaled to a task on an other core, PXROS will allocate an object for intercore communication to send this request to the other core for execution.

PxTaskSignalEvents can only be called from a task (not handler).

IMPLEMENTATION GUIDELINES
Before call
  • The parameter TaskId must be a valid task object id. This id may be

    • the calling task’s own id read by calling PxGetId() (V)

    • the return value of a PxTaskCreate() call (V)

    • the result of a nameserver query (V)

    • part of a message sent by another task (V)

  • Additionally the task id may be checked with PxTaskCheck() (F).

After call
  • The function returns PXERR_NOERROR if the event could be signaled to the task. Any other return value describes an error, which has to be interpreted. (C)

Best Practice
  • This function may be called from tasks only. (V)

SEE ALSO
USAGE
#include "pxdef.h"

#define MY_EVENT 0x1l

PxError_t Err = PxTaskSignalEvents(TaskId, MY_EVENT);

if (Err != PXERR_NOERROR) {
    // Report error
}