Using the interrupt manager ensures that RTEMS knows
when a directive is being called from an ISR. The ISR may then
use system calls to synchronize itself with an application task.
The synchronization may involve messages, events or signals
being passed by the ISR to the desired task. Directives invoked
by an ISR must operate only on objects which reside on the local
node. The following is a list of RTEMS system calls that may be
made from an ISR:
Task Management
Although it is acceptable to operate on the RTEMS_SELF task (e.g.
the currently executing task), while in an ISR, this will refer
to the interrupted task. Most of the time, it is an application
implementation error to use RTEMS_SELF from an ISR.
rtems_task_get_note
rtems_task_set_note
rtems_task_suspend
rtems_task_resume
Interrupt Management
rtems_interrupt_enable
rtems_interrupt_disable
rtems_interrupt_flash
rtems_interrupt_is_in_progress
rtems_interrupt_catch
Clock Management
rtems_clock_set
rtems_clock_get
rtems_clock_get_tod
rtems_clock_get_tod_timeval
rtems_clock_get_seconds_since_epoch
rtems_clock_get_ticks_per_second
rtems_clock_get_ticks_since_boot
rtems_clock_get_uptime
rtems_clock_set_nanoseconds_extension
rtems_clock_tick
Message, Event, and Signal Management
rtems_message_queue_send
rtems_message_queue_urgent
rtems_event_send
rtems_signal_send
Semaphore Management
rtems_semaphore_release
Dual-Ported Memory Management
rtems_port_external_to_internal
rtems_port_internal_to_external
IO Management
The following services are safe to call from an ISR if and only if
the device driver service invoked is also safe. The IO Manager itself
is safe but the invoked driver entry point may or may not be.