The following sections describe some of the main
handlers files that belong to the supercore of the RTEMS, each section represent
each component. A brief description is provided, a rough class diagram of the
component, each file associated with the component, function description,
definitions, enumerations and type definitions.
1 - Address Handler
This handler encapsulates functionality which abstracts address manipulation
in a portable manner.
Figure 1: Address Handler Class
address.inl (macro and inline)
This function is used to add an offset to a base address. It returns the
resulting address. This address is typically converted to an access type
before being used further.
This function returns TRUE if the given address is correctly aligned for
this processor and FALSE otherwise. Proper alignment is based on correctness
This function returns TRUE if the given address is within the memory range
specified and FALSE otherwise.
_Addresses_Subtract: This function is used to subtract two
addresses. It returns the resulting offset.
This function is used to subtract an offset from a base address. It
returns the resulting address. This address is typically converted to an
access type before being used further.
2 - API Extensions
This handler encapsulates functionality which
provides mechanisms for the SuperCore to perform API specific actions without
there being "up-references" from the SuperCore to APIs. If these references were
allowed in the implementation, the cohesion would be too high and adding an API
would be more difficult. The SuperCore is supposed to be largely independent of
Figure 2: API Extensions Handler Class
This type defines the prototype of the Postdriver Hook.
This type defines the prototype of the Postswitch Hook.
This type defines the prototype of the Predriver Hook
is the list of API extensions to the system initialization.
routine adds an extension to the active set of API extensions.
This routine initializes the API extension handler.
This routine executes all of the postdriver callouts.
This routine executes all of the post context switch
This routine executes all of the predriver
3 - Internal Error Handler
This handler encapsulates functionality which provides the foundation
internal error services used in all of the APIs supported by RTEMS.
Figure 4: Internal Error Handler Class
A list of errors which are generated internally by the executive core.
Internal_errors_Source: This type lists the
possible sources from which an error can be reported.
When a fatal error occurs, the error information is stored here.
4 - ISR Handler
This handler encapsulates functionality which
provides the foundation ISR services used in all of the APIs supported by
Figure 5: ISR Handler Class Diagram
Figure 6: ISR Handler Class Diagram
Figure 7: ISR Handler Class Diagram
Figure 8: ISR Handler Class Diagram
Figure 9: ISR Handler Class Diagram
- _ISR_Disable: This routine disables all interrupts so
that a critical section of code can be executing without being interrupted.
Upon return, the argument _level will contain the previous interrupt mask
- _ISR_Enable: This routine enables interrupts to the
previous interrupt mask LEVEL. It is used at the end of a critical section
of code to enable interrupts so they can be processed again.
_ISR_Flash: This routine
temporarily enables interrupts to the previous interrupt mask level and then
disables all interrupts so that the caller can continue into the second part
of a critical section. This routine is used to temporarily enable interrupts
during a long critical section. It is used in long sections of critical code
when a point is reached at which interrupts can be temporarily enabled.
Deciding where to flash interrupts in a long critical section is often
difficult and the point must be selected with care to ensure that the
critical section properly protects itself.
routine returns the current interrupt level.
routine installs new_handler as the interrupt service routine for the
specified vector. The previous interrupt service routine is returned as
routine sets the current interrupt level to that specified by new_level. The
new interrupt level is effective when the routine exits.
This constant promotes out the highest valid interrupt vector
This constant promotes out the number of vectors truly supported by
the current CPU being used. This is usually the number of distinct vectors
the cpu can vector.
ISR_Handler: Return type
for ISR Handler.
to an ISR Handler.
ISR_Level: The following
type defines the control block used to manage the interrupt level portion of
the status register.
following type defines the type used to manage the vectors.
following contains the interrupt service routine nest level. When this
variable is zero, a thread is executing.
The following is TRUE if signals have been sent to the currently
executing thread by an ISR handler.
following declares the Vector Table. Application interrupt service routines
are vectored by the ISR Handler via this.
_ISR_Is_valid_user_handler: This function
returns TRUE if handler is the entry point of a valid use interrupt service
routine and FALSE otherwise.
_ISR_Is_vector_number_valid: This function
returns TRUE if the vector is a valid vector number for this processor and
For more information contact by mail to: firstname.lastname@example.org