Xenomai API  2.6.5
Non-Real-Time Signalling Services
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

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

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

Non-real-time signal handler.

Parameters
[in]nrt_sigSignal handle as returned by 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

void rtdm_nrtsig_destroy ( rtdm_nrtsig_t *  nrt_sig)

Release a non-realtime signal handler.

Parameters
[in,out]nrt_sigSignal handle

Environments:

This service can be called from:

  • Kernel module initialization/cleanup code
  • Kernel-based task
  • User-space task (RT, non-RT)

Rescheduling: never.

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.

Environments:

This service can be called from:

  • Kernel module initialization/cleanup code
  • Kernel-based task
  • User-space task (RT, non-RT)

Rescheduling: never.

void rtdm_nrtsig_pend ( rtdm_nrtsig_t *  nrt_sig)

Trigger non-real-time signal.

Parameters
[in,out]nrt_sigSignal handle

Environments:

This service can be called from:

  • Kernel module initialization/cleanup code
  • Interrupt service routine
  • Kernel-based task
  • User-space task (RT, non-RT)

Rescheduling: never in real-time context, possible in non-real-time environments.