Xenomai  3.0.8
Non-Real-Time Signalling Services

These services provide a mechanism to request the execution of a specified handler in non-real-time context. More...

Collaboration diagram for Non-Real-Time Signalling Services:

Typedefs

typedef void(* rtdm_nrtsig_handler_t) (rtdm_nrtsig_t *nrt_sig, void *arg)
 Non-real-time signal handler. More...
 

Functions

void rtdm_schedule_nrt_work (struct work_struct *lostage_work)
 Put a work task in Linux non real-time global workqueue from primary mode. More...
 
int rtdm_nrtsig_init (rtdm_nrtsig_t *nrt_sig, rtdm_nrtsig_handler_t handler, void *arg)
 Register a non-real-time signal handler. More...
 
void rtdm_nrtsig_destroy (rtdm_nrtsig_t *nrt_sig)
 Release a non-realtime signal handler. More...
 
void rtdm_nrtsig_pend (rtdm_nrtsig_t *nrt_sig)
 Trigger non-real-time signal. More...
 

Detailed Description

These services provide a mechanism to request the execution of a specified handler in non-real-time context.

The triggering can safely be performed in real-time context without suffering from unknown delays. The handler execution will be deferred until the next time the real-time subsystem releases the CPU to the non-real-time part.

Typedef Documentation

◆ rtdm_nrtsig_handler_t

typedef void(* rtdm_nrtsig_handler_t) (rtdm_nrtsig_t *nrt_sig, void *arg)

Non-real-time signal handler.

Parameters
[in]nrt_sigSignal handle pointer as passed to rtdm_nrtsig_init()
[in]argArgument as passed to rtdm_nrtsig_init()
Note
The signal handler will run in soft-IRQ context of the non-real-time subsystem. Note the implications of this context, e.g. no invocation of blocking operations.

Function Documentation

◆ rtdm_nrtsig_destroy()

void rtdm_nrtsig_destroy ( rtdm_nrtsig_t *  nrt_sig)

Release a non-realtime signal handler.

Parameters
[in,out]nrt_sigSignal handle
Tags cobalt-core-tags "task-unrestricted"

◆ rtdm_nrtsig_init()

int rtdm_nrtsig_init ( rtdm_nrtsig_t *  nrt_sig,
rtdm_nrtsig_handler_t  handler,
void *  arg 
)

Register a non-real-time signal handler.

Parameters
[in,out]nrt_sigSignal handle
[in]handlerNon-real-time signal handler
[in]argCustom argument passed to handler() on each invocation
Returns
0 on success, otherwise:
  • -EAGAIN is returned if no free signal slot is available.
Tags cobalt-core-tags "task-unrestricted"

◆ rtdm_nrtsig_pend()

void rtdm_nrtsig_pend ( rtdm_nrtsig_t *  nrt_sig)

Trigger non-real-time signal.

Parameters
[in,out]nrt_sigSignal handle
Tags cobalt-core-tags "unrestricted"

◆ rtdm_schedule_nrt_work()

void rtdm_schedule_nrt_work ( struct work_struct *  lostage_work)

Put a work task in Linux non real-time global workqueue from primary mode.

Parameters
lostage_work