Files | |
file | hal.c |
Adeos-based Real-Time Abstraction Layer for PowerPC. | |
file | hal.c |
Adeos-based Real-Time Abstraction Layer for the Blackfin architecture. | |
file | nmi.c |
NMI watchdog support. | |
file | hal.c |
Generic Real-Time HAL. | |
file | nmi.c |
Adeos-based Real-Time Abstraction Layer for x86. | |
file | hal.c |
Adeos-based Real-Time Abstraction Layer for x86. | |
file | nmi.c |
NMI watchdog for x86, from linux/arch/i386/kernel/nmi.c. | |
file | smi.c |
SMI workaround for x86. | |
file | hal.c |
Adeos-based Real-Time Abstraction Layer for ia64. | |
file | hal.c |
Adeos-based Real-Time Abstraction Layer for PowerPC. | |
Functions | |
int | rthal_timer_request (void(*handler)(void), unsigned long nstick) |
Grab the hardware timer. | |
void | rthal_timer_release (void) |
Release the hardware timer. | |
int | rthal_irq_host_release (unsigned irq, void *dev_id) |
Uninstall a shared Linux interrupt handler. | |
int | rthal_irq_enable (unsigned irq) |
Enable an interrupt source. | |
int | rthal_irq_disable (unsigned irq) |
Disable an interrupt source. | |
int | rthal_irq_request (unsigned irq, rthal_irq_handler_t handler, rthal_irq_ackfn_t ackfn, void *cookie) |
Install a real-time interrupt handler. | |
int | rthal_irq_release (unsigned irq) |
Uninstall a real-time interrupt handler. | |
int | rthal_irq_host_pend (unsigned irq) |
Propagate an IRQ event to Linux. | |
int | rthal_irq_affinity (unsigned irq, cpumask_t cpumask, cpumask_t *oldmask) |
Set/Get processor affinity for external interrupt. | |
rthal_trap_handler_t | rthal_trap_catch (rthal_trap_handler_t handler) |
Installs a fault handler. | |
int | rthal_apc_alloc (const char *name, void(*handler)(void *cookie), void *cookie) |
Allocate an APC slot. | |
int | rthal_apc_free (int apc) |
Releases an APC slot. | |
int | rthal_apc_schedule (int apc) |
Schedule an APC invocation. |
|
Allocate an APC slot. APC is the acronym for Asynchronous Procedure Call, a mean by which activities from the Xenomai domain can schedule deferred invocations of handlers to be run into the Linux domain, as soon as possible when the Linux kernel gets back in control. Up to BITS_PER_LONG APC slots can be active at any point in time. APC support is built upon Adeos's virtual interrupt support. The HAL guarantees that any Linux kernel service which would be callable from a regular Linux interrupt handler is also available to APC handlers, including over PREEMPT_RT kernels exhibiting a threaded IRQ model.
Environments: This service can be called from:
|
|
Releases an APC slot. This service deallocates an APC slot obtained by rthal_apc_alloc().
Environments: This service can be called from:
|
|
Schedule an APC invocation. This service marks the APC as pending for the Linux domain, so that its handler will be called as soon as possible, when the Linux domain gets back in control. When posted from the Linux domain, the APC handler is fired as soon as the interrupt mask is explicitely cleared by some kernel code. When posted from the Xenomai domain, the APC handler is fired as soon as the Linux domain is resumed, i.e. after Xenomai has completed all its pending duties.
Environments: This service can be called from:
|
|
Set/Get processor affinity for external interrupt. On SMP systems, this service ensures that the given interrupt is preferably dispatched to the specified set of processors. The previous affinity mask is returned by this service.
Environments: This service can be called from:
|
|
Disable an interrupt source. Disables an interrupt source at PIC level. After this call has returned, no more IRQs from the given source will be allowed, until the latter is enabled again using rthal_irq_enable().
Environments: This service can be called from:
|
|
Enable an interrupt source. Enables an interrupt source at PIC level. Since Adeos masks and acknowledges the associated interrupt source upon IRQ receipt, this action is usually needed whenever the HAL handler does not propagate the IRQ event to the Linux domain, thus preventing the regular Linux interrupt handling code from re-enabling said source. After this call has returned, IRQs from the given source will be enabled again.
Environments: This service can be called from:
|
|
Propagate an IRQ event to Linux. Causes the given IRQ to be propagated down to the Adeos pipeline to the Linux kernel. This operation is typically used after the given IRQ has been processed into the Xenomai domain by a real-time interrupt handler (see rthal_irq_request()), in case such interrupt must also be handled by the Linux kernel.
Environments: This service can be called from:
|
|
Uninstall a shared Linux interrupt handler. Uninstalls a shared interrupt handler from the Linux domain for the given interrupt source. The handler is removed from the existing list of Linux handlers for this interrupt source.
Environments: This service can be called from:
|
|
Uninstall a real-time interrupt handler. Uninstalls an interrupt handler previously attached using the rthal_irq_request() service.
Environments: This service can be called from:
|
|
Install a real-time interrupt handler. Installs an interrupt handler for the specified IRQ line by requesting the appropriate Adeos virtualization service. The handler is invoked by Adeos on behalf of the Xenomai domain context. Once installed, the HAL interrupt handler will be called prior to the regular Linux handler for the same interrupt source.
Environments: This service can be called from:
|
|
Release the hardware timer. Releases the hardware timer, thus reverting the effect of a previous call to rthal_timer_request(). In case the timer hardware is shared with Linux, a periodic setup suitable for the Linux kernel will be reset. Environments: This service can be called from:
|
|
Grab the hardware timer. rthal_timer_request() grabs and tunes the hardware timer so that a user-defined routine is called according to a given frequency. On architectures that provide a oneshot-programmable time source, the hardware timer can operate either in aperiodic or periodic mode. Using the aperiodic mode still allows to run periodic timings over it: the underlying hardware simply needs to be reprogrammed after each tick using the appropriate interval value The time interval that elapses between two consecutive invocations of the handler is called a tick. The user-supplied handler will always be invoked on behalf of the Xenomai domain for each incoming tick.
Environments: This service can be called from:
|
|
Installs a fault handler. The HAL attempts to invoke a fault handler whenever an uncontrolled exception or fault is caught at machine level. This service allows to install a user-defined handler for such events.
This service can be called from:
|