Convert all Unicode to ASCII(128)

This commit is contained in:
Amar Takhar 2016-01-18 00:37:40 -05:00 committed by Amar Takhar
parent 11e1a6f969
commit d389819eea
121 changed files with 705 additions and 705 deletions

View File

@ -71,7 +71,7 @@ to configure an analog board:
Initialize an Analog Board Initialize an Analog Board
========================== ==========================
At system initialization, the analog drivers initialization entry point At system initialization, the analog driver's initialization entry point
will be invoked. As part of initialization, the driver will perform will be invoked. As part of initialization, the driver will perform
whatever board initialization is required and then set all whatever board initialization is required and then set all
outputs to their configured initial state. outputs to their configured initial state.

View File

@ -101,7 +101,7 @@ following structure:
ATA driver supports separate ATA requests queues for each IDE ATA driver supports separate ATA requests queues for each IDE
controller (one queue per controller). The following structure contains controller (one queue per controller). The following structure contains
information about controllers queue and devices attached to the controller: information about controller's queue and devices attached to the controller:
.. code:: c .. code:: c
/* /*
@ -153,7 +153,7 @@ implementation supports only two ioctls: BLKIO_REQUEST and
ATAIO_SET_MULTIPLE_MODE. Each ATA driver ioctl() call generates an ATAIO_SET_MULTIPLE_MODE. Each ATA driver ioctl() call generates an
ATA request which is appended to the appropriate controller queue depending ATA request which is appended to the appropriate controller queue depending
on ATA device the request belongs to. If appended request is single request in on ATA device the request belongs to. If appended request is single request in
the controllers queue then ATA driver event is generated. the controller's queue then ATA driver event is generated.
ATA driver task which manages queue of ATA driver events is core of ATA ATA driver task which manages queue of ATA driver events is core of ATA
driver. In current driver version queue of ATA driver events implemented driver. In current driver version queue of ATA driver events implemented

View File

@ -8,7 +8,7 @@ The purpose of the clock driver is to provide two services for the operating
system. system.
- A steady time basis to the kernel, so that the RTEMS primitives that need - A steady time basis to the kernel, so that the RTEMS primitives that need
a clock tick work properly. See the *Clock Manager* chapter of the*RTEMS Application C Users Guide* for more details. a clock tick work properly. See the *Clock Manager* chapter of the*RTEMS Application C User's Guide* for more details.
- An optional time counter to generate timestamps of the uptime and wall - An optional time counter to generate timestamps of the uptime and wall
clock time. clock time.

View File

@ -36,11 +36,11 @@ and are at http://opengroup.org/onlinepubs/007908775/xsh/termios.h.html.
Having RTEMS support for Termios is beneficial because: Having RTEMS support for Termios is beneficial because:
- from the users side because it provides standard primitive operations - from the user's side because it provides standard primitive operations
to access the terminal and change configuration settings. These operations to access the terminal and change configuration settings. These operations
are the same under UNIX and RTEMS. are the same under UNIX and RTEMS.
- from the BSP developers side because it frees the - from the BSP developer's side because it frees the
developer from dealing with buffer states and mutual exclusions on them. developer from dealing with buffer states and mutual exclusions on them.
Early RTEMS console device drivers also did their own special Early RTEMS console device drivers also did their own special
character processing. character processing.

View File

@ -76,12 +76,12 @@ to configure an discrete I/O board:
*relay_initial_values* *relay_initial_values*
is an array of the values that should be written to each output is an array of the values that should be written to each output
word on the board during initialization. This allows the driver word on the board during initialization. This allows the driver
to start with the boards output in a known state. to start with the board's output in a known state.
Initialize a Discrete I/O Board Initialize a Discrete I/O Board
=============================== ===============================
At system initialization, the discrete I/O drivers initialization entry point At system initialization, the discrete I/O driver's initialization entry point
will be invoked. As part of initialization, the driver will perform will be invoked. As part of initialization, the driver will perform
whatever board initializatin is required and then set all whatever board initializatin is required and then set all
outputs to their configured initial state. outputs to their configured initial state.

View File

@ -2,7 +2,7 @@
BSP and Device Driver Development Guide BSP and Device Driver Development Guide
======================================= =======================================
COPYRIGHT © 1988 - 2015. COPYRIGHT (c) 1988 - 2015.
On-Line Applications Research Corporation (OAR). On-Line Applications Research Corporation (OAR).

View File

@ -4,7 +4,7 @@ Initialization Code
Introduction Introduction
============ ============
The initialization code is the first piece of code executed when theres a The initialization code is the first piece of code executed when there's a
reset/reboot. Its purpose is to initialize the board for the application. reset/reboot. Its purpose is to initialize the board for the application.
This chapter contains a narrative description of the initialization This chapter contains a narrative description of the initialization
process followed by a description of each of the files and routines process followed by a description of each of the files and routines
@ -178,7 +178,7 @@ The ``boot_card()`` routine performs the following functions:
When in the context of the first task but before its body has been When in the context of the first task but before its body has been
entered, any C++ Global Constructors will be invoked. entered, any C++ Global Constructors will be invoked.
Thats it. We just went through the entire sequence. That's it. We just went through the entire sequence.
bsp_work_area_initialize() - BSP Specific Work Area Initialization bsp_work_area_initialize() - BSP Specific Work Area Initialization
------------------------------------------------------------------ ------------------------------------------------------------------
@ -227,7 +227,7 @@ in the order they appear in the Device Driver Table.
The Driver Address Table is part of the RTEMS Configuration Table. It The Driver Address Table is part of the RTEMS Configuration Table. It
defines device drivers entry points (initialization, open, close, read, defines device drivers entry points (initialization, open, close, read,
write, and control). For more information about this table, please write, and control). For more information about this table, please
refer to the *Configuring a System* chapter in the*RTEMS Application C Users Guide*. refer to the *Configuring a System* chapter in the*RTEMS Application C User's Guide*.
The RTEMS initialization procedure calls the initialization function for The RTEMS initialization procedure calls the initialization function for
every driver defined in the RTEMS Configuration Table (this allows every driver defined in the RTEMS Configuration Table (this allows
@ -289,7 +289,7 @@ of ``__uhoh`` in the ``gen68340`` BSP.
At ``__uhoh`` label is the default interrupt handler routine. This At ``__uhoh`` label is the default interrupt handler routine. This
routine is only called when an unexpected interrupts is raised. One can routine is only called when an unexpected interrupts is raised. One can
add their own routine there (in that case theres a call to a routine - add their own routine there (in that case there's a call to a routine -
$BSP_ROOT/startup/dumpanic.c - that prints which address caused the $BSP_ROOT/startup/dumpanic.c - that prints which address caused the
interrupt and the contents of the registers, stack, etc.), but this should interrupt and the contents of the registers, stack, etc.), but this should
not return. not return.
@ -325,7 +325,7 @@ Integrated Processor Registers Initialization
The CPUs used in many embedded systems are highly complex devices The CPUs used in many embedded systems are highly complex devices
with multiple peripherals on the CPU itself. For these devices, with multiple peripherals on the CPU itself. For these devices,
there are always some specific integrated processor registers there are always some specific integrated processor registers
that must be initialized. Refer to the processors manuals for that must be initialized. Refer to the processors' manuals for
details on these registers and be VERY careful programming them. details on these registers and be VERY careful programming them.
Data Section Recopy Data Section Recopy
@ -348,7 +348,7 @@ The RTEMS Configuration Table
The RTEMS configuration table contains the maximum number of objects RTEMS The RTEMS configuration table contains the maximum number of objects RTEMS
can handle during the application (e.g. maximum number of tasks, can handle during the application (e.g. maximum number of tasks,
semaphores, etc.). Its used to allocate the size for the RTEMS inner data semaphores, etc.). It's used to allocate the size for the RTEMS inner data
structures. structures.
The RTEMS configuration table is application dependent, which means that The RTEMS configuration table is application dependent, which means that
@ -367,7 +367,7 @@ application. In 4.9 and newer, we have eliminated the BSP copies of the
configuration tables and are making efforts to make the configuration configuration tables and are making efforts to make the configuration
information generated by ``<rtems/confdefs.h>`` constant and read only. information generated by ``<rtems/confdefs.h>`` constant and read only.
For more information on the RTEMS Configuration Table, refer to the*RTEMS Application C Users Guide*. For more information on the RTEMS Configuration Table, refer to the*RTEMS Application C User's Guide*.
.. COMMENT: COPYRIGHT (c) 1988-2008. .. COMMENT: COPYRIGHT (c) 1988-2008.

View File

@ -34,7 +34,7 @@ Two types of memories have to be distinguished:
- ROM - non-volatile but read only - ROM - non-volatile but read only
Even though RAM and ROM can be found in every personal computer, Even though RAM and ROM can be found in every personal computer,
one generally doesnt care about them. In a personal computer, one generally doesn't care about them. In a personal computer,
a program is nearly always stored on disk and executed in RAM. Things a program is nearly always stored on disk and executed in RAM. Things
are a bit different for embedded targets: the target will execute the are a bit different for embedded targets: the target will execute the
program each time it is rebooted or switched on. The application program each time it is rebooted or switched on. The application
@ -49,7 +49,7 @@ object file format on the Motorola m68k family of microprocessors,
the following sections will be present: the following sections will be present:
- *code (``.text``) section*: - *code (``.text``) section*:
is the programs code and it should not be modified. is the program's code and it should not be modified.
This section may be placed in ROM. This section may be placed in ROM.
- *non-initialized data (``.bss``) section*: - *non-initialized data (``.bss``) section*:
@ -57,7 +57,7 @@ the following sections will be present:
- *initialized data (``.data``) section*: - *initialized data (``.data``) section*:
holds the initialized program data which may be modified during the holds the initialized program data which may be modified during the
programs life. This means they have to be in RAM. program's life. This means they have to be in RAM.
On the other hand, these variables must be set to predefined values, and On the other hand, these variables must be set to predefined values, and
those predefined values have to be stored in ROM. those predefined values have to be stored in ROM.
@ -300,7 +300,7 @@ $BSP340_ROOT/startup/linkcmds.
Initialized Data Initialized Data
================ ================
Now theres a problem with the initialized data: the ``.data`` section Now there's a problem with the initialized data: the ``.data`` section
has to be in RAM as this data may be modified during the program execution. has to be in RAM as this data may be modified during the program execution.
But how will the values be initialized at boot time? But how will the values be initialized at boot time?
@ -354,7 +354,7 @@ section with an ``awk`` script. The details of how
this is done are not relevant. this is done are not relevant.
Step 3 shows the final executable image as it logically appears in Step 3 shows the final executable image as it logically appears in
the targets non-volatile program memory. The board initialization the target's non-volatile program memory. The board initialization
code will copy the ""copy of ``.data`` section" (which are stored in code will copy the ""copy of ``.data`` section" (which are stored in
ROM) to their reserved location in RAM. ROM) to their reserved location in RAM.

View File

@ -147,10 +147,10 @@ with the toolset, this same information must be used when building the
application. So a BSP must include a build configuration file. The application. So a BSP must include a build configuration file. The
configuration file is ``make/custom/BSP.cfg``. configuration file is ``make/custom/BSP.cfg``.
The configuration file is taken into account when building ones The configuration file is taken into account when building one's
application using the RTEMS template Makefiles (``make/templates``). application using the RTEMS template Makefiles (``make/templates``).
These application template Makefiles have been included with the These application template Makefiles have been included with the
RTEMS source distribution since the early 1990s. However there is RTEMS source distribution since the early 1990's. However there is
a desire in the RTEMS user community to move all provided examples to a desire in the RTEMS user community to move all provided examples to
GNU autoconf. They are included in the 4.9 release series and used for GNU autoconf. They are included in the 4.9 release series and used for
all examples provided with RTEMS. There is no definite time table for all examples provided with RTEMS. There is no definite time table for

View File

@ -114,7 +114,7 @@ The ``tm27`` test from the RTEMS Timing Test Suite is designed to measure the le
All members of the Timing Test Suite are designed to run *WITHOUT* All members of the Timing Test Suite are designed to run *WITHOUT*
the Clock Device Driver installed. This increases the predictability the Clock Device Driver installed. This increases the predictability
of the tests execution as well as avoids occassionally including the of the tests' execution as well as avoids occassionally including the
overhead of a clock tick interrupt in the time reported. Because of overhead of a clock tick interrupt in the time reported. Because of
this it is sometimes possible to use the clock tick interrupt source this it is sometimes possible to use the clock tick interrupt source
as the source of this test interrupt. On other architectures, it is as the source of this test interrupt. On other architectures, it is

View File

@ -6,7 +6,7 @@ Introduction
This chapter is intended to provide an introduction to the This chapter is intended to provide an introduction to the
procedure for writing RTEMS network device drivers. procedure for writing RTEMS network device drivers.
The example code is taken from the Generic 68360 network device The example code is taken from the 'Generic 68360' network device
driver. The source code for this driver is located in the``c/src/lib/libbsp/m68k/gen68360/network`` directory in the RTEMS driver. The source code for this driver is located in the``c/src/lib/libbsp/m68k/gen68360/network`` directory in the RTEMS
source code distribution. Having a copy of this driver at source code distribution. Having a copy of this driver at
hand when reading the following notes will help significantly. hand when reading the following notes will help significantly.
@ -15,7 +15,7 @@ Learn about the network device
============================== ==============================
Before starting to write the network driver become completely Before starting to write the network driver become completely
familiar with the programmers view of the device. familiar with the programmer's view of the device.
The following points list some of the details of the The following points list some of the details of the
device that must be understood before a driver can be written. device that must be understood before a driver can be written.
@ -70,7 +70,7 @@ data structures and resources. To ensure the consistency
of these structures the tasks of these structures the tasks
execute only when they hold the network semaphore (``rtems_bsdnet_semaphore``). execute only when they hold the network semaphore (``rtems_bsdnet_semaphore``).
The transmit and receive tasks must abide by this protocol. Be very The transmit and receive tasks must abide by this protocol. Be very
careful to avoid deadly embraces with the other network tasks. careful to avoid 'deadly embraces' with the other network tasks.
A number of routines are provided to make it easier for the network A number of routines are provided to make it easier for the network
driver code to conform to the network task scheduling conventions. driver code to conform to the network task scheduling conventions.
@ -161,9 +161,9 @@ in the device-dependent data structure supplied and maintained by the driver:
``ifp->if_unit`` ``ifp->if_unit``
The device number. The network stack uses this number and the The device number. The network stack uses this number and the
device name for device name lookups. For example, if``ifp->if_name`` is ``scc`` and ``ifp->if_unit`` is ``1``, device name for device name lookups. For example, if``ifp->if_name`` is '``scc``' and ``ifp->if_unit`` is '``1``',
the full device name would be ``scc1``. The unit number should be the full device name would be '``scc1``'. The unit number should be
obtained from the name entry in the configuration structure. obtained from the 'name' entry in the configuration structure.
``ifp->if_mtu`` ``ifp->if_mtu``
The maximum transmission unit for the device. For Ethernet The maximum transmission unit for the device. For Ethernet
@ -212,7 +212,7 @@ Once the attach function has set up the above entries it must link the
driver data structure onto the list of devices by driver data structure onto the list of devices by
calling ``if_attach``. Ethernet devices should then calling ``if_attach``. Ethernet devices should then
call ``ether_ifattach``. Both functions take a pointer to the call ``ether_ifattach``. Both functions take a pointer to the
devices ``ifnet`` structure as their only argument. device's ``ifnet`` structure as their only argument.
The attach function should return a non-zero value to indicate that The attach function should return a non-zero value to indicate that
the driver has been successfully configured and attached. the driver has been successfully configured and attached.
@ -222,8 +222,8 @@ Write the Driver Start Function.
This function is called each time the network stack wants to start the This function is called each time the network stack wants to start the
transmitter. This occures whenever the network stack adds a packet transmitter. This occures whenever the network stack adds a packet
to a devices send queue and the ``IFF_OACTIVE`` bit in the to a device's send queue and the ``IFF_OACTIVE`` bit in the
devices ``if_flags`` is not set. device's ``if_flags`` is not set.
For many devices this function need only set the ``IFF_OACTIVE`` bit in the``if_flags`` and send an event to the transmit task For many devices this function need only set the ``IFF_OACTIVE`` bit in the``if_flags`` and send an event to the transmit task
indicating that a packet is in the driver transmit queue. indicating that a packet is in the driver transmit queue.

View File

@ -127,7 +127,7 @@ to easily divide the non-volatile memory for different purposes.
Initialize the Non-Volatile Memory Driver Initialize the Non-Volatile Memory Driver
========================================= =========================================
At system initialization, the non-volatile memory drivers At system initialization, the non-volatile memory driver's
initialization entry point will be invoked. As part of initialization entry point will be invoked. As part of
initialization, the driver will perform initialization, the driver will perform
whatever initializatin is required on each non-volatile memory area. whatever initializatin is required on each non-volatile memory area.
@ -140,7 +140,7 @@ the entire device driver.
Disable Read and Write Handlers Disable Read and Write Handlers
=============================== ===============================
Depending on the targets non-volatile memory configuration, it may be Depending on the target's non-volatile memory configuration, it may be
possible to write to a status register and make the memory area completely possible to write to a status register and make the memory area completely
inaccessible. This is target dependent and beyond the standard capabilities inaccessible. This is target dependent and beyond the standard capabilities
of any memory type. The user has the optional capability to provide of any memory type. The user has the optional capability to provide

View File

@ -33,7 +33,7 @@ driver. There were no DMV177 specific configuration routines. A BSP
could use configuration routines to dynamically determine what type could use configuration routines to dynamically determine what type
of real-time clock is on a particular board. This would be useful for of real-time clock is on a particular board. This would be useful for
a BSP supporting multiple board models. The relevant ports of a BSP supporting multiple board models. The relevant ports of
the DMV177s ``RTC_Table`` configuration table is below: the DMV177's ``RTC_Table`` configuration table is below:
.. code:: c .. code:: c
#include <bsp.h> #include <bsp.h>
@ -104,10 +104,10 @@ The ``deviceProbe`` routine returns TRUE if the device
configured by this entry in the ``RTC_Table`` is present. configured by this entry in the ``RTC_Table`` is present.
This configuration scheme allows one to support multiple versions This configuration scheme allows one to support multiple versions
of the same board with a single BSP. For example, if the first of the same board with a single BSP. For example, if the first
generation of a board had Vendor As RTC chip and the second generation of a board had Vendor A's RTC chip and the second
generation had Vendor Bs RTC chip, RTC_Table could contain generation had Vendor B's RTC chip, RTC_Table could contain
information for both. The ``deviceProbe`` configured information for both. The ``deviceProbe`` configured
for Vendor As RTC chip would need to return TRUE if the for Vendor A's RTC chip would need to return TRUE if the
board was a first generation one. The ``deviceProbe`` board was a first generation one. The ``deviceProbe``
routines are very board dependent and must be provided by routines are very board dependent and must be provided by
the BSP. the BSP.

View File

@ -11,7 +11,7 @@ This driver is only required in shared memory multiprocessing
systems that use the RTEMS mulitprocessing support. For more systems that use the RTEMS mulitprocessing support. For more
information on RTEMS multiprocessing capabilities and the information on RTEMS multiprocessing capabilities and the
MPCI, refer to the *Multiprocessing Manager* chapter MPCI, refer to the *Multiprocessing Manager* chapter
of the *RTEMS Application C Users Guide*. of the *RTEMS Application C User's Guide*.
Shared Memory Configuration Table Shared Memory Configuration Table
================================= =================================
@ -95,7 +95,7 @@ used from this node. Most targets will simply return the address
passed to this routine. However, some target boards will have a special passed to this routine. However, some target boards will have a special
window onto the shared memory. For example, some VMEbus boards have window onto the shared memory. For example, some VMEbus boards have
special address windows to access addresses that are normally reserved special address windows to access addresses that are normally reserved
in the CPUs address space. in the CPU's address space.
.. code:: c .. code:: c
void \*Shm_Convert_address( void \*address ) void \*Shm_Convert_address( void \*address )

View File

@ -31,10 +31,10 @@ differences between these CPU models which RTEMS must take into account.
The source code found in the ``cpukit/score/cpu`` is required to The source code found in the ``cpukit/score/cpu`` is required to
only depend upon the CPU model variations that GCC distinguishes only depend upon the CPU model variations that GCC distinguishes
for the purposes of multilibing. Multilib is the term the GNU for the purposes of multilib'ing. Multilib is the term the GNU
community uses to refer to building a single library source multiple community uses to refer to building a single library source multiple
times with different compiler options so the binary code generated times with different compiler options so the binary code generated
is compatible. As an example, from GCCs perspective, many PowerPC is compatible. As an example, from GCC's perspective, many PowerPC
CPU models are just a PPC603e. Remember that GCC only cares about CPU models are just a PPC603e. Remember that GCC only cares about
the CPU code itself and need not be aware of any peripherals. In the CPU code itself and need not be aware of any peripherals. In
the embedded community, we are exposed to thousands of CPU models the embedded community, we are exposed to thousands of CPU models
@ -86,16 +86,16 @@ a particular target board, the following questions should be asked:
- Does a BSP for a similar board exists? - Does a BSP for a similar board exists?
- Is the boards CPU supported? - Is the board's CPU supported?
If there is already a BSP for the board, then things may already be ready If there is already a BSP for the board, then things may already be ready
to start developing application software. All that remains is to verify to start developing application software. All that remains is to verify
that the existing BSP provides device drivers for all the peripherals that the existing BSP provides device drivers for all the peripherals
on the board that the application will be using. For example, the application on the board that the application will be using. For example, the application
in question may require that the boards Ethernet controller be used and in question may require that the board's Ethernet controller be used and
the existing BSP may not support this. the existing BSP may not support this.
If the BSP does not exist and the boards CPU model is supported, then If the BSP does not exist and the board's CPU model is supported, then
examine the reusable chip library and existing BSPs for a close match. examine the reusable chip library and existing BSPs for a close match.
Other BSPs and libchip provide starting points for the development Other BSPs and libchip provide starting points for the development
of a new BSP. It is often possible to copy existing components in of a new BSP. It is often possible to copy existing components in
@ -103,7 +103,7 @@ the reusable chip library or device drivers from BSPs from different
CPU families as the starting point for a new device driver. CPU families as the starting point for a new device driver.
This will help reduce the development effort required. This will help reduce the development effort required.
If the boards CPU family is supported but the particular CPU model on If the board's CPU family is supported but the particular CPU model on
that board is not, then the RTEMS port to that CPU family will have to that board is not, then the RTEMS port to that CPU family will have to
be augmented. After this is done, development of the new BSP can proceed. be augmented. After this is done, development of the new BSP can proceed.
@ -179,7 +179,7 @@ describes the commonly found subdirectories under each BSP.
UARTs (i.e. serial devices). UARTs (i.e. serial devices).
- *clock*: - *clock*:
support for the clock tick a regular time basis to the kernel. support for the clock tick - a regular time basis to the kernel.
- *timer*: - *timer*:
support of timer devices. support of timer devices.

View File

@ -83,11 +83,11 @@ gen68340 UART FIFO Full Mode
The gen68340 BSP is an example of the use of the timer to support the UART The gen68340 BSP is an example of the use of the timer to support the UART
input FIFO full mode (FIFO means First In First Out and roughly means input FIFO full mode (FIFO means First In First Out and roughly means
buffer). This mode consists in the UART raising an interrupt when n buffer). This mode consists in the UART raising an interrupt when n
characters have been received (*n* is the UARTs FIFO length). It results characters have been received (*n* is the UART's FIFO length). It results
in a lower interrupt processing time, but the problem is that a scanf in a lower interrupt processing time, but the problem is that a scanf
primitive will block on a receipt of less than *n* characters. The solution primitive will block on a receipt of less than *n* characters. The solution
is to set a timer that will check whether there are some characters is to set a timer that will check whether there are some characters
waiting in the UARTs input FIFO. The delay time has to be set carefully waiting in the UART's input FIFO. The delay time has to be set carefully
otherwise high rates will be broken: otherwise high rates will be broken:
- if no character was received last time the interrupt subroutine was - if no character was received last time the interrupt subroutine was

View File

@ -126,7 +126,7 @@ unblock all tasks waiting at the barrier and the caller will
return immediately. return immediately.
When the task does wait to acquire the barrier, then it When the task does wait to acquire the barrier, then it
is placed in the barriers task wait queue in FIFO order. is placed in the barrier's task wait queue in FIFO order.
All tasks waiting on a barrier are returned an error All tasks waiting on a barrier are returned an error
code when the barrier is deleted. code when the barrier is deleted.
@ -143,17 +143,17 @@ Deleting a Barrier
The ``rtems_barrier_delete`` directive removes a barrier The ``rtems_barrier_delete`` directive removes a barrier
from the system and frees its control block. A barrier can be from the system and frees its control block. A barrier can be
deleted by any local task that knows the barriers ID. As a deleted by any local task that knows the barrier's ID. As a
result of this directive, all tasks blocked waiting for the result of this directive, all tasks blocked waiting for the
barrier to be released, will be readied and returned a status code which barrier to be released, will be readied and returned a status code which
indicates that the barrier was deleted. Any subsequent indicates that the barrier was deleted. Any subsequent
references to the barriers name and ID are invalid. references to the barrier's name and ID are invalid.
Directives Directives
========== ==========
This section details the barrier managers This section details the barrier manager's
directives. A subsection is dedicated to each of this managers directives. A subsection is dedicated to each of this manager's
directives and describes the calling sequence, related directives and describes the calling sequence, related
constants, usage, and status codes. constants, usage, and status codes.
@ -179,7 +179,7 @@ BARRIER_CREATE - Create a barrier
``RTEMS_SUCCESSFUL`` - barrier created successfully ``RTEMS_SUCCESSFUL`` - barrier created successfully
``RTEMS_INVALID_NAME`` - invalid barrier name ``RTEMS_INVALID_NAME`` - invalid barrier name
``RTEMS_INVALID_ADDRESS`` - ``id`` is NULL ``RTEMS_INVALID_ADDRESS`` - ``id`` is NULL
``RTEMS_TOO_MANY`` - too many barriers created  ``RTEMS_TOO_MANY`` - too many barriers created
**DESCRIPTION:** **DESCRIPTION:**
@ -268,7 +268,7 @@ BARRIER_DELETE - Delete a barrier
**DIRECTIVE STATUS CODES:** **DIRECTIVE STATUS CODES:**
``RTEMS_SUCCESSFUL`` - barrier deleted successfully ``RTEMS_SUCCESSFUL`` - barrier deleted successfully
``RTEMS_INVALID_ID`` - invalid barrier id  ``RTEMS_INVALID_ID`` -c invalid barrier id
**DESCRIPTION:** **DESCRIPTION:**
@ -281,7 +281,7 @@ by RTEMS.
**NOTES:** **NOTES:**
The calling task will be preempted if it is enabled The calling task will be preempted if it is enabled
by the tasks execution mode and a higher priority local task is by the task's execution mode and a higher priority local task is
waiting on the deleted barrier. The calling task will NOT be waiting on the deleted barrier. The calling task will NOT be
preempted if all of the tasks that are waiting on the barrier preempted if all of the tasks that are waiting on the barrier
are remote tasks. are remote tasks.
@ -378,7 +378,7 @@ BARRIER_RELEASE - Release a barrier
This directive releases the barrier specified by id. This directive releases the barrier specified by id.
All tasks waiting at the barrier will be unblocked. All tasks waiting at the barrier will be unblocked.
If the running tasks preemption mode is enabled and one of If the running task's preemption mode is enabled and one of
the unblocked tasks has a higher priority than the running task. the unblocked tasks has a higher priority than the running task.
**NOTES:** **NOTES:**

View File

@ -40,15 +40,15 @@ application. Some of the hardware components may be initialized
in this code as well as any application initialization that does in this code as well as any application initialization that does
not involve calls to RTEMS directives. not involve calls to RTEMS directives.
The processors Interrupt Vector Table which will be used by the The processor's Interrupt Vector Table which will be used by the
application may need to be set to the required value by the reset application may need to be set to the required value by the reset
application initialization code. Because interrupts are enabled application initialization code. Because interrupts are enabled
automatically by RTEMS as part of the context switch to the first task, automatically by RTEMS as part of the context switch to the first task,
the Interrupt Vector Table MUST be set before this directive is invoked the Interrupt Vector Table MUST be set before this directive is invoked
to ensure correct interrupt vectoring. The processors Interrupt Vector to ensure correct interrupt vectoring. The processor's Interrupt Vector
Table must be accessible by RTEMS as it will be modified by the when Table must be accessible by RTEMS as it will be modified by the when
installing user Interrupt Service Routines (ISRs) On some CPUs, RTEMS installing user Interrupt Service Routines (ISRs) On some CPUs, RTEMS
installs its own Interrupt Vector Table as part of initialization and installs it's own Interrupt Vector Table as part of initialization and
thus these requirements are met automatically. The reset code which is thus these requirements are met automatically. The reset code which is
executed before the call to any RTEMS initialization routines has the executed before the call to any RTEMS initialization routines has the
following requirements: following requirements:
@ -66,7 +66,7 @@ following requirements:
- Must initialize the stack pointer for the initialization process to - Must initialize the stack pointer for the initialization process to
that allocated. that allocated.
- Must initialize the processors Interrupt Vector Table. - Must initialize the processor's Interrupt Vector Table.
- Must disable all maskable interrupts. - Must disable all maskable interrupts.
@ -91,9 +91,9 @@ application. If the processor supports interrupt nesting, the
stack usage must include the deepest nest level. The worst-case stack usage must include the deepest nest level. The worst-case
stack usage must account for the following requirements: stack usage must account for the following requirements:
- Processors interrupt stack frame - Processor's interrupt stack frame
- Processors subroutine call stack frame - Processor's subroutine call stack frame
- RTEMS system calls - RTEMS system calls
@ -115,7 +115,7 @@ interrupt service routines.
The dedicated interrupt stack for the entire application on some The dedicated interrupt stack for the entire application on some
architectures is supplied and initialized by the reset and initialization architectures is supplied and initialized by the reset and initialization
code of the users Board Support Package. Whether allocated and code of the user's Board Support Package. Whether allocated and
initialized by the BSP or RTEMS, since all ISRs use this stack, the initialized by the BSP or RTEMS, since all ISRs use this stack, the
stack size must take into account the worst case stack usage by any stack size must take into account the worst case stack usage by any
combination of nested ISRs. combination of nested ISRs.
@ -124,8 +124,8 @@ Processors Without a Separate Interrupt Stack
--------------------------------------------- ---------------------------------------------
Some processors do not support a separate stack for interrupts. In this Some processors do not support a separate stack for interrupts. In this
case, without special assistance every tasks stack must include case, without special assistance every task's stack must include
enough space to handle the tasks worst-case stack usage as well as enough space to handle the task's worst-case stack usage as well as
the worst-case interrupt stack usage. This is necessary because the the worst-case interrupt stack usage. This is necessary because the
worst-case interrupt nesting could occur while any task is executing. worst-case interrupt nesting could occur while any task is executing.

View File

@ -23,11 +23,11 @@ provided by RTEMS is:
- ``rtems_chain_is_null_node`` - Is the node NULL ? - ``rtems_chain_is_null_node`` - Is the node NULL ?
- ``rtems_chain_head`` - Return the chains head - ``rtems_chain_head`` - Return the chain's head
- ``rtems_chain_tail`` - Return the chains tail - ``rtems_chain_tail`` - Return the chain's tail
- ``rtems_chain_are_nodes_equal`` - Are the nodes equal ? - ``rtems_chain_are_nodes_equal`` - Are the node's equal ?
- ``rtems_chain_is_empty`` - Is the chain empty ? - ``rtems_chain_is_empty`` - Is the chain empty ?
@ -106,8 +106,8 @@ foo structure from the list you perform the following:
return (foo*) rtems_chain_get(control); return (foo*) rtems_chain_get(control);
} }
The node is placed at the start of the users structure to allow the The node is placed at the start of the user's structure to allow the
node address on the chain to be easly cast to the users structure node address on the chain to be easly cast to the user's structure
address. address.
Controls Controls

View File

@ -103,15 +103,15 @@ also sometimes referred to as the automatic round-robin
scheduling algorithm. The length of time allocated to each task scheduling algorithm. The length of time allocated to each task
is known as the quantum or timeslice. is known as the quantum or timeslice.
The systems timeslice is defined as an integral The system's timeslice is defined as an integral
number of ticks, and is specified in the Configuration Table. number of ticks, and is specified in the Configuration Table.
The timeslice is defined for the entire system of tasks, but The timeslice is defined for the entire system of tasks, but
timeslicing is enabled and disabled on a per task basis. timeslicing is enabled and disabled on a per task basis.
The ``rtems_clock_tick`` The ``rtems_clock_tick``
directive implements timeslicing by directive implements timeslicing by
decrementing the running tasks time-remaining counter when both decrementing the running task's time-remaining counter when both
timeslicing and preemption are enabled. If the tasks timeslice timeslicing and preemption are enabled. If the task's timeslice
has expired, then that task will be preempted if there exists a has expired, then that task will be preempted if there exists a
ready task of equal priority. ready task of equal priority.
@ -143,7 +143,7 @@ Announcing a Tick
----------------- -----------------
RTEMS provides the ``rtems_clock_tick`` directive which is RTEMS provides the ``rtems_clock_tick`` directive which is
called from the users real-time clock ISR to inform RTEMS that called from the user's real-time clock ISR to inform RTEMS that
a tick has elapsed. The tick frequency value, defined in a tick has elapsed. The tick frequency value, defined in
microseconds, is a configuration parameter found in the microseconds, is a configuration parameter found in the
Configuration Table. RTEMS divides one million microseconds Configuration Table. RTEMS divides one million microseconds
@ -203,8 +203,8 @@ invoked before the date and time have been set.
Directives Directives
========== ==========
This section details the clock managers directives. This section details the clock manager's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.

View File

@ -103,7 +103,7 @@ porting software for which you do not know the object requirements.
The space needed for stacks and for RTEMS objects will vary from The space needed for stacks and for RTEMS objects will vary from
one version of RTEMS and from one target processor to another. one version of RTEMS and from one target processor to another.
Therefore it is safest to use ``<rtems/confdefs.h>`` and specify Therefore it is safest to use ``<rtems/confdefs.h>`` and specify
your applications requirements in terms of the numbers of objects and your application's requirements in terms of the numbers of objects and
multiples of ``RTEMS_MINIMUM_STACK_SIZE``, as far as is possible. The multiples of ``RTEMS_MINIMUM_STACK_SIZE``, as far as is possible. The
automatic estimates of space required will in general change when: automatic estimates of space required will in general change when:
@ -158,7 +158,7 @@ Format to be followed for making changes in this file
===================================================== =====================================================
- MACRO NAME - MACRO NAME
Should be alphanumeric. Can have _ (underscore). Should be alphanumeric. Can have '_' (underscore).
- DATA TYPE - DATA TYPE
Please refer to all existing formats. Please refer to all existing formats.
@ -167,29 +167,29 @@ Format to be followed for making changes in this file
The range depends on the Data Type of the macro. The range depends on the Data Type of the macro.
- If the data type is of type task priority, then its value should - - If the data type is of type task priority, then its value should
be an integer in the range of 1 to 255. be an integer in the range of 1 to 255.
- If the data type is an integer, then it can have numbers, characters - - If the data type is an integer, then it can have numbers, characters
(in case the value is defined using another macro) and arithmetic operations (in case the value is defined using another macro) and arithmetic operations
(+, -, \*, /). (+, -, \*, /).
- If the data type is a function pointer the first character - - If the data type is a function pointer the first character
should be an alphabet or an underscore. The rest of the string should be an alphabet or an underscore. The rest of the string
can be alphanumeric. can be alphanumeric.
- If the data type is RTEMS Attributes or RTEMS Mode then - - If the data type is RTEMS Attributes or RTEMS Mode then
the string should be alphanumeric. the string should be alphanumeric.
- If the data type is RTEMS NAME then the value should be - - If the data type is RTEMS NAME then the value should be
an integer>=0 or RTEMS_BUILD_NAME( U, I, 1, ) an integer>=0 or RTEMS_BUILD_NAME( 'U', 'I', '1', ' ' )
- DEFAULT VALUE - DEFAULT VALUE
The default value should be in the following formats- The default value should be in the following formats-
Please note that the . (full stop) is necessary. Please note that the '.' (full stop) is necessary.
- In case the value is not defined then: - - In case the value is not defined then:
This is not defined by default. This is not defined by default.
- If we know the default value then: - - If we know the default value then:
The default value is XXX. The default value is XXX.
- If the default value is BSP Specific then: - - If the default value is BSP Specific then:
This option is BSP specific. This option is BSP specific.
- DESCRIPTION - DESCRIPTION
@ -2067,7 +2067,7 @@ the amount of memory reserved for Classic API Message Buffers.
Calculate Memory for a Single Classic Message API Message Queue Calculate Memory for a Single Classic Message API Message Queue
--------------------------------------------------------------- ---------------------------------------------------------------
.. index:: CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE .. index:: CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE
.. index:: memory for a single message queues buffers .. index:: memory for a single message queue's buffers
*CONSTANT:* *CONSTANT:*
``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(max_messages, size_per)`` ``CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(max_messages, size_per)``
@ -4344,7 +4344,7 @@ Enable the Graphics Frame Buffer Device Driver
**DESCRIPTION:** **DESCRIPTION:**
``CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER`` is defined ``CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER`` is defined
if the application wishes to include the BSPs Frame Buffer Device Driver. if the application wishes to include the BSP's Frame Buffer Device Driver.
**NOTES:** **NOTES:**

View File

@ -72,7 +72,7 @@ Handling Periodic Tasks
----------------------- -----------------------
.. index:: CBS periodic tasks .. index:: CBS periodic tasks
Each tasks execution begins with a default background priority Each task's execution begins with a default background priority
(see the chapter Scheduling Concepts to understand the concept of (see the chapter Scheduling Concepts to understand the concept of
priorities in EDF). Once you decide the tasks should start periodic priorities in EDF). Once you decide the tasks should start periodic
execution, you have two possibilities. Either you use only the Rate execution, you have two possibilities. Either you use only the Rate
@ -146,10 +146,10 @@ Attaching Task to a Server
-------------------------- --------------------------
If a task is attached to a server using ``rtems_cbs_attach_thread``, If a task is attached to a server using ``rtems_cbs_attach_thread``,
the tasks computation time per period is limited by the server and the task's computation time per period is limited by the server and
the deadline (period) of task is equal to deadline of the server which the deadline (period) of task is equal to deadline of the server which
means if you conclude a period using ``rate_monotonic_period``, means if you conclude a period using ``rate_monotonic_period``,
the length of next period is always determined by the servers property. the length of next period is always determined by the server's property.
The task has a guaranteed bandwidth given by the server but should not The task has a guaranteed bandwidth given by the server but should not
exceed it, otherwise the priority is pulled to background until the exceed it, otherwise the priority is pulled to background until the
@ -220,8 +220,8 @@ to avoid overrun.
Directives Directives
========== ==========
This section details the Constant Bandwidth Servers directives. This section details the Constant Bandwidth Server's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.
@ -308,7 +308,7 @@ This routine prepares an instance of a constant bandwidth server.
The input parameter ``rtems_cbs_parameters`` specifies scheduling The input parameter ``rtems_cbs_parameters`` specifies scheduling
parameters of the server (period and budget). If these are not valid,``RTEMS_CBS_ERROR_INVALID_PARAMETER`` is returned. parameters of the server (period and budget). If these are not valid,``RTEMS_CBS_ERROR_INVALID_PARAMETER`` is returned.
The ``budget_overrun_callback`` is an optional callback function, which is The ``budget_overrun_callback`` is an optional callback function, which is
invoked in case the servers budget within one period is exceeded. invoked in case the server's budget within one period is exceeded.
Output parameter ``server_id`` becomes an id of the newly created server. Output parameter ``server_id`` becomes an id of the newly created server.
If there is not enough memory, the ``RTEMS_CBS_ERROR_NO_MEMORY`` If there is not enough memory, the ``RTEMS_CBS_ERROR_NO_MEMORY``
is returned. If the maximum server count in the system is exceeded,``RTEMS_CBS_ERROR_FULL`` is returned. is returned. If the maximum server count in the system is exceeded,``RTEMS_CBS_ERROR_FULL`` is returned.
@ -583,7 +583,7 @@ CBS_GET_APPROVED_BUDGET - Get scheduler approved execution time
**DESCRIPTION:** **DESCRIPTION:**
This directive returns servers approved budget for subsequent periods. This directive returns server's approved budget for subsequent periods.
.. COMMENT: COPYRIGHT (c) 1989-2011. .. COMMENT: COPYRIGHT (c) 1989-2011.

View File

@ -83,7 +83,7 @@ successive clock ticks, there would be no way to tell that it
executed at all. executed at all.
Another thing to keep in mind when looking at idle time, is that Another thing to keep in mind when looking at idle time, is that
many systems especially during debug have a task providing many systems - especially during debug - have a task providing
some type of debug interface. It is usually fine to think of the some type of debug interface. It is usually fine to think of the
total idle time as being the sum of the IDLE task and a debug total idle time as being the sum of the IDLE task and a debug
task that will not be included in a production build of an application. task that will not be included in a production build of an application.
@ -97,8 +97,8 @@ the CPU usage statistics for all tasks in the system.
Directives Directives
========== ==========
This section details the CPU usage statistics managers directives. This section details the CPU usage statistics manager's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.

View File

@ -94,8 +94,8 @@ its control block is returned to the DPCB free list.
Directives Directives
========== ==========
This section details the dual-ported memory managers This section details the dual-ported memory manager's
directives. A subsection is dedicated to each of this managers directives. A subsection is dedicated to each of this manager's
directives and describes the calling sequence, related directives and describes the calling sequence, related
constants, usage, and status codes. constants, usage, and status codes.

View File

@ -116,10 +116,10 @@ the target task, one of the following situations applies:
- Target Task is Blocked Waiting for Events - Target Task is Blocked Waiting for Events
- If the waiting tasks input event condition is - If the waiting task's input event condition is
satisfied, then the task is made ready for execution. satisfied, then the task is made ready for execution.
- If the waiting tasks input event condition is not - If the waiting task's input event condition is not
satisfied, then the event set is posted but left pending and the satisfied, then the event set is posted but left pending and the
task remains blocked. task remains blocked.
@ -170,8 +170,8 @@ pending then the ``RTEMS_UNSATISFIED`` status code will be returned.
Directives Directives
========== ==========
This section details the event managers directives. This section details the event manager's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.
@ -198,7 +198,7 @@ EVENT_SEND - Send event set to a task
**DESCRIPTION:** **DESCRIPTION:**
This directive sends an event set, event_in, to the This directive sends an event set, event_in, to the
task specified by id. If a blocked tasks input event condition task specified by id. If a blocked task's input event condition
is satisfied by this directive, then it will be made ready. If is satisfied by this directive, then it will be made ready. If
its input event condition is not satisfied, then the events its input event condition is not satisfied, then the events
satisfied are updated and the events not satisfied are left satisfied are updated and the events not satisfied are left

View File

@ -81,7 +81,7 @@ contains three pieces of information:
The error type indicator is dependent on the source The error type indicator is dependent on the source
of the error and whether or not the error was internally of the error and whether or not the error was internally
generated by the executive. If the error was generated generated by the executive. If the error was generated
from an API, then the error code will be of that APIs from an API, then the error code will be of that API's
error or status codes. The status codes for the RTEMS error or status codes. The status codes for the RTEMS
API are in cpukit/rtems/include/rtems/rtems/status.h. Those API are in cpukit/rtems/include/rtems/rtems/status.h. Those
for the POSIX API can be found in <errno.h>. for the POSIX API can be found in <errno.h>.
@ -106,8 +106,8 @@ occurred.
Directives Directives
========== ==========
This section details the fatal error managers This section details the fatal error manager's
directives. A subsection is dedicated to each of this managers directives. A subsection is dedicated to each of this manager's
directives and describes the calling sequence, related directives and describes the calling sequence, related
constants, usage, and status codes. constants, usage, and status codes.
@ -137,7 +137,7 @@ error extension is defined in the configuration table, then the
user-defined error extension is called. If configured and the user-defined error extension is called. If configured and the
provided FATAL error extension returns, then the RTEMS default provided FATAL error extension returns, then the RTEMS default
error handler is invoked. This directive can be invoked by error handler is invoked. This directive can be invoked by
RTEMS or by the users application code including initialization RTEMS or by the user's application code including initialization
tasks, other tasks, and ISRs. tasks, other tasks, and ISRs.
**NOTES:** **NOTES:**

View File

@ -142,11 +142,11 @@ Glossary
peripheral devices used by the application. peripheral devices used by the application.
:dfn:`directives` :dfn:`directives`
RTEMS provided routines that provide RTEMS' provided routines that provide
support mechanisms for real-time applications. support mechanisms for real-time applications.
:dfn:`dispatch` :dfn:`dispatch`
The act of loading a tasks context onto The act of loading a task's context onto
the CPU and transferring control of the CPU to that task. the CPU and transferring control of the CPU to that task.
:dfn:`dormant` :dfn:`dormant`
@ -177,7 +177,7 @@ Glossary
:dfn:`entry point` :dfn:`entry point`
The address at which a function or task The address at which a function or task
begins to execute. In C, the entry point of a function is the begins to execute. In C, the entry point of a function is the
functions name. function's name.
:dfn:`events` :dfn:`events`
A method for task communication and A method for task communication and
@ -339,7 +339,7 @@ Glossary
Device Driver Table. Device Driver Table.
:dfn:`manager` :dfn:`manager`
A group of related RTEMS directives which A group of related RTEMS' directives which
provide access and control over resources. provide access and control over resources.
:dfn:`memory pool` :dfn:`memory pool`
@ -368,7 +368,7 @@ Glossary
driver, the exact usage of which is driver dependent. driver, the exact usage of which is driver dependent.
:dfn:`mode` :dfn:`mode`
An entry in a tasks control block that is An entry in a task's control block that is
used to determine if the task allows preemption, timeslicing, used to determine if the task allows preemption, timeslicing,
processing of signals, and the interrupt disable level used by processing of signals, and the interrupt disable level used by
the task. the task.
@ -435,7 +435,7 @@ Glossary
:dfn:`operating system` :dfn:`operating system`
The software which controls all The software which controls all
the computers resources and provides the base upon which the computer's resources and provides the base upon which
application programs can be written. application programs can be written.
:dfn:`overhead` :dfn:`overhead`
@ -595,7 +595,7 @@ Glossary
:dfn:`resume` :dfn:`resume`
Removing a task from the suspend state. If Removing a task from the suspend state. If
the tasks state is ready following a call to the ``rtems_task_resume`` the task's state is ready following a call to the ``rtems_task_resume``
directive, then the task is available for scheduling. directive, then the task is available for scheduling.
:dfn:`return code` :dfn:`return code`
@ -671,7 +671,7 @@ Glossary
:dfn:`signal set` :dfn:`signal set`
A thirty-two bit entity which is used to A thirty-two bit entity which is used to
represent a tasks collection of pending signals and the signals represent a task's collection of pending signals and the signals
sent to a task. sent to a task.
:dfn:`SMCB` :dfn:`SMCB`

View File

@ -1,8 +1,8 @@
==================== ====================
RTEMS C Users Guide RTEMS C User's Guide
==================== ====================
COPYRIGHT © 1988 - 2015. COPYRIGHT (c) 1988 - 2015.
On-Line Applications Research Corporation (OAR). On-Line Applications Research Corporation (OAR).

View File

@ -24,7 +24,7 @@ Initialization Tasks
.. index:: initialization tasks .. index:: initialization tasks
Initialization task(s) are the mechanism by which Initialization task(s) are the mechanism by which
RTEMS transfers initial control to the users application. RTEMS transfers initial control to the user's application.
Initialization tasks differ from other application tasks in that Initialization tasks differ from other application tasks in that
they are defined in the User Initialization Tasks Table and they are defined in the User Initialization Tasks Table and
automatically created and started by RTEMS as part of its automatically created and started by RTEMS as part of its
@ -211,8 +211,8 @@ application to end multitasking and terminate the system.
Directives Directives
========== ==========
This section details the Initialization Managers This section details the Initialization Manager's
directives. A subsection is dedicated to each of this managers directives. A subsection is dedicated to each of this manager's
directives and describes the calling sequence, related directives and describes the calling sequence, related
constants, usage, and status codes. constants, usage, and status codes.

View File

@ -50,7 +50,7 @@ interrupt occurs, the processor will automatically vector to
RTEMS. RTEMS saves and restores all registers which are not RTEMS. RTEMS saves and restores all registers which are not
preserved by the normal C calling convention preserved by the normal C calling convention
for the target for the target
processor and invokes the users ISR. The users ISR is processor and invokes the user's ISR. The user's ISR is
responsible for processing the interrupt, clearing the interrupt responsible for processing the interrupt, clearing the interrupt
if necessary, and device specific manipulation... index:: rtems_vector_number if necessary, and device specific manipulation... index:: rtems_vector_number
@ -80,7 +80,7 @@ servicing.
To minimize the masking of lower or equal priority To minimize the masking of lower or equal priority
level interrupts, the ISR should perform the minimum actions level interrupts, the ISR should perform the minimum actions
required to service the interrupt. Other non-essential actions required to service the interrupt. Other non-essential actions
should be handled by application tasks. Once the users ISR has should be handled by application tasks. Once the user's ISR has
completed, it returns control to the RTEMS interrupt manager completed, it returns control to the RTEMS interrupt manager
which will perform task dispatching and restore the registers which will perform task dispatching and restore the registers
saved before the ISR was invoked. saved before the ISR was invoked.
@ -119,9 +119,9 @@ RTEMS Interrupt Levels
Many processors support multiple interrupt levels or Many processors support multiple interrupt levels or
priorities. The exact number of interrupt levels is processor priorities. The exact number of interrupt levels is processor
dependent. RTEMS internally supports 256 interrupt levels which dependent. RTEMS internally supports 256 interrupt levels which
are mapped to the processors interrupt levels. For specific are mapped to the processor's interrupt levels. For specific
information on the mapping between RTEMS and the target information on the mapping between RTEMS and the target
processors interrupt levels, refer to the Interrupt Processing processor's interrupt levels, refer to the Interrupt Processing
chapter of the Applications Supplement document for a specific chapter of the Applications Supplement document for a specific
target processor. target processor.
@ -157,10 +157,10 @@ The ``rtems_interrupt_catch``
directive establishes an ISR for directive establishes an ISR for
the system. The address of the ISR and its associated CPU the system. The address of the ISR and its associated CPU
vector number are specified to this directive. This directive vector number are specified to this directive. This directive
installs the RTEMS interrupt wrapper in the processors installs the RTEMS interrupt wrapper in the processor's
Interrupt Vector Table and the address of the users ISR in the Interrupt Vector Table and the address of the user's ISR in the
RTEMS Vector Table. This directive returns the previous RTEMS' Vector Table. This directive returns the previous
contents of the specified vector in the RTEMS Vector Table. contents of the specified vector in the RTEMS' Vector Table.
Directives Allowed from an ISR Directives Allowed from an ISR
------------------------------ ------------------------------
@ -253,8 +253,8 @@ made from an ISR:
Directives Directives
========== ==========
This section details the interrupt managers This section details the interrupt manager's
directives. A subsection is dedicated to each of this managers directives. A subsection is dedicated to each of this manager's
directives and describes the calling sequence, related directives and describes the calling sequence, related
constants, usage, and status codes. constants, usage, and status codes.
@ -288,7 +288,7 @@ routine (ISR) for the specified interrupt vector number. The``new_isr_handler``
The entry point of the previous ISR for the specified vector is The entry point of the previous ISR for the specified vector is
returned in ``old_isr_handler``. returned in ``old_isr_handler``.
To release an interrupt vector, pass the old handlers address obtained To release an interrupt vector, pass the old handler's address obtained
when the vector was first capture. when the vector was first capture.
**NOTES:** **NOTES:**

View File

@ -41,7 +41,7 @@ Device Driver Table
Each application utilizing the RTEMS I/O manager must specify the Each application utilizing the RTEMS I/O manager must specify the
address of a Device Driver Table in its Configuration Table. This table address of a Device Driver Table in its Configuration Table. This table
contains each device drivers entry points that is to be initialised by contains each device driver's entry points that is to be initialised by
RTEMS during initialization. Each device driver may contain the RTEMS during initialization. Each device driver may contain the
following entry points: following entry points:
@ -59,8 +59,8 @@ following entry points:
If the device driver does not support a particular If the device driver does not support a particular
entry point, then that entry in the Configuration Table should entry point, then that entry in the Configuration Table should
be NULL. RTEMS will return``RTEMS_SUCCESSFUL`` as the executives and be NULL. RTEMS will return``RTEMS_SUCCESSFUL`` as the executive's and
zero (0) as the device drivers return code for these device zero (0) as the device driver's return code for these device
driver entry points. driver entry points.
Applications can register and unregister drivers with the RTEMS I/O Applications can register and unregister drivers with the RTEMS I/O
@ -75,9 +75,9 @@ Major and Minor Device Numbers
.. index:: major device number .. index:: major device number
.. index:: minor device number .. index:: minor device number
Each call to the I/O manager must provide a devices Each call to the I/O manager must provide a device's
major and minor numbers as arguments. The major number is the major and minor numbers as arguments. The major number is the
index of the requested drivers entry points in the Device index of the requested driver's entry points in the Device
Driver Table, and is used to select a specific device driver. Driver Table, and is used to select a specific device driver.
The exact usage of the minor number is driver specific, but is The exact usage of the minor number is driver specific, but is
commonly used to distinguish between a number of devices commonly used to distinguish between a number of devices
@ -224,8 +224,8 @@ and the underlying device driver entry points.
Directives Directives
========== ==========
This section details the I/O managers directives. A This section details the I/O manager's directives. A
subsection is dedicated to each of this managers directives and subsection is dedicated to each of this manager's directives and
describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage, and
status codes. status codes.
@ -258,7 +258,7 @@ IO_REGISTER_DRIVER - Register a device driver
This directive attempts to add a new device driver to the Device Driver This directive attempts to add a new device driver to the Device Driver
Table. The user can specify a specific major device number via the Table. The user can specify a specific major device number via the
directives ``major`` parameter, or let the registration routine find directive's ``major`` parameter, or let the registration routine find
the next available major device number by specifing a major number of``0``. The selected major device number is returned via the``registered_major`` directive parameter. The directive automatically the next available major device number by specifing a major number of``0``. The selected major device number is returned via the``registered_major`` directive parameter. The directive automatically
allocation major device numbers from the highest value down. allocation major device numbers from the highest value down.

View File

@ -26,10 +26,10 @@ re-usable "building block" routines.
All objects are created on the local node as required All objects are created on the local node as required
by the application and have an RTEMS assigned ID. All objects by the application and have an RTEMS assigned ID. All objects
have a user-assigned name. Although a relationship exists have a user-assigned name. Although a relationship exists
between an objects name and its RTEMS assigned ID, the name and between an object's name and its RTEMS assigned ID, the name and
ID are not identical. Object names are completely arbitrary and ID are not identical. Object names are completely arbitrary and
selected by the user as a meaningful "tag" which may commonly selected by the user as a meaningful "tag" which may commonly
reflect the objects use in the application. Conversely, object reflect the object's use in the application. Conversely, object
IDs are designed to facilitate efficient object manipulation by IDs are designed to facilitate efficient object manipulation by
the executive. the executive.
@ -149,7 +149,7 @@ Object ID Description
The components of an object ID make it possible The components of an object ID make it possible
to quickly locate any object in even the most complicated to quickly locate any object in even the most complicated
multiprocessor system. Object IDs are associated with an multiprocessor system. Object ID's are associated with an
object by RTEMS when the object is created and the corresponding object by RTEMS when the object is created and the corresponding
ID is returned by the appropriate object create directive. The ID is returned by the appropriate object create directive. The
object ID is required as input to all directives involving object ID is required as input to all directives involving
@ -157,7 +157,7 @@ objects, except those which create an object or obtain the ID of
an object. an object.
The object identification directives can be used to The object identification directives can be used to
dynamically obtain a particular objects ID given its name. dynamically obtain a particular object's ID given its name.
This mapping is accomplished by searching the name table This mapping is accomplished by searching the name table
associated with this object type. If the name is non-unique, associated with this object type. If the name is non-unique,
then the ID associated with the first occurrence of the name then the ID associated with the first occurrence of the name
@ -190,10 +190,10 @@ as follows:.. index:: obtaining class from object ID
An object control block is a data structure defined An object control block is a data structure defined
by RTEMS which contains the information necessary to manage a by RTEMS which contains the information necessary to manage a
particular object type. For efficiency reasons, the format of particular object type. For efficiency reasons, the format of
each object types control block is different. However, many of each object type's control block is different. However, many of
the fields are similar in function. The number of each type of the fields are similar in function. The number of each type of
control block is application dependent and determined by the control block is application dependent and determined by the
values specified in the users Configuration Table. An object values specified in the user's Configuration Table. An object
control block is allocated at object create time and freed when control block is allocated at object create time and freed when
the object is deleted. With the exception of user extension the object is deleted. With the exception of user extension
routines, object control blocks are not directly manipulated by routines, object control blocks are not directly manipulated by
@ -220,7 +220,7 @@ Most RTEMS managers can be used to provide some form
of communication and/or synchronization. However, managers of communication and/or synchronization. However, managers
dedicated specifically to communication and synchronization dedicated specifically to communication and synchronization
provide well established mechanisms which directly map to the provide well established mechanisms which directly map to the
applications varying needs. This level of flexibility allows application's varying needs. This level of flexibility allows
the application designer to match the features of a particular the application designer to match the features of a particular
manager with the complexity of communication and synchronization manager with the complexity of communication and synchronization
required. The following managers were specifically designed for required. The following managers were specifically designed for
@ -276,9 +276,9 @@ the clock granularity is large.
The rate monotonic scheduling algorithm is a hard The rate monotonic scheduling algorithm is a hard
real-time scheduling methodology. This methodology provides real-time scheduling methodology. This methodology provides
rules which allows one to guarantee that a set of independent rules which allows one to guarantee that a set of independent
periodic tasks will always meet their deadlines even under periodic tasks will always meet their deadlines - even under
transient overload conditions. The rate monotonic manager transient overload conditions. The rate monotonic manager
provides directives built upon the Clock Managers interval provides directives built upon the Clock Manager's interval
timer support routines. timer support routines.
Interval timing is not sufficient for the many Interval timing is not sufficient for the many
@ -286,7 +286,7 @@ applications which require that time be kept in wall time or
true calendar form. Consequently, RTEMS maintains the current true calendar form. Consequently, RTEMS maintains the current
date and time. This allows selected time operations to be date and time. This allows selected time operations to be
scheduled at an actual calendar date and time. For example, a scheduled at an actual calendar date and time. For example, a
task could request to delay until midnight on New Years Eve task could request to delay until midnight on New Year's Eve
before lowering the ball at Times Square. before lowering the ball at Times Square.
The data type ``rtems_time_of_day`` is used to specify The data type ``rtems_time_of_day`` is used to specify
calendar time in RTEMS services. calendar time in RTEMS services.
@ -307,7 +307,7 @@ RTEMS memory management facilities can be grouped
into two classes: dynamic memory allocation and address into two classes: dynamic memory allocation and address
translation. Dynamic memory allocation is required by translation. Dynamic memory allocation is required by
applications whose memory requirements vary through the applications whose memory requirements vary through the
applications course of execution. Address translation is application's course of execution. Address translation is
needed by applications which share memory with another CPU or an needed by applications which share memory with another CPU or an
intelligent Input/Output processor. The following RTEMS intelligent Input/Output processor. The following RTEMS
managers provide facilities to manage memory: managers provide facilities to manage memory:

View File

@ -152,7 +152,7 @@ Receiving a Message
The ``rtems_message_queue_receive`` directive attempts to The ``rtems_message_queue_receive`` directive attempts to
retrieve a message from the specified message queue. If at retrieve a message from the specified message queue. If at
least one message is in the queue, then the message is removed least one message is in the queue, then the message is removed
from the queue, copied to the callers message buffer, and from the queue, copied to the caller's message buffer, and
returned immediately along with the length of the message. When returned immediately along with the length of the message. When
messages are unavailable, one of the following situations messages are unavailable, one of the following situations
applies: applies:
@ -167,7 +167,7 @@ applies:
wait before returning with an error status. wait before returning with an error status.
If the task waits for a message, then it is placed in If the task waits for a message, then it is placed in
the message queues task wait queue in either FIFO or task the message queue's task wait queue in either FIFO or task
priority order. All tasks waiting on a message queue are priority order. All tasks waiting on a message queue are
returned an error code when the message queue is deleted. returned an error code when the message queue is deleted.
@ -177,13 +177,13 @@ Sending a Message
Messages can be sent to a queue with the``rtems_message_queue_send`` and``rtems_message_queue_urgent`` directives. These Messages can be sent to a queue with the``rtems_message_queue_send`` and``rtems_message_queue_urgent`` directives. These
directives work identically when tasks are waiting to receive a directives work identically when tasks are waiting to receive a
message. A task is removed from the task waiting queue, message. A task is removed from the task waiting queue,
unblocked, and the message is copied to a waiting tasks unblocked, and the message is copied to a waiting task's
message buffer. message buffer.
When no tasks are waiting at the queue,``rtems_message_queue_send`` places the When no tasks are waiting at the queue,``rtems_message_queue_send`` places the
message at the rear of the message queue, while``rtems_message_queue_urgent`` places the message at the message at the rear of the message queue, while``rtems_message_queue_urgent`` places the message at the
front of the queue. The message is copied to a message buffer front of the queue. The message is copied to a message buffer
from this message queues buffer pool and then placed in the from this message queue's buffer pool and then placed in the
message queue. Neither directive can successfully send a message queue. Neither directive can successfully send a
message to a message queue which has a full queue of pending message to a message queue which has a full queue of pending
messages. messages.
@ -194,7 +194,7 @@ Broadcasting a Message
The ``rtems_message_queue_broadcast`` directive sends the same The ``rtems_message_queue_broadcast`` directive sends the same
message to every task waiting on the specified message queue as message to every task waiting on the specified message queue as
an atomic operation. The message is copied to each waiting an atomic operation. The message is copied to each waiting
tasks message buffer and each task is unblocked. The number of task's message buffer and each task is unblocked. The number of
tasks which were unblocked is returned to the caller. tasks which were unblocked is returned to the caller.
Deleting a Message Queue Deleting a Message Queue
@ -202,20 +202,20 @@ Deleting a Message Queue
The ``rtems_message_queue_delete`` directive removes a message The ``rtems_message_queue_delete`` directive removes a message
queue from the system and frees its control block as well as the queue from the system and frees its control block as well as the
memory associated with this message queues message buffer pool. memory associated with this message queue's message buffer pool.
A message queue can be deleted by any local task that knows the A message queue can be deleted by any local task that knows the
message queues ID. As a result of this directive, all tasks message queue's ID. As a result of this directive, all tasks
blocked waiting to receive a message from the message queue will blocked waiting to receive a message from the message queue will
be readied and returned a status code which indicates that the be readied and returned a status code which indicates that the
message queue was deleted. Any subsequent references to the message queue was deleted. Any subsequent references to the
message queues name and ID are invalid. Any messages waiting message queue's name and ID are invalid. Any messages waiting
at the message queue are also deleted and deallocated. at the message queue are also deleted and deallocated.
Directives Directives
========== ==========
This section details the message managers This section details the message manager's
directives. A subsection is dedicated to each of this managers directives. A subsection is dedicated to each of this manager's
directives and describes the calling sequence, related directives and describes the calling sequence, related
constants, usage, and status codes. constants, usage, and status codes.
@ -284,7 +284,7 @@ Message queues should not be made global unless
remote tasks must interact with the created message queue. This remote tasks must interact with the created message queue. This
is to avoid the system overhead incurred by the creation of a is to avoid the system overhead incurred by the creation of a
global message queue. When a global message queue is created, global message queue. When a global message queue is created,
the message queues name and id must be transmitted to every the message queue's name and id must be transmitted to every
node in the system for insertion in the local copy of the global node in the system for insertion in the local copy of the global
object table. object table.
@ -422,16 +422,16 @@ MESSAGE_QUEUE_SEND - Put message at rear of a queue
``RTEMS_INVALID_SIZE`` - invalid message size ``RTEMS_INVALID_SIZE`` - invalid message size
``RTEMS_INVALID_ADDRESS`` - ``buffer`` is NULL ``RTEMS_INVALID_ADDRESS`` - ``buffer`` is NULL
``RTEMS_UNSATISFIED`` - out of message buffers ``RTEMS_UNSATISFIED`` - out of message buffers
``RTEMS_TOO_MANY`` - queues limit has been reached ``RTEMS_TOO_MANY`` - queue's limit has been reached
**DESCRIPTION:** **DESCRIPTION:**
This directive sends the message buffer of size bytes This directive sends the message buffer of size bytes
in length to the queue specified by id. If a task is waiting at in length to the queue specified by id. If a task is waiting at
the queue, then the message is copied to the waiting tasks the queue, then the message is copied to the waiting task's
buffer and the task is unblocked. If no tasks are waiting at the buffer and the task is unblocked. If no tasks are waiting at the
queue, then the message is copied to a message buffer which is queue, then the message is copied to a message buffer which is
obtained from this message queues message buffer pool. The obtained from this message queue's message buffer pool. The
message buffer is then placed at the rear of the queue. message buffer is then placed at the rear of the queue.
**NOTES:** **NOTES:**
@ -472,16 +472,16 @@ MESSAGE_QUEUE_URGENT - Put message at front of a queue
``RTEMS_INVALID_SIZE`` - invalid message size ``RTEMS_INVALID_SIZE`` - invalid message size
``RTEMS_INVALID_ADDRESS`` - ``buffer`` is NULL ``RTEMS_INVALID_ADDRESS`` - ``buffer`` is NULL
``RTEMS_UNSATISFIED`` - out of message buffers ``RTEMS_UNSATISFIED`` - out of message buffers
``RTEMS_TOO_MANY`` - queues limit has been reached ``RTEMS_TOO_MANY`` - queue's limit has been reached
**DESCRIPTION:** **DESCRIPTION:**
This directive sends the message buffer of size bytes This directive sends the message buffer of size bytes
in length to the queue specified by id. If a task is waiting on in length to the queue specified by id. If a task is waiting on
the queue, then the message is copied to the tasks buffer and the queue, then the message is copied to the task's buffer and
the task is unblocked. If no tasks are waiting on the queue, the task is unblocked. If no tasks are waiting on the queue,
then the message is copied to a message buffer which is obtained then the message is copied to a message buffer which is obtained
from this message queues message buffer pool. The message from this message queue's message buffer pool. The message
buffer is then placed at the front of the queue. buffer is then placed at the front of the queue.
**NOTES:** **NOTES:**
@ -530,7 +530,7 @@ MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue
This directive causes all tasks that are waiting at This directive causes all tasks that are waiting at
the queue specified by id to be unblocked and sent the message the queue specified by id to be unblocked and sent the message
contained in buffer. Before a task is unblocked, the message contained in buffer. Before a task is unblocked, the message
buffer of size byes in length is copied to that tasks message buffer of size byes in length is copied to that task's message
buffer. The number of tasks that were unblocked is returned in buffer. The number of tasks that were unblocked is returned in
count. count.

View File

@ -45,7 +45,7 @@ Background
RTEMS makes no assumptions regarding the connection RTEMS makes no assumptions regarding the connection
media or topology of a multiprocessor system. The tasks which media or topology of a multiprocessor system. The tasks which
compose a particular application can be spread among as many compose a particular application can be spread among as many
processors as needed to satisfy the applications timing processors as needed to satisfy the application's timing
requirements. The application tasks can interact using a subset requirements. The application tasks can interact using a subset
of the RTEMS directives as if they were on the same processor. of the RTEMS directives as if they were on the same processor.
These directives allow application tasks to exchange data, These directives allow application tasks to exchange data,
@ -198,9 +198,9 @@ Proxies
A proxy is an RTEMS data structure which resides on a A proxy is an RTEMS data structure which resides on a
remote node and is used to represent a task which must block as remote node and is used to represent a task which must block as
part of a remote operation. This action can occur as part of the``rtems_semaphore_obtain`` and``rtems_message_queue_receive`` directives. If the part of a remote operation. This action can occur as part of the``rtems_semaphore_obtain`` and``rtems_message_queue_receive`` directives. If the
object were local, the tasks control block would be available object were local, the task's control block would be available
for modification to indicate it was blocking on a message queue for modification to indicate it was blocking on a message queue
or semaphore. However, the tasks control block resides only on or semaphore. However, the task's control block resides only on
the same node as the task. As a result, the remote node must the same node as the task. As a result, the remote node must
allocate a proxy to represent the task until it can be readied. allocate a proxy to represent the task until it can be readied.
@ -241,7 +241,7 @@ packet within an envelope which contains the information needed
by the MPCI layer. The number of packets available is dependent by the MPCI layer. The number of packets available is dependent
on the MPCI layer implementation... index:: MPCI entry points on the MPCI layer implementation... index:: MPCI entry points
The entry points to the routines in the users MPCI The entry points to the routines in the user's MPCI
layer should be placed in the Multiprocessor Communications layer should be placed in the Multiprocessor Communications
Interface Table. The user must provide entry points for each of Interface Table. The user must provide entry points for each of
the following table entries in a multiprocessor system: the following table entries in a multiprocessor system:
@ -296,7 +296,7 @@ following prototype:.. index:: rtems_mpci_entry
rtems_configuration_table \*configuration rtems_configuration_table \*configuration
); );
where configuration is the address of the users where configuration is the address of the user's
Configuration Table. Operations on global objects cannot be Configuration Table. Operations on global objects cannot be
performed until this component is invoked. The INITIALIZATION performed until this component is invoked. The INITIALIZATION
component is invoked only once in the life of any system. If component is invoked only once in the life of any system. If
@ -455,7 +455,7 @@ Other issues which commonly impact the design of
shared data structures include the representation of floating shared data structures include the representation of floating
point numbers, bit fields, decimal data, and character strings. point numbers, bit fields, decimal data, and character strings.
In addition, the representation method for negative integers In addition, the representation method for negative integers
could be ones or twos complement. These factors combine to could be one's or two's complement. These factors combine to
increase the complexity of designing and manipulating data increase the complexity of designing and manipulating data
structures shared between processors. structures shared between processors.
@ -495,7 +495,7 @@ Directives
This section details the additional directives This section details the additional directives
required to support RTEMS in a multiprocessor configuration. A required to support RTEMS in a multiprocessor configuration. A
subsection is dedicated to each of this managers directives and subsection is dedicated to each of this manager's directives and
describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage, and
status codes. status codes.

View File

@ -270,7 +270,7 @@ that is created. Thus the more RTEMS objects an application
needs, the more memory that must be reserved. See `Configuring a System`_. needs, the more memory that must be reserved. See `Configuring a System`_.
RTEMS utilizes memory for both code and data space. RTEMS utilizes memory for both code and data space.
Although RTEMS data space must be in RAM, its code space can be Although RTEMS' data space must be in RAM, its code space can be
located in either ROM or RAM. located in either ROM or RAM.
Audience Audience
@ -288,9 +288,9 @@ understand the material presented. However, because of the
similarity of the Ada and C RTEMS implementations, users will similarity of the Ada and C RTEMS implementations, users will
find that the use and behavior of the two implementations is find that the use and behavior of the two implementations is
very similar. A working knowledge of the target processor is very similar. A working knowledge of the target processor is
helpful in understanding some of RTEMS features. A thorough helpful in understanding some of RTEMS' features. A thorough
understanding of the executive cannot be obtained without understanding of the executive cannot be obtained without
studying the entire manual because many of RTEMS concepts and studying the entire manual because many of RTEMS' concepts and
features are interrelated. Experienced RTEMS users will find features are interrelated. Experienced RTEMS users will find
that the manual organization facilitates its use as a reference that the manual organization facilitates its use as a reference
document. document.
@ -450,7 +450,7 @@ Chapter 26:
Chapter 27: Chapter 27:
Object Services: presents a collection of helper services useful Object Services: presents a collection of helper services useful
when manipulating RTEMS objects. These include methods to assist when manipulating RTEMS objects. These include methods to assist
in obtaining an objects name in printable form. Additional services in obtaining an object's name in printable form. Additional services
are provided to decompose an object Id and determine which API are provided to decompose an object Id and determine which API
and object class it belongs to. and object class it belongs to.

View File

@ -32,7 +32,7 @@ divided into fixed-size buffers that can be dynamically
allocated and deallocated... index:: buffers, definition allocated and deallocated... index:: buffers, definition
Partitions are managed and maintained as a list of Partitions are managed and maintained as a list of
buffers. Buffers are obtained from the front of the partitions buffers. Buffers are obtained from the front of the partition's
free buffer chain and returned to the rear of the same chain. free buffer chain and returned to the rear of the same chain.
When a buffer is on the free buffer chain, RTEMS uses two When a buffer is on the free buffer chain, RTEMS uses two
pointers of memory from each buffer as the free buffer chain. pointers of memory from each buffer as the free buffer chain.
@ -70,7 +70,7 @@ Creating a Partition
-------------------- --------------------
The ``rtems_partition_create`` directive creates a partition The ``rtems_partition_create`` directive creates a partition
with a user-specified name. The partitions name, starting with a user-specified name. The partition's name, starting
address, length and buffer size are all specified to the``rtems_partition_create`` directive. address, length and buffer size are all specified to the``rtems_partition_create`` directive.
RTEMS allocates a Partition Control RTEMS allocates a Partition Control
Block (PTCB) from the PTCB free list. This data structure is Block (PTCB) from the PTCB free list. This data structure is
@ -104,7 +104,7 @@ become available.
Releasing a Buffer Releasing a Buffer
------------------ ------------------
Buffers are returned to a partitions free buffer Buffers are returned to a partition's free buffer
chain with the ``rtems_partition_return_buffer`` directive. This chain with the ``rtems_partition_return_buffer`` directive. This
directive returns an error status code if the returned buffer directive returns an error status code if the returned buffer
was not previously allocated from this partition. was not previously allocated from this partition.
@ -121,8 +121,8 @@ task attempting to do so will be returned an error status code.
Directives Directives
========== ==========
This section details the partition managers This section details the partition manager's
directives. A subsection is dedicated to each of this managers directives. A subsection is dedicated to each of this manager's
directives and describes the calling sequence, related directives and describes the calling sequence, related
constants, usage, and status codes. constants, usage, and status codes.
@ -199,7 +199,7 @@ local node. The memory space used for the partition must reside
in shared memory. Partitions should not be made global unless in shared memory. Partitions should not be made global unless
remote tasks must interact with the partition. This is to avoid remote tasks must interact with the partition. This is to avoid
the overhead incurred by the creation of a global partition. the overhead incurred by the creation of a global partition.
When a global partition is created, the partitions name and id When a global partition is created, the partition's name and id
must be transmitted to every node in the system for insertion in must be transmitted to every node in the system for insertion in
the local copy of the global object table. the local copy of the global object table.

View File

@ -240,7 +240,7 @@ Peripheral Configuration
On systems where a peripheral PCI device needs to access other PCI devices than On systems where a peripheral PCI device needs to access other PCI devices than
the host the peripheral configuration approach may be handy. Most PCI devices the host the peripheral configuration approach may be handy. Most PCI devices
answers on the PCI hosts requests and start DMA accesses into the Hosts memory, answers on the PCI host's requests and start DMA accesses into the Hosts memory,
however in some complex systems PCI devices may want to access other devices however in some complex systems PCI devices may want to access other devices
on the same bus or at another PCI bus. on the same bus or at another PCI bus.
@ -420,7 +420,7 @@ use the standard RTEMS interrupt functions directly.
PCI Shell command PCI Shell command
----------------- -----------------
The RTEMS shell has a PCI command pci which makes it possible to read/write The RTEMS shell has a PCI command 'pci' which makes it possible to read/write
configuration space, print the current PCI configuration and print out a configuration space, print the current PCI configuration and print out a
configuration C-file for the static or peripheral library. configuration C-file for the static or peripheral library.

View File

@ -45,7 +45,7 @@ multiple real-time executive implementations. This interface
includes both the source code interfaces and run-time behavior includes both the source code interfaces and run-time behavior
as seen by a real-time application. It does not include the as seen by a real-time application. It does not include the
details of how a kernel implements these functions. The details of how a kernel implements these functions. The
standards goal is to serve as a complete definition of external standard's goal is to serve as a complete definition of external
interfaces so that application code that conforms to these interfaces so that application code that conforms to these
interfaces will execute properly in all real-time executive interfaces will execute properly in all real-time executive
environments. With the use of a standards compliant executive, environments. With the use of a standards compliant executive,
@ -68,8 +68,8 @@ of which processor the object and the accessing task reside.
The acceptance of a standard for real-time executives The acceptance of a standard for real-time executives
will produce the same advantages enjoyed from the push for UNIX will produce the same advantages enjoyed from the push for UNIX
standardization by AT&Ts System V Interface Definition and standardization by AT&T's System V Interface Definition and
IEEEs POSIX efforts. A compliant multiprocessing executive IEEE's POSIX efforts. A compliant multiprocessing executive
will allow close coupling between UNIX systems and real-time will allow close coupling between UNIX systems and real-time
executives to provide the many benefits of the UNIX development executives to provide the many benefits of the UNIX development
environment to be applied to real-time software development. environment to be applied to real-time software development.

View File

@ -115,11 +115,11 @@ and it averaged 11 milliseconds, then application requirements
are not being met. are not being met.
The information reported can be used to determine the "hot spots" The information reported can be used to determine the "hot spots"
in the application. Given a periods id, the user can determine in the application. Given a period's id, the user can determine
the length of that period. From that information and the CPU usage, the length of that period. From that information and the CPU usage,
the user can calculate the percentage of CPU time consumed by that the user can calculate the percentage of CPU time consumed by that
periodic task. For example, a task executing for 20 milliseconds periodic task. For example, a task executing for 20 milliseconds
every 200 milliseconds is consuming 10 percent of the processors every 200 milliseconds is consuming 10 percent of the processor's
execution time. This is usually enough to make it a good candidate execution time. This is usually enough to make it a good candidate
for optimization. for optimization.
@ -142,9 +142,9 @@ characterized by the length of their period and execution time.
The period and execution time of a task can be used to determine The period and execution time of a task can be used to determine
the processor utilization for that task. Processor utilization the processor utilization for that task. Processor utilization
is the percentage of processor time used and can be calculated is the percentage of processor time used and can be calculated
on a per-task or system-wide basis. Typically, the tasks on a per-task or system-wide basis. Typically, the task's
worst-case execution time will be less than its period. For worst-case execution time will be less than its period. For
example, a periodic tasks requirements may state that it should example, a periodic task's requirements may state that it should
execute for 10 milliseconds every 100 milliseconds. Although execute for 10 milliseconds every 100 milliseconds. Although
the execution time may be the average, worst, or best case, the the execution time may be the average, worst, or best case, the
worst-case execution time is more appropriate for use when worst-case execution time is more appropriate for use when
@ -178,7 +178,7 @@ deadlines. RMS provides a set of rules which can be used to
perform a guaranteed schedulability analysis for a task set. perform a guaranteed schedulability analysis for a task set.
This analysis determines whether a task set is schedulable under This analysis determines whether a task set is schedulable under
worst-case conditions and emphasizes the predictability of the worst-case conditions and emphasizes the predictability of the
systems behavior. It has been proven that: system's behavior. It has been proven that:
- *RMS is an optimal static priority algorithm for - *RMS is an optimal static priority algorithm for
scheduling independent, preemptible, periodic tasks scheduling independent, preemptible, periodic tasks
@ -191,13 +191,13 @@ analysis on the processor utilization level below which all
deadlines can be met. deadlines can be met.
RMS calls for the static assignment of task RMS calls for the static assignment of task
priorities based upon their period. The shorter a tasks priorities based upon their period. The shorter a task's
period, the higher its priority. For example, a task with a 1 period, the higher its priority. For example, a task with a 1
millisecond period has higher priority than a task with a 100 millisecond period has higher priority than a task with a 100
millisecond period. If two tasks have the same period, then RMS millisecond period. If two tasks have the same period, then RMS
does not distinguish between the tasks. However, RTEMS does not distinguish between the tasks. However, RTEMS
specifies that when given tasks of equal priority, the task specifies that when given tasks of equal priority, the task
which has been ready longest will execute first. RMSs priority which has been ready longest will execute first. RMS's priority
assignment scheme does not provide one with exact numeric values assignment scheme does not provide one with exact numeric values
for task priorities. For example, consider the following task for task priorities. For example, consider the following task
set and priority assignments: set and priority assignments:
@ -345,7 +345,7 @@ quite easy to ensure. By having a non-preemptible user
initialization task, all application tasks, regardless of initialization task, all application tasks, regardless of
priority, can be created and started before the initialization priority, can be created and started before the initialization
deletes itself. This technique ensures that all tasks begin to deletes itself. This technique ensures that all tasks begin to
compete for execution time at the same instant when the user compete for execution time at the same instant - when the user
initialization task deletes itself. initialization task deletes itself.
First Deadline Rule Example First Deadline Rule Example
@ -426,7 +426,7 @@ Another assumption is that the tasks are independent.
This means that the tasks do not wait for one another or This means that the tasks do not wait for one another or
contend for resources. This assumption can be relaxed by contend for resources. This assumption can be relaxed by
accounting for the amount of time a task spends waiting to accounting for the amount of time a task spends waiting to
acquire resources. Similarly, each tasks execution time must acquire resources. Similarly, each task's execution time must
account for any I/O performed and any RTEMS directive calls. account for any I/O performed and any RTEMS directive calls.
In addition, the assumptions did not account for the In addition, the assumptions did not account for the
@ -517,7 +517,7 @@ Obtaining the Status of a Period
If the ``rtems_rate_monotonic_period`` directive is invoked If the ``rtems_rate_monotonic_period`` directive is invoked
with a period of ``RTEMS_PERIOD_STATUS`` ticks, the current with a period of ``RTEMS_PERIOD_STATUS`` ticks, the current
state of the specified rate monotonic period will be returned. The following state of the specified rate monotonic period will be returned. The following
table details the relationship between the periods status and table details the relationship between the period's status and
the directive status code returned by the``rtems_rate_monotonic_period`` the directive status code returned by the``rtems_rate_monotonic_period``
directive: directive:
@ -544,7 +544,7 @@ Deleting a Rate Monotonic Period
The ``rtems_rate_monotonic_delete`` directive is used to delete The ``rtems_rate_monotonic_delete`` directive is used to delete
a rate monotonic period. If the period is running and has not a rate monotonic period. If the period is running and has not
expired, the period is automatically canceled. The rate expired, the period is automatically canceled. The rate
monotonic periods control block is returned to the PCB free monotonic period's control block is returned to the PCB free
list when it is deleted. A rate monotonic period can be deleted list when it is deleted. A rate monotonic period can be deleted
by a task other than the task which created the period. by a task other than the task which created the period.
@ -674,8 +674,8 @@ will delete the rate monotonic periods and itself.
Directives Directives
========== ==========
This section details the rate monotonic managers This section details the rate monotonic manager's
directives. A subsection is dedicated to each of this managers directives. A subsection is dedicated to each of this manager's
directives and describes the calling sequence, related directives and describes the calling sequence, related
constants, usage, and status codes. constants, usage, and status codes.
@ -899,7 +899,7 @@ the rate monotonic period id in the following data structure:.. index:: rtems_ra
A configure time option can be used to select whether the time information is A configure time option can be used to select whether the time information is
given in ticks or seconds and nanoseconds. The default is seconds and given in ticks or seconds and nanoseconds. The default is seconds and
nanoseconds. If the periods state is ``RATE_MONOTONIC_INACTIVE``, both nanoseconds. If the period's state is ``RATE_MONOTONIC_INACTIVE``, both
time values will be set to 0. Otherwise, both time values will contain time values will be set to 0. Otherwise, both time values will contain
time information since the last invocation of the``rtems_rate_monotonic_period`` directive. More time information since the last invocation of the``rtems_rate_monotonic_period`` directive. More
specifically, the ticks_since_last_period value contains the elapsed time specifically, the ticks_since_last_period value contains the elapsed time

View File

@ -21,21 +21,21 @@ heap memory. The Red-Black Tree API provided by RTEMS is:
- ``rtems_rtems_rbtree_initialize_empty`` - initialize the red-black tree as empty - ``rtems_rtems_rbtree_initialize_empty`` - initialize the red-black tree as empty
- ``rtems_rtems_rbtree_set_off_tree`` - Clear a nodes links - ``rtems_rtems_rbtree_set_off_tree`` - Clear a node's links
- ``rtems_rtems_rbtree_root`` - Return the red-black trees root node - ``rtems_rtems_rbtree_root`` - Return the red-black tree's root node
- ``rtems_rtems_rbtree_min`` - Return the red-black trees minimum node - ``rtems_rtems_rbtree_min`` - Return the red-black tree's minimum node
- ``rtems_rtems_rbtree_max`` - Return the red-black trees maximum node - ``rtems_rtems_rbtree_max`` - Return the red-black tree's maximum node
- ``rtems_rtems_rbtree_left`` - Return a nodes left child node - ``rtems_rtems_rbtree_left`` - Return a node's left child node
- ``rtems_rtems_rbtree_right`` - Return a nodes right child node - ``rtems_rtems_rbtree_right`` - Return a node's right child node
- ``rtems_rtems_rbtree_parent`` - Return a nodes parent node - ``rtems_rtems_rbtree_parent`` - Return a node's parent node
- ``rtems_rtems_rbtree_are_nodes_equal`` - Are the nodes equal ? - ``rtems_rtems_rbtree_are_nodes_equal`` - Are the node's equal ?
- ``rtems_rtems_rbtree_is_empty`` - Is the red-black tree empty ? - ``rtems_rtems_rbtree_is_empty`` - Is the red-black tree empty ?
@ -85,8 +85,8 @@ A red-black tree is made up from nodes that orginate from a red-black tree contr
object. A node is of type ``rtems_rtems_rbtree_node``. The node object. A node is of type ``rtems_rtems_rbtree_node``. The node
is designed to be part of a user data structure. To obtain the encapsulating is designed to be part of a user data structure. To obtain the encapsulating
structure users can use the ``RTEMS_CONTAINER_OF`` macro. structure users can use the ``RTEMS_CONTAINER_OF`` macro.
The node can be placed anywhere within the users structure and the macro will The node can be placed anywhere within the user's structure and the macro will
calculate the structures address from the nodes address. calculate the structure's address from the node's address.
Controls Controls
-------- --------

View File

@ -47,12 +47,12 @@ Regions are organized as doubly linked chains of
variable sized memory blocks. Memory requests are allocated variable sized memory blocks. Memory requests are allocated
using a first-fit algorithm. If available, the requester using a first-fit algorithm. If available, the requester
receives the number of bytes requested (rounded up to the next receives the number of bytes requested (rounded up to the next
page size). RTEMS requires some overhead from the regions page size). RTEMS requires some overhead from the region's
memory for each segment that is allocated. Therefore, an memory for each segment that is allocated. Therefore, an
application should only modify the memory of a segment that has application should only modify the memory of a segment that has
been obtained from the region. The application should NOT been obtained from the region. The application should NOT
modify the memory outside of any obtained segments and within modify the memory outside of any obtained segments and within
the regions boundaries while the region is currently active in the region's boundaries while the region is currently active in
the system. the system.
Upon return to the region, the free block is Upon return to the region, the free block is
@ -178,7 +178,7 @@ following situations applies:
wait before returning with an error status code. wait before returning with an error status code.
If the task waits for the segment, then it is placed If the task waits for the segment, then it is placed
in the regions task wait queue in either FIFO or task priority in the region's task wait queue in either FIFO or task priority
order. All tasks waiting on a region are returned an error when order. All tasks waiting on a region are returned an error when
the message queue is deleted. the message queue is deleted.
@ -190,7 +190,7 @@ unallocated neighbors to form the largest possible segment. The
first task on the wait queue is examined to determine if its first task on the wait queue is examined to determine if its
segment request can now be satisfied. If so, it is given a segment request can now be satisfied. If so, it is given a
segment and unblocked. This process is repeated until the first segment and unblocked. This process is repeated until the first
tasks segment request cannot be satisfied. task's segment request cannot be satisfied.
Obtaining the Size of a Segment Obtaining the Size of a Segment
------------------------------- -------------------------------
@ -226,8 +226,8 @@ a status code which indicates that the region was deleted.
Directives Directives
========== ==========
This section details the region managers directives. This section details the region manager's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.
@ -448,7 +448,7 @@ If the calling task chooses to return immediately and
a segment large enough is not available, then an error code a segment large enough is not available, then an error code
indicating this fact is returned. If the calling task chooses indicating this fact is returned. If the calling task chooses
to wait for the segment and a segment large enough is not to wait for the segment and a segment large enough is not
available, then the calling task is placed on the regions available, then the calling task is placed on the region's
segment wait queue and blocked. If the region was created with segment wait queue and blocked. If the region was created with
the ``RTEMS_PRIORITY`` option, then the calling the ``RTEMS_PRIORITY`` option, then the calling
task is inserted into the task is inserted into the
@ -465,7 +465,7 @@ calling task will wait forever.
The actual length of the allocated segment may be The actual length of the allocated segment may be
larger than the requested size because a segment size is always larger than the requested size because a segment size is always
a multiple of the regions page size. a multiple of the region's page size.
The following segment acquisition option constants The following segment acquisition option constants
are defined by RTEMS: are defined by RTEMS:
@ -507,7 +507,7 @@ merged with its neighbors to form the largest possible segment.
The first task on the wait queue is examined to determine if its The first task on the wait queue is examined to determine if its
segment request can now be satisfied. If so, it is given a segment request can now be satisfied. If so, it is given a
segment and unblocked. This process is repeated until the first segment and unblocked. This process is repeated until the first
tasks segment request cannot be satisfied. task's segment request cannot be satisfied.
**NOTES:** **NOTES:**
@ -552,7 +552,7 @@ This directive obtains the size in bytes of the specified segment.
The actual length of the allocated segment may be The actual length of the allocated segment may be
larger than the requested size because a segment size is always larger than the requested size because a segment size is always
a multiple of the regions page size. a multiple of the region's page size.
REGION_RESIZE_SEGMENT - Change size of a segment REGION_RESIZE_SEGMENT - Change size of a segment
------------------------------------------------ ------------------------------------------------

View File

@ -49,13 +49,13 @@ data types in alphabetical order:
``rtems_context`` is the CPU dependent ``rtems_context`` is the CPU dependent
data structure used to manage the integer and system data structure used to manage the integer and system
register portion of each tasks context. register portion of each task's context.
- .. index:: rtems_context_fp - .. index:: rtems_context_fp
``rtems_context_fp`` is the CPU dependent ``rtems_context_fp`` is the CPU dependent
data structure used to manage the floating point portion of data structure used to manage the floating point portion of
each tasks context. each task's context.
- .. index:: rtems_device_driver - .. index:: rtems_device_driver

View File

@ -12,10 +12,10 @@ provide immediate response to specific external events, particularly
the necessity of scheduling tasks to run within a specified time limit the necessity of scheduling tasks to run within a specified time limit
after the occurrence of an event. For example, software embedded in after the occurrence of an event. For example, software embedded in
life-support systems used to monitor hospital patients must take instant life-support systems used to monitor hospital patients must take instant
action if a change in the patients status is detected. action if a change in the patient's status is detected.
The component of RTEMS responsible for providing this capability is The component of RTEMS responsible for providing this capability is
appropriately called the scheduler. The schedulers sole purpose is appropriately called the scheduler. The scheduler's sole purpose is
to allocate the all important resource of processor time to the various to allocate the all important resource of processor time to the various
tasks competing for attention. tasks competing for attention.
@ -175,7 +175,7 @@ Constant Bandwidth Server Scheduling (CBS)
This is an alternative scheduler in RTEMS for single core applications. This is an alternative scheduler in RTEMS for single core applications.
The CBS is a budget aware extension of EDF scheduler. The main goal of this The CBS is a budget aware extension of EDF scheduler. The main goal of this
scheduler is to ensure temporal isolation of tasks meaning that a tasks scheduler is to ensure temporal isolation of tasks meaning that a task's
execution in terms of meeting deadlines must not be influenced by other execution in terms of meeting deadlines must not be influenced by other
tasks as if they were run on multiple independent processors. tasks as if they were run on multiple independent processors.
@ -232,7 +232,7 @@ Task Priority and Scheduling
The most significant task scheduling modification mechanism is the ability The most significant task scheduling modification mechanism is the ability
for the user to assign a priority level to each individual task when it for the user to assign a priority level to each individual task when it
is created and to alter a tasks priority at run-time. RTEMS supports is created and to alter a task's priority at run-time. RTEMS supports
up to 255 priority levels. Level 255 is the lowest priority and level up to 255 priority levels. Level 255 is the lowest priority and level
1 is the highest. 1 is the highest.
@ -260,7 +260,7 @@ mode flag (``RTEMS_TIMESLICE_MASK``). If timeslicing is
enabled for a task (``RTEMS_TIMESLICE``), then RTEMS will enabled for a task (``RTEMS_TIMESLICE``), then RTEMS will
limit the amount of time the task can execute before the processor is limit the amount of time the task can execute before the processor is
allocated to another task. Each tick of the real-time clock reduces allocated to another task. Each tick of the real-time clock reduces
the currently running tasks timeslice. When the execution time equals the currently running task's timeslice. When the execution time equals
the timeslice, RTEMS will dispatch another task of the same priority the timeslice, RTEMS will dispatch another task of the same priority
to execute. If there are no other tasks of the same priority ready to to execute. If there are no other tasks of the same priority ready to
execute, then the current task is allocated an additional timeslice and execute, then the current task is allocated an additional timeslice and
@ -288,14 +288,14 @@ from the task currently using it. This involves a concept
called a context switch. To perform a context switch, the called a context switch. To perform a context switch, the
dispatcher saves the context of the current task and restores dispatcher saves the context of the current task and restores
the context of the task which has been allocated to the the context of the task which has been allocated to the
processor. Saving and restoring a tasks context is the processor. Saving and restoring a task's context is the
storing/loading of all the essential information about a task to storing/loading of all the essential information about a task to
enable it to continue execution without any effects of the enable it to continue execution without any effects of the
interruption. For example, the contents of a tasks register interruption. For example, the contents of a task's register
set must be the same when it is given the processor as they were set must be the same when it is given the processor as they were
when it was taken away. All of the information that must be when it was taken away. All of the information that must be
saved or restored for a context switch is located either in the saved or restored for a context switch is located either in the
TCB or on the tasks stacks. TCB or on the task's stacks.
Tasks that utilize a numeric coprocessor and are created with the``RTEMS_FLOATING_POINT`` attribute require additional Tasks that utilize a numeric coprocessor and are created with the``RTEMS_FLOATING_POINT`` attribute require additional
operations during a context switch. These additional operations operations during a context switch. These additional operations
@ -394,7 +394,7 @@ A task enters the blocked state due to any of the following conditions:
- The running task issues a ``rtems_region_get_segment`` - The running task issues a ``rtems_region_get_segment``
directive with the wait option and there is not an available segment large directive with the wait option and there is not an available segment large
enough to satisfy the tasks request. enough to satisfy the task's request.
A blocked task may also be suspended. Therefore, both the suspension A blocked task may also be suspended. Therefore, both the suspension
and the blocking condition must be removed before the task becomes ready and the blocking condition must be removed before the task becomes ready
@ -432,7 +432,7 @@ to any of the following conditions:
- A running task issues a ``rtems_region_return_segment`` - A running task issues a ``rtems_region_return_segment``
directive which releases a segment to the region on which the blocked task directive which releases a segment to the region on which the blocked task
is waiting and a resulting segment is large enough to satisfy is waiting and a resulting segment is large enough to satisfy
the tasks request. the task's request.
- A rate monotonic period expires for a task which blocked - A rate monotonic period expires for a task which blocked
by a call to the ``rtems_rate_monotonic_period`` directive. by a call to the ``rtems_rate_monotonic_period`` directive.

View File

@ -125,7 +125,7 @@ discipline. When a task of higher priority than the task
holding the semaphore blocks, the priority of the task holding holding the semaphore blocks, the priority of the task holding
the semaphore is increased to that of the blocking task. When the semaphore is increased to that of the blocking task. When
the task holding the task completely releases the binary the task holding the task completely releases the binary
semaphore (i.e. not for a nested release), the holders priority semaphore (i.e. not for a nested release), the holder's priority
is restored to the value it had before any higher priority was is restored to the value it had before any higher priority was
inherited. inherited.
@ -159,7 +159,7 @@ discipline. When a task of lower priority than the ceiling
priority successfully obtains the semaphore, its priority is priority successfully obtains the semaphore, its priority is
raised to the ceiling priority. When the task holding the task raised to the ceiling priority. When the task holding the task
completely releases the binary semaphore (i.e. not for a nested completely releases the binary semaphore (i.e. not for a nested
release), the holders priority is restored to the value it had release), the holder's priority is restored to the value it had
before any higher priority was put into effect. before any higher priority was put into effect.
The need to identify the highest priority task which The need to identify the highest priority task which
@ -298,7 +298,7 @@ initial count. If a binary semaphore is created with a count of
zero (0) to indicate that it has been allocated, then the task zero (0) to indicate that it has been allocated, then the task
creating the semaphore is considered the current holder of the creating the semaphore is considered the current holder of the
semaphore. At create time the method for ordering waiting tasks semaphore. At create time the method for ordering waiting tasks
in the semaphores task wait queue (by FIFO or task priority) is in the semaphore's task wait queue (by FIFO or task priority) is
specified. Additionally, the priority inheritance or priority specified. Additionally, the priority inheritance or priority
ceiling algorithm may be selected for local, binary semaphores ceiling algorithm may be selected for local, binary semaphores
that use the priority task wait queue blocking discipline. If that use the priority task wait queue blocking discipline. If
@ -346,9 +346,9 @@ one of the following situations applies:
wait before returning with an error status code. wait before returning with an error status code.
If the task waits to acquire the semaphore, then it If the task waits to acquire the semaphore, then it
is placed in the semaphores task wait queue in either FIFO or is placed in the semaphore's task wait queue in either FIFO or
task priority order. If the task blocked waiting for a binary task priority order. If the task blocked waiting for a binary
semaphore using priority inheritance and the tasks priority is semaphore using priority inheritance and the task's priority is
greater than that of the task currently holding the semaphore, greater than that of the task currently holding the semaphore,
then the holding task will inherit the priority of the blocking then the holding task will inherit the priority of the blocking
task. All tasks waiting on a semaphore are returned an error task. All tasks waiting on a semaphore are returned an error
@ -356,7 +356,7 @@ code when the semaphore is deleted.
When a task successfully obtains a semaphore using When a task successfully obtains a semaphore using
priority ceiling and the priority ceiling for this semaphore is priority ceiling and the priority ceiling for this semaphore is
greater than that of the holder, then the holders priority will greater than that of the holder, then the holder's priority will
be elevated. be elevated.
Releasing a Semaphore Releasing a Semaphore
@ -383,17 +383,17 @@ Deleting a Semaphore
The ``rtems_semaphore_delete`` directive removes a semaphore The ``rtems_semaphore_delete`` directive removes a semaphore
from the system and frees its control block. A semaphore can be from the system and frees its control block. A semaphore can be
deleted by any local task that knows the semaphores ID. As a deleted by any local task that knows the semaphore's ID. As a
result of this directive, all tasks blocked waiting to acquire result of this directive, all tasks blocked waiting to acquire
the semaphore will be readied and returned a status code which the semaphore will be readied and returned a status code which
indicates that the semaphore was deleted. Any subsequent indicates that the semaphore was deleted. Any subsequent
references to the semaphores name and ID are invalid. references to the semaphore's name and ID are invalid.
Directives Directives
========== ==========
This section details the semaphore managers This section details the semaphore manager's
directives. A subsection is dedicated to each of this managers directives. A subsection is dedicated to each of this manager's
directives and describes the calling sequence, related directives and describes the calling sequence, related
constants, usage, and status codes. constants, usage, and status codes.
@ -489,7 +489,7 @@ defined by RTEMS:
Semaphores should not be made global unless remote Semaphores should not be made global unless remote
tasks must interact with the created semaphore. This is to tasks must interact with the created semaphore. This is to
avoid the system overhead incurred by the creation of a global avoid the system overhead incurred by the creation of a global
semaphore. When a global semaphore is created, the semaphores semaphore. When a global semaphore is created, the semaphore's
name and id must be transmitted to every node in the system for name and id must be transmitted to every node in the system for
insertion in the local copy of the global object table. insertion in the local copy of the global object table.
@ -584,7 +584,7 @@ by RTEMS.
**NOTES:** **NOTES:**
The calling task will be preempted if it is enabled The calling task will be preempted if it is enabled
by the tasks execution mode and a higher priority local task is by the task's execution mode and a higher priority local task is
waiting on the deleted semaphore. The calling task will NOT be waiting on the deleted semaphore. The calling task will NOT be
preempted if all of the tasks that are waiting on the semaphore preempted if all of the tasks that are waiting on the semaphore
are remote tasks. are remote tasks.
@ -643,7 +643,7 @@ semaphore count is zero or negative, then a status code is returned
indicating that the semaphore is not available. If the calling task indicating that the semaphore is not available. If the calling task
chooses to wait for a semaphore and the current semaphore count is zero or chooses to wait for a semaphore and the current semaphore count is zero or
negative, then it is decremented by one and the calling task is placed on negative, then it is decremented by one and the calling task is placed on
the semaphores wait queue and blocked. If the semaphore was created with the semaphore's wait queue and blocked. If the semaphore was created with
the ``RTEMS_PRIORITY`` attribute, then the calling task is the ``RTEMS_PRIORITY`` attribute, then the calling task is
inserted into the queue according to its priority. However, if the inserted into the queue according to its priority. However, if the
semaphore was created with the ``RTEMS_FIFO`` attribute, then semaphore was created with the ``RTEMS_FIFO`` attribute, then
@ -713,9 +713,9 @@ SEMAPHORE_RELEASE - Release a semaphore
This directive releases the semaphore specified by This directive releases the semaphore specified by
id. The semaphore count is incremented by one. If the count is id. The semaphore count is incremented by one. If the count is
zero or negative, then the first task on this semaphores wait zero or negative, then the first task on this semaphore's wait
queue is removed and unblocked. The unblocked task may preempt queue is removed and unblocked. The unblocked task may preempt
the running task if the running tasks preemption mode is the running task if the running task's preemption mode is
enabled and the unblocked task has a higher priority than the enabled and the unblocked task has a higher priority than the
running task. running task.
@ -769,7 +769,7 @@ the semaphore
**DESCRIPTION:** **DESCRIPTION:**
This directive unblocks all tasks waiting on the semaphore specified by This directive unblocks all tasks waiting on the semaphore specified by
id. Since there are tasks blocked on the semaphore, the semaphores id. Since there are tasks blocked on the semaphore, the semaphore's
count is not changed by this directive and thus is zero before and count is not changed by this directive and thus is zero before and
after this directive is executed. Tasks which are unblocked as the after this directive is executed. Tasks which are unblocked as the
result of this directive will return from the``rtems_semaphore_obtain`` directive with a result of this directive will return from the``rtems_semaphore_obtain`` directive with a
@ -777,7 +777,7 @@ status code of ``RTEMS_UNSATISFIED`` to indicate
that the semaphore was not obtained. that the semaphore was not obtained.
This directive may unblock any number of tasks. Any of the unblocked This directive may unblock any number of tasks. Any of the unblocked
tasks may preempt the running task if the running tasks preemption mode is tasks may preempt the running task if the running task's preemption mode is
enabled and an unblocked task has a higher priority than the enabled and an unblocked task has a higher priority than the
running task. running task.

View File

@ -24,12 +24,12 @@ Signal Manager Definitions
The signal manager allows a task to optionally define The signal manager allows a task to optionally define
an asynchronous signal routine (ASR). An ASR is to a task what an asynchronous signal routine (ASR). An ASR is to a task what
an ISR is to an applications set of tasks. When the processor an ISR is to an application's set of tasks. When the processor
is interrupted, the execution of an application is also is interrupted, the execution of an application is also
interrupted and an ISR is given control. Similarly, when a interrupted and an ISR is given control. Similarly, when a
signal is sent to a task, that tasks execution path will be signal is sent to a task, that task's execution path will be
"interrupted" by the ASR. Sending a signal to a task has no "interrupted" by the ASR. Sending a signal to a task has no
effect on the receiving tasks current execution state... index:: rtems_signal_set effect on the receiving task's current execution state... index:: rtems_signal_set
A signal flag is used by a task (or ISR) to inform A signal flag is used by a task (or ISR) to inform
another task of the occurrence of a significant situation. another task of the occurrence of a significant situation.
@ -40,7 +40,7 @@ is used to manipulate signal sets.
A signal set is posted when it is directed (or sent) to a A signal set is posted when it is directed (or sent) to a
task. A pending signal is a signal that has been sent to a task task. A pending signal is a signal that has been sent to a task
with a valid ASR, but has not been processed by that tasks ASR. with a valid ASR, but has not been processed by that task's ASR.
A Comparison of ASRs and ISRs A Comparison of ASRs and ISRs
----------------------------- -----------------------------
@ -85,7 +85,7 @@ Building an ASR Mode
-------------------- --------------------
.. index:: ASR mode, building .. index:: ASR mode, building
In general, an ASRs mode is built by a bitwise OR of In general, an ASR's mode is built by a bitwise OR of
the desired mode components. The set of valid mode components the desired mode components. The set of valid mode components
is the same as those allowed with the task_create and task_mode is the same as those allowed with the task_create and task_mode
directives. A complete list of mode options is provided in the directives. A complete list of mode options is provided in the
@ -132,19 +132,19 @@ Establishing an ASR
The ``rtems_signal_catch`` directive establishes an ASR for the The ``rtems_signal_catch`` directive establishes an ASR for the
calling task. The address of the ASR and its execution mode are calling task. The address of the ASR and its execution mode are
specified to this directive. The ASRs mode is distinct from specified to this directive. The ASR's mode is distinct from
the tasks mode. For example, the task may allow preemption, the task's mode. For example, the task may allow preemption,
while that tasks ASR may have preemption disabled. Until a while that task's ASR may have preemption disabled. Until a
task calls ``rtems_signal_catch`` the first time, task calls ``rtems_signal_catch`` the first time,
its ASR is invalid, and no signal sets can be sent to the task. its ASR is invalid, and no signal sets can be sent to the task.
A task may invalidate its ASR and discard all pending A task may invalidate its ASR and discard all pending
signals by calling ``rtems_signal_catch`` signals by calling ``rtems_signal_catch``
with a value of NULL for the ASRs address. When a tasks with a value of NULL for the ASR's address. When a task's
ASR is invalid, new signal sets sent to this task are discarded. ASR is invalid, new signal sets sent to this task are discarded.
A task may disable ASR processing (``RTEMS_NO_ASR``) via the A task may disable ASR processing (``RTEMS_NO_ASR``) via the
task_mode directive. When a tasks ASR is disabled, the signals task_mode directive. When a task's ASR is disabled, the signals
sent to it are left pending to be processed later when the ASR sent to it are left pending to be processed later when the ASR
is enabled. is enabled.
@ -153,7 +153,7 @@ be called from an ASR. A task is only allowed one active ASR.
Thus, each call to ``rtems_signal_catch`` Thus, each call to ``rtems_signal_catch``
replaces the previous one. replaces the previous one.
Normally, signal processing is disabled for the ASRs Normally, signal processing is disabled for the ASR's
execution mode, but if signal processing is enabled for the ASR, execution mode, but if signal processing is enabled for the ASR,
the ASR must be reentrant. the ASR must be reentrant.
@ -165,7 +165,7 @@ tasks and ISRs to send signals to a target task. The target task and
a set of signals are specified to the``rtems_signal_send`` directive. The sending a set of signals are specified to the``rtems_signal_send`` directive. The sending
of a signal to a task has no effect on the execution state of of a signal to a task has no effect on the execution state of
that task. If the task is not the currently running task, then that task. If the task is not the currently running task, then
the signals are left pending and processed by the tasks ASR the the signals are left pending and processed by the task's ASR the
next time the task is dispatched to run. The ASR is executed next time the task is dispatched to run. The ASR is executed
immediately before the task is dispatched. If the currently immediately before the task is dispatched. If the currently
running task sends a signal to itself or is sent a signal from running task sends a signal to itself or is sent a signal from
@ -209,8 +209,8 @@ prior to entering the ASR.
Directives Directives
========== ==========
This section details the signal managers directives. This section details the signal manager's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.
@ -242,7 +242,7 @@ specifies the entry point of the ASR. If asr_handler is NULL,
the ASR for the calling task is invalidated and all pending the ASR for the calling task is invalidated and all pending
signals are cleared. Any signals sent to a task with an invalid signals are cleared. Any signals sent to a task with an invalid
ASR are discarded. The mode parameter specifies the execution ASR are discarded. The mode parameter specifies the execution
mode for the ASR. This execution mode supersedes the tasks mode for the ASR. This execution mode supersedes the task's
execution mode while the ASR is executing. execution mode while the ASR is executing.
**NOTES:** **NOTES:**
@ -308,7 +308,7 @@ time the task is dispatched to run.
**NOTES:** **NOTES:**
Sending a signal set to a task has no effect on that Sending a signal set to a task has no effect on that
tasks state. If a signal set is sent to a blocked task, then task's state. If a signal set is sent to a blocked task, then
the task will remain blocked and the signals will be processed the task will remain blocked and the signals will be processed
when the task becomes the running task. when the task becomes the running task.

View File

@ -36,18 +36,18 @@ Execution
--------- ---------
The stack bounds checker operates as a set of task extensions. At The stack bounds checker operates as a set of task extensions. At
task creation time, the tasks stack is filled with a pattern to task creation time, the task's stack is filled with a pattern to
indicate the stack is unused. As the task executes, it will overwrite indicate the stack is unused. As the task executes, it will overwrite
this pattern in memory. At each task switch, the stack bounds checkers this pattern in memory. At each task switch, the stack bounds checker's
task switch extension is executed. This extension checks that: task switch extension is executed. This extension checks that:
- the last ``n`` bytes of the tasks stack have - the last ``n`` bytes of the task's stack have
not been overwritten. If this pattern has been damaged, it not been overwritten. If this pattern has been damaged, it
indicates that at some point since this task was context indicates that at some point since this task was context
switch to the CPU, it has used too much stack space. switch to the CPU, it has used too much stack space.
- the current stack pointer of the task is not within - the current stack pointer of the task is not within
the address range allocated for use as the tasks stack. the address range allocated for use as the task's stack.
If either of these conditions is detected, then a blown stack If either of these conditions is detected, then a blown stack
error is reported using the ``printk`` routine. error is reported using the ``printk`` routine.
@ -131,13 +131,13 @@ The following is an example of the output generated:
Damaged pattern begins at 0x003e5758 and is 128 bytes long Damaged pattern begins at 0x003e5758 and is 128 bytes long
The above includes the task id and a pointer to the task control block as The above includes the task id and a pointer to the task control block as
well as enough information so one can look at the tasks stack and well as enough information so one can look at the task's stack and
see what was happening. see what was happening.
Routines Routines
======== ========
This section details the stack bounds checkers routines. This section details the stack bounds checker's routines.
A subsection is dedicated to each of routines A subsection is dedicated to each of routines
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.

View File

@ -173,7 +173,7 @@ clusters. Clusters with a cardinality of one are partitions. Each cluster is
owned by exactly one scheduler instance. owned by exactly one scheduler instance.
Clustered scheduling helps to control the worst-case latencies in Clustered scheduling helps to control the worst-case latencies in
multi-processor systems, see *Brandenburg, Björn B.: Scheduling and multi-processor systems, see *Brandenburg, Bjorn B.: Scheduling and
Locking in Multiprocessor Real-Time Operating Systems. PhD thesis, 2011.http://www.cs.unc.edu/~bbb/diss/brandenburg-diss.pdf*. The goal is to Locking in Multiprocessor Real-Time Operating Systems. PhD thesis, 2011.http://www.cs.unc.edu/~bbb/diss/brandenburg-diss.pdf*. The goal is to
reduce the amount of shared state in the system and thus prevention of lock reduce the amount of shared state in the system and thus prevention of lock
contention. Modern multi-processor systems tend to have several layers of data contention. Modern multi-processor systems tend to have several layers of data
@ -220,9 +220,9 @@ appended to the FIFO. To dequeue a task the highest priority task of the first
priority queue in the FIFO is selected. Then the first priority queue is priority queue in the FIFO is selected. Then the first priority queue is
removed from the FIFO. In case the previously first priority queue is not removed from the FIFO. In case the previously first priority queue is not
empty, then it is appended to the FIFO. So there is FIFO fairness with respect empty, then it is appended to the FIFO. So there is FIFO fairness with respect
to the highest priority task of each scheduler instances. See also *Brandenburg, Björn B.: A fully preemptive multiprocessor semaphore protocol for to the highest priority task of each scheduler instances. See also *Brandenburg, Bjorn B.: A fully preemptive multiprocessor semaphore protocol for
latency-sensitive real-time applications. In Proceedings of the 25th Euromicro latency-sensitive real-time applications. In Proceedings of the 25th Euromicro
Conference on Real-Time Systems (ECRTS 2013), pages 292–302, 2013.http://www.mpi-sws.org/~bbb/papers/pdf/ecrts13b.pdf*. Conference on Real-Time Systems (ECRTS 2013), pages 292-302, 2013.http://www.mpi-sws.org/~bbb/papers/pdf/ecrts13b.pdf*.
Such a two level queue may need a considerable amount of memory if fast enqueue Such a two level queue may need a considerable amount of memory if fast enqueue
and dequeue operations are desired (depends on the scheduler instance count). and dequeue operations are desired (depends on the scheduler instance count).

View File

@ -30,7 +30,7 @@ by the task manager are:
- ``rtems_task_set_priority`` - Set task priority - ``rtems_task_set_priority`` - Set task priority
- ``rtems_task_mode`` - Change current tasks mode - ``rtems_task_mode`` - Change current task's mode
- ``rtems_task_wake_after`` - Wake up after interval - ``rtems_task_wake_after`` - Wake up after interval
@ -69,7 +69,7 @@ task concept:
- a sequence of closely related computations which can execute - a sequence of closely related computations which can execute
concurrently with other computational sequences. concurrently with other computational sequences.
From RTEMS perspective, a task is the smallest thread of From RTEMS' perspective, a task is the smallest thread of
execution which can compete on its own for system resources. A execution which can compete on its own for system resources. A
task is manifested by the existence of a task control block task is manifested by the existence of a task control block
(TCB). (TCB).
@ -84,20 +84,20 @@ reserves a TCB for each task configured. A TCB is allocated
upon creation of the task and is returned to the TCB free list upon creation of the task and is returned to the TCB free list
upon deletion of the task. upon deletion of the task.
The TCBs elements are modified as a result of system calls made The TCB's elements are modified as a result of system calls made
by the application in response to external and internal stimuli. by the application in response to external and internal stimuli.
TCBs are the only RTEMS internal data structure that can be TCBs are the only RTEMS internal data structure that can be
accessed by an application via user extension routines. The TCB accessed by an application via user extension routines. The TCB
contains a tasks name, ID, current priority, current and contains a task's name, ID, current priority, current and
starting states, execution mode, TCB user extension pointer, starting states, execution mode, TCB user extension pointer,
scheduling control structures, as well as data required by a scheduling control structures, as well as data required by a
blocked task. blocked task.
A tasks context is stored in the TCB when a task switch occurs. A task's context is stored in the TCB when a task switch occurs.
When the task regains control of the processor, its context is When the task regains control of the processor, its context is
restored from the TCB. When a task is restarted, the initial restored from the TCB. When a task is restarted, the initial
state of the task is restored from the starting context area in state of the task is restored from the starting context area in
the tasks TCB. the task's TCB.
Task States Task States
----------- -----------
@ -131,7 +131,7 @@ Task Priority
.. index:: priority, task .. index:: priority, task
.. index:: rtems_task_priority .. index:: rtems_task_priority
A tasks priority determines its importance in relation to the A task's priority determines its importance in relation to the
other tasks executing on the same processor. RTEMS supports 255 other tasks executing on the same processor. RTEMS supports 255
levels of priority ranging from 1 to 255. The data type``rtems_task_priority`` is used to store task levels of priority ranging from 1 to 255. The data type``rtems_task_priority`` is used to store task
priorities. priorities.
@ -158,7 +158,7 @@ Task Mode
.. index:: task mode .. index:: task mode
.. index:: rtems_task_mode .. index:: rtems_task_mode
A tasks execution mode is a combination of the following A task's execution mode is a combination of the following
four components: four components:
- preemption - preemption
@ -169,14 +169,14 @@ four components:
- interrupt level - interrupt level
It is used to modify RTEMS scheduling process and to alter the It is used to modify RTEMS' scheduling process and to alter the
execution environment of the task. The data type``rtems_task_mode`` is used to manage the task execution environment of the task. The data type``rtems_task_mode`` is used to manage the task
execution mode... index:: preemption execution mode... index:: preemption
The preemption component allows a task to determine when control of the The preemption component allows a task to determine when control of the
processor is relinquished. If preemption is disabled processor is relinquished. If preemption is disabled
(``RTEMS_NO_PREEMPT``), the task will retain control of the (``RTEMS_NO_PREEMPT``), the task will retain control of the
processor as long as it is in the executing state even if a higher processor as long as it is in the executing state - even if a higher
priority task is made ready. If preemption is enabled priority task is made ready. If preemption is enabled
(``RTEMS_PREEMPT``) and a higher priority task is made ready, (``RTEMS_PREEMPT``) and a higher priority task is made ready,
then the processor will be taken away from the current task immediately and then the processor will be taken away from the current task immediately and
@ -300,9 +300,9 @@ Per task variables are used to support global variables whose value
may be unique to a task. After indicating that a variable should be may be unique to a task. After indicating that a variable should be
treated as private (i.e. per-task) the task can access and modify the treated as private (i.e. per-task) the task can access and modify the
variable, but the modifications will not appear to other tasks, and variable, but the modifications will not appear to other tasks, and
other tasks modifications to that variable will not affect the value other tasks' modifications to that variable will not affect the value
seen by the task. This is accomplished by saving and restoring the seen by the task. This is accomplished by saving and restoring the
variables value each time a task switch occurs to or from the calling task. variable's value each time a task switch occurs to or from the calling task.
The value seen by other tasks, including those which have not added the The value seen by other tasks, including those which have not added the
variable to their set and are thus accessing the variable as a common variable to their set and are thus accessing the variable as a common
@ -322,14 +322,14 @@ Task variables increase the context switch time to and from the
tasks that own them so it is desirable to minimize the number of tasks that own them so it is desirable to minimize the number of
task variables. One efficient method is to have a single task task variables. One efficient method is to have a single task
variable that is a pointer to a dynamically allocated structure variable that is a pointer to a dynamically allocated structure
containing the tasks private "global" data. containing the task's private "global" data.
A critical point with per-task variables is that each task must separately A critical point with per-task variables is that each task must separately
request that the same global variable is per-task private. request that the same global variable is per-task private.
*WARNING*: Per-Task variables are inherently broken on SMP systems. They *WARNING*: Per-Task variables are inherently broken on SMP systems. They
only work correctly when there is one task executing in the system and only work correctly when there is one task executing in the system and
that task is the logical owner of the value in the per-task variables that task is the logical owner of the value in the per-task variable's
location. There is no way for a single memory image to contain the location. There is no way for a single memory image to contain the
correct value for each task executing on each core. Consequently, correct value for each task executing on each core. Consequently,
per-task variables are disabled in SMP configurations of RTEMS. per-task variables are disabled in SMP configurations of RTEMS.
@ -374,7 +374,7 @@ Building a Mode and Mask
In general, a mode and its corresponding mask is built by a In general, a mode and its corresponding mask is built by a
bitwise OR of the desired components. The set of valid mode bitwise OR of the desired components. The set of valid mode
constants and each modes corresponding mask constant is constants and each mode's corresponding mask constant is
listed below: listed below:
- ``RTEMS_PREEMPT`` is masked by``RTEMS_PREEMPT_MASK`` and enables preemption - ``RTEMS_PREEMPT`` is masked by``RTEMS_PREEMPT_MASK`` and enables preemption
@ -407,7 +407,7 @@ directive to place a task at interrupt level 3 and make it
non-preemptible. The mode should be set to``RTEMS_INTERRUPT_LEVEL(3) | non-preemptible. The mode should be set to``RTEMS_INTERRUPT_LEVEL(3) |
RTEMS_NO_PREEMPT`` to indicate the desired preemption mode and RTEMS_NO_PREEMPT`` to indicate the desired preemption mode and
interrupt level, while the mask parameter should be set to``RTEMS_INTERRUPT_MASK | interrupt level, while the mask parameter should be set to``RTEMS_INTERRUPT_MASK |
RTEMS_NO_PREEMPT_MASK`` to indicate that the calling tasks RTEMS_NO_PREEMPT_MASK`` to indicate that the calling task's
interrupt level and preemption mode are being altered. interrupt level and preemption mode are being altered.
Operations Operations
@ -450,20 +450,20 @@ on a task prior to starting it are nullified when the task is
started. started.
With the ``rtems_task_start`` With the ``rtems_task_start``
directive the user specifies the tasks directive the user specifies the task's
starting address and argument. The argument is used to starting address and argument. The argument is used to
communicate some startup information to the task. As part of communicate some startup information to the task. As part of
this directive, RTEMS initializes the tasks stack based upon this directive, RTEMS initializes the task's stack based upon
the tasks initial execution mode and start address. The the task's initial execution mode and start address. The
starting argument is passed to the task in accordance with the starting argument is passed to the task in accordance with the
target processors calling convention. target processor's calling convention.
The ``rtems_task_restart`` The ``rtems_task_restart``
directive restarts a task at its initial directive restarts a task at its initial
starting address with its original priority and execution mode, starting address with its original priority and execution mode,
but with a possibly different argument. The new argument may be but with a possibly different argument. The new argument may be
used to distinguish between the original invocation of the task used to distinguish between the original invocation of the task
and subsequent invocations. The tasks stack and control block and subsequent invocations. The task's stack and control block
are modified to reflect their original creation values. are modified to reflect their original creation values.
Although references to resources that have been requested are Although references to resources that have been requested are
cleared, resources allocated by the task are NOT automatically cleared, resources allocated by the task are NOT automatically
@ -519,9 +519,9 @@ Changing Task Priority
The ``rtems_task_set_priority`` The ``rtems_task_set_priority``
directive is used to obtain or change the directive is used to obtain or change the
current priority of either the calling task or another task. If current priority of either the calling task or another task. If
the new priority requested is``RTEMS_CURRENT_PRIORITY`` or the tasks the new priority requested is``RTEMS_CURRENT_PRIORITY`` or the task's
actual priority, then the current priority will be returned and actual priority, then the current priority will be returned and
the tasks priority will remain unchanged. If the tasks the task's priority will remain unchanged. If the task's
priority is altered, then the task will be scheduled according priority is altered, then the task will be scheduled according
to its new priority. to its new priority.
@ -534,9 +534,9 @@ Changing Task Mode
The ``rtems_task_mode`` The ``rtems_task_mode``
directive is used to obtain or change the current directive is used to obtain or change the current
execution mode of the calling task. A tasks execution mode is execution mode of the calling task. A task's execution mode is
used to enable preemption, timeslicing, ASR processing, and to used to enable preemption, timeslicing, ASR processing, and to
set the tasks interrupt level. set the task's interrupt level.
The ``rtems_task_restart`` The ``rtems_task_restart``
directive resets the mode of a task to its directive resets the mode of a task to its
@ -548,9 +548,9 @@ Task Deletion
RTEMS provides the ``rtems_task_delete`` RTEMS provides the ``rtems_task_delete``
directive to allow a task to directive to allow a task to
delete itself or any other task. This directive removes all delete itself or any other task. This directive removes all
RTEMS references to the task, frees the tasks control block, RTEMS references to the task, frees the task's control block,
removes it from resource wait queues, and deallocates its stack removes it from resource wait queues, and deallocates its stack
as well as the optional floating point context. The tasks name as well as the optional floating point context. The task's name
and ID become inactive at this time, and any subsequent and ID become inactive at this time, and any subsequent
references to either of them is invalid. In fact, RTEMS may references to either of them is invalid. In fact, RTEMS may
reuse the task ID for another task which is created later in the reuse the task ID for another task which is created later in the
@ -589,8 +589,8 @@ an option for some use cases.
Directives Directives
========== ==========
This section details the task managers directives. A This section details the task manager's directives. A
subsection is dedicated to each of this managers directives and subsection is dedicated to each of this manager's directives and
describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage, and
status codes. status codes.
@ -629,7 +629,7 @@ TASK_CREATE - Create a task
This directive creates a task which resides on the local node. This directive creates a task which resides on the local node.
It allocates and initializes a TCB, a stack, and an optional It allocates and initializes a TCB, a stack, and an optional
floating point context area. The mode parameter contains values floating point context area. The mode parameter contains values
which sets the tasks initial execution mode. The``RTEMS_FLOATING_POINT`` attribute should be which sets the task's initial execution mode. The``RTEMS_FLOATING_POINT`` attribute should be
specified if the created task specified if the created task
is to use a numeric coprocessor. For performance reasons, it is is to use a numeric coprocessor. For performance reasons, it is
recommended that tasks not using the numeric coprocessor should recommended that tasks not using the numeric coprocessor should
@ -713,7 +713,7 @@ target processor in a processor dependent fashion.
Tasks should not be made global unless remote tasks must Tasks should not be made global unless remote tasks must
interact with them. This avoids the system overhead incurred by interact with them. This avoids the system overhead incurred by
the creation of a global task. When a global task is created, the creation of a global task. When a global task is created,
the tasks name and id must be transmitted to every node in the the task's name and id must be transmitted to every node in the
system for insertion in the local copy of the global object system for insertion in the local copy of the global object
table. table.
@ -820,7 +820,7 @@ TASK_START - Start a task
This directive readies the task, specified by ``id``, for execution This directive readies the task, specified by ``id``, for execution
based on the priority and execution mode specified when the task based on the priority and execution mode specified when the task
was created. The starting address of the task is given in``entry_point``. The tasks starting argument is contained in was created. The starting address of the task is given in``entry_point``. The task's starting argument is contained in
argument. This argument can be a single value or used as an index into an argument. This argument can be a single value or used as an index into an
array of parameter blocks. The type of this numeric argument is an unsigned array of parameter blocks. The type of this numeric argument is an unsigned
integer type with the property that any valid pointer to void can be converted integer type with the property that any valid pointer to void can be converted
@ -861,13 +861,13 @@ TASK_RESTART - Restart a task
**DESCRIPTION:** **DESCRIPTION:**
This directive resets the task specified by id to begin This directive resets the task specified by id to begin
execution at its original starting address. The tasks priority execution at its original starting address. The task's priority
and execution mode are set to the original creation values. If and execution mode are set to the original creation values. If
the task is currently blocked, RTEMS automatically makes the the task is currently blocked, RTEMS automatically makes the
task ready. A task can be restarted from any state, except the task ready. A task can be restarted from any state, except the
dormant state. dormant state.
The tasks starting argument is contained in argument. This argument can be a The task's starting argument is contained in argument. This argument can be a
single value or an index into an array of parameter blocks. The type of this single value or an index into an array of parameter blocks. The type of this
numeric argument is an unsigned integer type with the property that any valid numeric argument is an unsigned integer type with the property that any valid
pointer to void can be converted to this type and then converted back to a pointer to void can be converted to this type and then converted back to a
@ -1086,16 +1086,16 @@ TASK_SET_PRIORITY - Set task priority
This directive manipulates the priority of the task specified by This directive manipulates the priority of the task specified by
id. An id of ``RTEMS_SELF`` is used to indicate id. An id of ``RTEMS_SELF`` is used to indicate
the calling task. When new_priority is not equal to``RTEMS_CURRENT_PRIORITY``, the specified the calling task. When new_priority is not equal to``RTEMS_CURRENT_PRIORITY``, the specified
tasks previous priority is returned in old_priority. When task's previous priority is returned in old_priority. When
new_priority is ``RTEMS_CURRENT_PRIORITY``, new_priority is ``RTEMS_CURRENT_PRIORITY``,
the specified tasks current the specified task's current
priority is returned in old_priority. Valid priorities range priority is returned in old_priority. Valid priorities range
from a high of 1 to a low of 255. from a high of 1 to a low of 255.
**NOTES:** **NOTES:**
The calling task may be preempted if its preemption mode is The calling task may be preempted if its preemption mode is
enabled and it lowers its own priority or raises another tasks enabled and it lowers its own priority or raises another task's
priority. priority.
In case the new priority equals the current priority of the task, then nothing In case the new priority equals the current priority of the task, then nothing
@ -1107,12 +1107,12 @@ change the priority of the specified task.
If the task specified by id is currently holding any binary If the task specified by id is currently holding any binary
semaphores which use the priority inheritance algorithm, then semaphores which use the priority inheritance algorithm, then
the tasks priority cannot be lowered immediately. If the the task's priority cannot be lowered immediately. If the
tasks priority were lowered immediately, then priority task's priority were lowered immediately, then priority
inversion results. The requested lowering of the tasks inversion results. The requested lowering of the task's
priority will occur when the task has released all priority priority will occur when the task has released all priority
inheritance binary semaphores. The tasks priority can be inheritance binary semaphores. The task's priority can be
increased regardless of the tasks use of priority inheritance increased regardless of the task's use of priority inheritance
binary semaphores. binary semaphores.
TASK_MODE - Change the current task mode TASK_MODE - Change the current task mode
@ -1144,7 +1144,7 @@ TASK_MODE - Change the current task mode
**DESCRIPTION:** **DESCRIPTION:**
This directive manipulates the execution mode of the calling This directive manipulates the execution mode of the calling
task. A tasks execution mode enables and disables preemption, task. A task's execution mode enables and disables preemption,
timeslicing, asynchronous signal processing, as well as timeslicing, asynchronous signal processing, as well as
specifying the current interrupt level. To modify an execution specifying the current interrupt level. To modify an execution
mode, the mode class(es) to be changed must be specified in the mode, the mode class(es) to be changed must be specified in the
@ -1167,7 +1167,7 @@ To temporarily disable the processing of a valid ASR, a task
should call this directive with the ``RTEMS_NO_ASR`` should call this directive with the ``RTEMS_NO_ASR``
indicator specified in mode. indicator specified in mode.
The set of task mode constants and each modes corresponding The set of task mode constants and each mode's corresponding
mask constant is provided in the following table: mask constant is provided in the following table:
- ``RTEMS_PREEMPT`` is masked by``RTEMS_PREEMPT_MASK`` and enables preemption - ``RTEMS_PREEMPT`` is masked by``RTEMS_PREEMPT_MASK`` and enables preemption
@ -1327,12 +1327,12 @@ This directive adds the memory location specified by the
ptr argument to the context of the given task. The variable will ptr argument to the context of the given task. The variable will
then be private to the task. The task can access and modify the then be private to the task. The task can access and modify the
variable, but the modifications will not appear to other tasks, and variable, but the modifications will not appear to other tasks, and
other tasks modifications to that variable will not affect the value other tasks' modifications to that variable will not affect the value
seen by the task. This is accomplished by saving and restoring the seen by the task. This is accomplished by saving and restoring the
variables value each time a task switch occurs to or from the calling task. variable's value each time a task switch occurs to or from the calling task.
If the dtor argument is non-NULL it specifies the address of a destructor If the dtor argument is non-NULL it specifies the address of a 'destructor'
function which will be called when the task is deleted. The argument function which will be called when the task is deleted. The argument
passed to the destructor function is the tasks value of the variable. passed to the destructor function is the task's value of the variable.
**NOTES:** **NOTES:**
@ -1342,8 +1342,8 @@ Task variables increase the context switch time to and from the
tasks that own them so it is desirable to minimize the number of tasks that own them so it is desirable to minimize the number of
task variables. One efficient method task variables. One efficient method
is to have a single task variable that is a pointer to a dynamically is to have a single task variable that is a pointer to a dynamically
allocated structure containing the tasks private global data. allocated structure containing the task's private 'global' data.
In this case the destructor function could be free. In this case the destructor function could be 'free'.
Per-task variables are disabled in SMP configurations and this service Per-task variables are disabled in SMP configurations and this service
is not available. is not available.
@ -1420,7 +1420,7 @@ TASK_VARIABLE_DELETE - Remove per task variable
**DESCRIPTION:** **DESCRIPTION:**
This directive removes the given location from a tasks context. This directive removes the given location from a task's context.
**NOTES:** **NOTES:**

View File

@ -183,16 +183,16 @@ Deleting a Timer
The ``rtems_timer_delete`` directive is used to delete a timer. The ``rtems_timer_delete`` directive is used to delete a timer.
If the timer is running and has not expired, the timer is If the timer is running and has not expired, the timer is
automatically canceled. The timers control block is returned automatically canceled. The timer's control block is returned
to the TMCB free list when it is deleted. A timer can be to the TMCB free list when it is deleted. A timer can be
deleted by a task other than the task which created the timer. deleted by a task other than the task which created the timer.
Any subsequent references to the timers name and ID are invalid. Any subsequent references to the timer's name and ID are invalid.
Directives Directives
========== ==========
This section details the timer managers directives. This section details the timer manager's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.

View File

@ -9,9 +9,9 @@ instances of the POSIX ``struct timespec`` structure.
The directives provided by the timespec helpers manager are: The directives provided by the timespec helpers manager are:
- ``rtems_timespec_set`` - Set timespecs value - ``rtems_timespec_set`` - Set timespec's value
- ``rtems_timespec_zero`` - Zero timespecs value - ``rtems_timespec_zero`` - Zero timespec's value
- ``rtems_timespec_is_valid`` - Check if timespec is valid - ``rtems_timespec_is_valid`` - Check if timespec is valid
@ -101,8 +101,8 @@ User can also check validity of timespec with``rtems_timespec_is_valid`` routine
Directives Directives
========== ==========
This section details the Timespec Helpers managers directives. This section details the Timespec Helpers manager's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.

View File

@ -72,7 +72,7 @@ following structure:.. index:: rtems_extensions_table
RTEMS allows the user to have multiple extension sets RTEMS allows the user to have multiple extension sets
active at the same time. First, a single static extension set active at the same time. First, a single static extension set
may be defined as the applications User Extension Table which may be defined as the application's User Extension Table which
is included as part of the Configuration Table. This extension is included as part of the Configuration Table. This extension
set is active for the entire life of the system and may not be set is active for the entire life of the system and may not be
deleted. This extension set is especially important because it deleted. This extension set is especially important because it
@ -112,9 +112,9 @@ TCB Extension Area
.. index:: TCB extension area .. index:: TCB extension area
RTEMS provides for a pointer to a user-defined data RTEMS provides for a pointer to a user-defined data
area for each extension set to be linked to each tasks control area for each extension set to be linked to each task's control
block. This set of pointers is an extension of the TCB and can block. This set of pointers is an extension of the TCB and can
be used to store additional data required by the users be used to store additional data required by the user's
extension functions. extension functions.
The TCB extension is an array of pointers in the TCB. The The TCB extension is an array of pointers in the TCB. The
@ -129,7 +129,7 @@ The number of pointers in the area is the same as the number of
user extension sets configured. This allows an application to user extension sets configured. This allows an application to
augment the TCB with user-defined information. For example, an augment the TCB with user-defined information. For example, an
application could implement task profiling by storing timing application could implement task profiling by storing timing
statistics in the TCBs extended memory area. When a task statistics in the TCB's extended memory area. When a task
context switch is being executed, the TASK_SWITCH extension context switch is being executed, the TASK_SWITCH extension
could read a real-time clock to calculate how long the task could read a real-time clock to calculate how long the task
being swapped out has run as well as timestamp the starting time being swapped out has run as well as timestamp the starting time
@ -144,9 +144,9 @@ be reinitialized by the TASK_RESTART extension and should be
deallocated by the TASK_DELETE extension when the task is deallocated by the TASK_DELETE extension when the task is
deleted. Since the TCB extension buffers would most likely be deleted. Since the TCB extension buffers would most likely be
of a fixed size, the RTEMS partition manager could be used to of a fixed size, the RTEMS partition manager could be used to
manage the applications extended memory area. The application manage the application's extended memory area. The application
could create a partition of fixed size TCB extension buffers and could create a partition of fixed size TCB extension buffers and
use the partition managers allocation and deallocation use the partition manager's allocation and deallocation
directives to obtain and release the extension buffers. directives to obtain and release the extension buffers.
Extensions Extensions
@ -286,7 +286,7 @@ following:.. index:: rtems_task_switch_extension
where current_task can be used to access the TCB for where current_task can be used to access the TCB for
the task that is being swapped out, and heir_task can be used to the task that is being swapped out, and heir_task can be used to
access the TCB for the task being swapped in. This extension is access the TCB for the task being swapped in. This extension is
invoked from RTEMS dispatcher routine after the current_task invoked from RTEMS' dispatcher routine after the current_task
context has been saved, but before the heir_task context has context has been saved, but before the heir_task context has
been restored. This extension should not call any RTEMS been restored. This extension should not call any RTEMS
directives. directives.
@ -360,8 +360,8 @@ where the_error is the error code passed to the
fatal_error_occurred directive. This extension is invoked from fatal_error_occurred directive. This extension is invoked from
the fatal_error_occurred directive. the fatal_error_occurred directive.
If defined, the users FATAL error extension is If defined, the user's FATAL error extension is
invoked before RTEMS default fatal error routine is invoked and invoked before RTEMS' default fatal error routine is invoked and
the processor is stopped. For example, this extension could be the processor is stopped. For example, this extension could be
used to pass control to a debugger when a fatal error occurs. used to pass control to a debugger when a fatal error occurs.
This extension should not call any RTEMS directives. This extension should not call any RTEMS directives.
@ -410,7 +410,7 @@ error extension will be the last fatal error extension executed.
Another example is use of the task delete extension by the Another example is use of the task delete extension by the
Standard C Library. Extension sets which are installed after Standard C Library. Extension sets which are installed after
the Standard C Library will operate correctly even if they the Standard C Library will operate correctly even if they
utilize the C Library because the C Librarys TASK_DELETE utilize the C Library because the C Library's TASK_DELETE
extension is invoked after that of the other extensions. extension is invoked after that of the other extensions.
Operations Operations
@ -444,17 +444,17 @@ Deleting an Extension Set
------------------------- -------------------------
The ``rtems_extension_delete`` directive is used to delete an The ``rtems_extension_delete`` directive is used to delete an
extension set. The extension sets control block is returned to extension set. The extension set's control block is returned to
the ESCB free list when it is deleted. An extension set can be the ESCB free list when it is deleted. An extension set can be
deleted by a task other than the task which created the deleted by a task other than the task which created the
extension set. Any subsequent references to the extensions extension set. Any subsequent references to the extension's
name and ID are invalid. name and ID are invalid.
Directives Directives
========== ==========
This section details the user extension managers This section details the user extension manager's
directives. A subsection is dedicated to each of this managers directives. A subsection is dedicated to each of this manager's
directives and describes the calling sequence, related directives and describes the calling sequence, related
constants, usage, and status codes. constants, usage, and status codes.

View File

@ -51,7 +51,7 @@ Register Usage
-------------- --------------
A called function may clobber all registers, except RETS, R4-R7, P3-P5, A called function may clobber all registers, except RETS, R4-R7, P3-P5,
FP and SP. It may also modify the first 12 bytes in the caller’s stack FP and SP. It may also modify the first 12 bytes in the caller's stack
frame which is used as an argument area for the first three arguments frame which is used as an argument area for the first three arguments
(which are passed in R0...R3 but may be placed on the stack by the (which are passed in R0...R3 but may be placed on the stack by the
called function). called function).
@ -80,7 +80,7 @@ protection mechanisms are not used.
Interrupt Processing Interrupt Processing
==================== ====================
Discussed in this chapter are the AVRs interrupt response and Discussed in this chapter are the AVR's interrupt response and
control mechanisms as they pertain to RTEMS. control mechanisms as they pertain to RTEMS.
Vectoring of an Interrupt Handler Vectoring of an Interrupt Handler

View File

@ -55,7 +55,7 @@ Register Usage
-------------- --------------
A called function may clobber all registers, except RETS, R4-R7, P3-P5, A called function may clobber all registers, except RETS, R4-R7, P3-P5,
FP and SP. It may also modify the first 12 bytes in the caller’s stack FP and SP. It may also modify the first 12 bytes in the caller's stack
frame which is used as an argument area for the first three arguments frame which is used as an argument area for the first three arguments
(which are passed in R0...R3 but may be placed on the stack by the (which are passed in R0...R3 but may be placed on the stack by the
called function). called function).
@ -84,7 +84,7 @@ protection mechanisms are not used.
Interrupt Processing Interrupt Processing
==================== ====================
Discussed in this chapter are the Blackfins interrupt response and Discussed in this chapter are the Blackfin's interrupt response and
control mechanisms as they pertain to RTEMS. The Blackfin architecture control mechanisms as they pertain to RTEMS. The Blackfin architecture
support 16 kinds of interrupts broken down into Core and general-purpose support 16 kinds of interrupts broken down into Core and general-purpose
interrupts. interrupts.

View File

@ -2,7 +2,7 @@
RTEMS CPU Architecture Supplement RTEMS CPU Architecture Supplement
================================= =================================
COPYRIGHT © 1988 - 2015. COPYRIGHT (c) 1988 - 2015.
On-Line Applications Research Corporation (OAR). On-Line Applications Research Corporation (OAR).

View File

@ -9,14 +9,14 @@ than being designed for growth.
For information on the i386 processor, refer to the For information on the i386 processor, refer to the
following documents: following documents:
- *386 Programmers Reference Manual, Intel, Order No. 230985-002*. - *386 Programmer's Reference Manual, Intel, Order No. 230985-002*.
- *386 Microprocessor Hardware Reference Manual, Intel, - *386 Microprocessor Hardware Reference Manual, Intel,
Order No. 231732-003*. Order No. 231732-003*.
- *80386 System Software Writers Guide, Intel, Order No. 231499-001*. - *80386 System Software Writer's Guide, Intel, Order No. 231499-001*.
- *80387 Programmers Reference Manual, Intel, Order No. 231917-001*. - *80387 Programmer's Reference Manual, Intel, Order No. 231917-001*.
CPU Model Dependent Features CPU Model Dependent Features
============================ ============================
@ -33,7 +33,7 @@ The macro ``I386_HAS_BSWAP`` is set to 1 to indicate that
this CPU model has the ``bswap`` instruction which this CPU model has the ``bswap`` instruction which
endian swaps a thirty-two bit quantity. This instruction endian swaps a thirty-two bit quantity. This instruction
appears to be present in all CPU models appears to be present in all CPU models
i486s and above. i486's and above.
Calling Conventions Calling Conventions
=================== ===================
@ -128,8 +128,8 @@ Interrupt Processing
Although RTEMS hides many of the processor Although RTEMS hides many of the processor
dependent details of interrupt processing, it is important to dependent details of interrupt processing, it is important to
understand how the RTEMS interrupt manager is mapped onto the understand how the RTEMS interrupt manager is mapped onto the
processors unique architecture. Discussed in this chapter are processor's unique architecture. Discussed in this chapter are
the the processors response and control mechanisms as they the the processor's response and control mechanisms as they
pertain to RTEMS. pertain to RTEMS.
Vectoring of Interrupt Handler Vectoring of Interrupt Handler
@ -175,7 +175,7 @@ Interrupt Levels
---------------- ----------------
Although RTEMS supports 256 interrupt levels, the Although RTEMS supports 256 interrupt levels, the
i386 only supports two enabled and disabled. Interrupts are i386 only supports two - enabled and disabled. Interrupts are
enabled when the interrupt-enable flag (IF) in the extended enabled when the interrupt-enable flag (IF) in the extended
flags (EFLAGS) is set. Conversely, interrupt processing is flags (EFLAGS) is set. Conversely, interrupt processing is
inhibited when the IF is cleared. During a non-maskable inhibited when the IF is cleared. During a non-maskable
@ -225,7 +225,7 @@ System Reset
An RTEMS based application is initiated when the i386 processor is reset. An RTEMS based application is initiated when the i386 processor is reset.
When the i386 is reset, When the i386 is reset,
- The EAX register is set to indicate the results of the processors - The EAX register is set to indicate the results of the processor's
power-up self test. If the self-test was not executed, the contents of power-up self test. If the self-test was not executed, the contents of
this register are undefined. Otherwise, a non-zero value indicates the this register are undefined. Otherwise, a non-zero value indicates the
processor is faulty and a zero value indicates a successful self-test. processor is faulty and a zero value indicates a successful self-test.
@ -253,7 +253,7 @@ When the i386 is reset,
lines are lowered and the processor begins executing in the first megabyte lines are lowered and the processor begins executing in the first megabyte
of memory. of memory.
Typically, an intersegment JMP to the applications initialization code is Typically, an intersegment JMP to the application's initialization code is
placed at address 0xFFFFFFF0. placed at address 0xFFFFFFF0.
Processor Initialization Processor Initialization
@ -306,7 +306,7 @@ which is executed before the call to initialize_executive has the following
requirements: requirements:
For more information regarding the i386 data structures and their For more information regarding the i386 data structures and their
contents, refer to Intels 386 Programmers Reference Manual. contents, refer to Intel's 386 Programmer's Reference Manual.
.. COMMENT: COPYRIGHT (c) 1988-2002. .. COMMENT: COPYRIGHT (c) 1988-2002.

View File

@ -5,7 +5,7 @@ This chaper discusses the Lattice Mico32 architecture dependencies in
this port of RTEMS. The Lattice Mico32 is a 32-bit Harvard, RISC this port of RTEMS. The Lattice Mico32 is a 32-bit Harvard, RISC
architecture "soft" microprocessor, available for free with an open IP architecture "soft" microprocessor, available for free with an open IP
core licensing agreement. Although mainly targeted for Lattice FPGA core licensing agreement. Although mainly targeted for Lattice FPGA
devices the microprocessor can be implemented on other vendors FPGAs, devices the microprocessor can be implemented on other vendors' FPGAs,
too. too.
**Architecture Documents** **Architecture Documents**
@ -192,7 +192,7 @@ handlers are configured or all of them return without taking action to
shutdown the processor or reset, a default fatal error handler is invoked. shutdown the processor or reset, a default fatal error handler is invoked.
Most of the action performed as part of processing the fatal error are Most of the action performed as part of processing the fatal error are
described in detail in the Fatal Error Manager chapter in the Users described in detail in the Fatal Error Manager chapter in the User's
Guide. However, the if no user provided extension or BSP specific fatal Guide. However, the if no user provided extension or BSP specific fatal
error handler takes action, the final default action is to invoke a error handler takes action, the final default action is to invoke a
CPU architecture specific function. Typically this function disables CPU architecture specific function. Typically this function disables
@ -221,7 +221,7 @@ In each of the architecture specific chapters, this section will present
a discussion of architecture specific BSP issues. For more information a discussion of architecture specific BSP issues. For more information
on developing a BSP, refer to BSP and Device Driver Development Guide on developing a BSP, refer to BSP and Device Driver Development Guide
and the chapter titled Board Support Packages in the RTEMS and the chapter titled Board Support Packages in the RTEMS
Applications Users Guide. Applications User's Guide.
System Reset System Reset
------------ ------------

View File

@ -17,9 +17,9 @@ For information on the MC68xxx and Coldfire architecture, refer to the following
- *M68000 Family Reference, Motorola, FR68K/D*. - *M68000 Family Reference, Motorola, FR68K/D*.
- *MC68020 Users Manual, Motorola, MC68020UM/AD*. - *MC68020 User's Manual, Motorola, MC68020UM/AD*.
- *MC68881/MC68882 Floating-Point Coprocessor Users Manual, - *MC68881/MC68882 Floating-Point Coprocessor User's Manual,
Motorola, MC68881UM/AD*. Motorola, MC68881UM/AD*.
CPU Model Dependent Features CPU Model Dependent Features
@ -136,7 +136,7 @@ segmentation on any of the MC68xxx family members.
Interrupt Processing Interrupt Processing
==================== ====================
Discussed in this section are the MC68xxxs interrupt response and Discussed in this section are the MC68xxx's interrupt response and
control mechanisms as they pertain to RTEMS. control mechanisms as they pertain to RTEMS.
Vectoring of an Interrupt Handler Vectoring of an Interrupt Handler
@ -182,7 +182,7 @@ interrupt stacks automatically perform the following actions:
installed with the interrupt_catch directive, then the RTEMS installed with the interrupt_catch directive, then the RTEMS
interrupt handler will begin execution. The RTEMS interrupt interrupt handler will begin execution. The RTEMS interrupt
handler saves all registers which are not preserved according to handler saves all registers which are not preserved according to
the calling conventions and invokes the applications ISR. the calling conventions and invokes the application's ISR.
A nested interrupt is processed similarly by these A nested interrupt is processed similarly by these
CPU models with the exception that only a single ISF is placed CPU models with the exception that only a single ISF is placed
@ -339,11 +339,11 @@ the following actions:
Processor Initialization Processor Initialization
------------------------ ------------------------
The address of the applications initialization code should be stored in The address of the application's initialization code should be stored in
the first vector of the EVT which will allow the immediate vectoring to the first vector of the EVT which will allow the immediate vectoring to
the application code. If the application requires that the VBR be some the application code. If the application requires that the VBR be some
value besides zero, then it should be set to the required value at this value besides zero, then it should be set to the required value at this
point. All tasks share the same MC68020s VBR value. Because interrupts point. All tasks share the same MC68020's VBR value. Because interrupts
are enabled automatically by RTEMS as part of the context switch to the are enabled automatically by RTEMS as part of the context switch to the
first task, the VBR MUST be set by either RTEMS of the BSP before this first task, the VBR MUST be set by either RTEMS of the BSP before this
occurs ensure correct interrupt vectoring. If processor caching is occurs ensure correct interrupt vectoring. If processor caching is
@ -351,7 +351,7 @@ to be utilized, then it should be enabled during the reset application
initialization code. initialization code.
In addition to the requirements described in the In addition to the requirements described in the
Board Support Packages chapter of the Applications Users Board Support Packages chapter of the Applications User's
Manual for the reset code which is executed before the call to Manual for the reset code which is executed before the call to
initialize executive, the MC68020 version has the following initialize executive, the MC68020 version has the following
specific requirements: specific requirements:
@ -366,7 +366,7 @@ specific requirements:
minimum stack size of MINIMUM_STACK_SIZE bytes is provided for minimum stack size of MINIMUM_STACK_SIZE bytes is provided for
the initialize executive directive. the initialize executive directive.
- Must initialize the MC68020s vector table. - Must initialize the MC68020's vector table.
.. COMMENT: Copyright (c) 2014 embedded brains GmbH. All rights reserved. .. COMMENT: Copyright (c) 2014 embedded brains GmbH. All rights reserved.

View File

@ -74,8 +74,8 @@ Interrupt Processing
Although RTEMS hides many of the processor dependent Although RTEMS hides many of the processor dependent
details of interrupt processing, it is important to understand details of interrupt processing, it is important to understand
how the RTEMS interrupt manager is mapped onto the processors how the RTEMS interrupt manager is mapped onto the processor's
unique architecture. Discussed in this chapter are the MIPSs unique architecture. Discussed in this chapter are the MIPS's
interrupt response and control mechanisms as they pertain to interrupt response and control mechanisms as they pertain to
RTEMS. RTEMS.

View File

@ -42,7 +42,7 @@ unit or coprocessor. When defining the list of features present on a
particular CPU model, one simply notes that floating point hardware particular CPU model, one simply notes that floating point hardware
is or is not present and defines a single constant appropriately. is or is not present and defines a single constant appropriately.
Conditional compilation is utilized to include the appropriate source Conditional compilation is utilized to include the appropriate source
code for this CPU models feature set. It is important to note that code for this CPU model's feature set. It is important to note that
this means that RTEMS is thus compiled using the appropriate feature set this means that RTEMS is thus compiled using the appropriate feature set
and compilation flags optimal for this CPU model used. The alternative and compilation flags optimal for this CPU model used. The alternative
would be to generate a binary which would execute on all family members would be to generate a binary which would execute on all family members
@ -118,7 +118,7 @@ Calling Conventions
=================== ===================
Each high-level language compiler generates subroutine entry and exit Each high-level language compiler generates subroutine entry and exit
code based upon a set of rules known as the compilers calling convention. code based upon a set of rules known as the compiler's calling convention.
These rules address the following issues: These rules address the following issues:
- register preservation and usage - register preservation and usage
@ -127,7 +127,7 @@ These rules address the following issues:
- call and return mechanism - call and return mechanism
A compilers calling convention is of importance when A compiler's calling convention is of importance when
interfacing to subroutines written in another language either interfacing to subroutines written in another language either
assembly or high-level. Even when the high-level language and assembly or high-level. Even when the high-level language and
target processor are the same, different compilers may use target processor are the same, different compilers may use
@ -177,7 +177,7 @@ Memory Model
A processor may support any combination of memory A processor may support any combination of memory
models ranging from pure physical addressing to complex demand models ranging from pure physical addressing to complex demand
paged virtual memory systems. RTEMS supports a flat memory paged virtual memory systems. RTEMS supports a flat memory
model which ranges contiguously over the processors allowable model which ranges contiguously over the processor's allowable
address space. RTEMS does not support segmentation or virtual address space. RTEMS does not support segmentation or virtual
memory of any kind. The appropriate memory model for RTEMS memory of any kind. The appropriate memory model for RTEMS
provided by the targeted processor and related characteristics provided by the targeted processor and related characteristics
@ -219,7 +219,7 @@ processors require that an interrupt handler utilize some special control
mechanisms to return to the normal processing stream. Although RTEMS mechanisms to return to the normal processing stream. Although RTEMS
hides many of the processor dependent details of interrupt processing, hides many of the processor dependent details of interrupt processing,
it is important to understand how the RTEMS interrupt manager is mapped it is important to understand how the RTEMS interrupt manager is mapped
onto the processors unique architecture. onto the processor's unique architecture.
RTEMS supports a dedicated interrupt stack for all architectures. RTEMS supports a dedicated interrupt stack for all architectures.
On architectures with hardware support for a dedicated interrupt stack, On architectures with hardware support for a dedicated interrupt stack,
@ -243,7 +243,7 @@ to switch to the interrupt stack.
In some configurations, RTEMS allocates the interrupt stack from the In some configurations, RTEMS allocates the interrupt stack from the
Workspace Area. The amount of memory allocated for the interrupt stack Workspace Area. The amount of memory allocated for the interrupt stack
is user configured and based upon the ``confdefs.h`` parameter``CONFIGURE_INTERRUPT_STACK_SIZE``. This parameter is described is user configured and based upon the ``confdefs.h`` parameter``CONFIGURE_INTERRUPT_STACK_SIZE``. This parameter is described
in detail in the Configuring a System chapter of the Users Guide. in detail in the Configuring a System chapter of the User's Guide.
On configurations in which RTEMS allocates the interrupt stack, during On configurations in which RTEMS allocates the interrupt stack, during
the initialization process, RTEMS will also install its interrupt stack. the initialization process, RTEMS will also install its interrupt stack.
In other configurations, the interrupt stack is allocated and installed In other configurations, the interrupt stack is allocated and installed
@ -318,7 +318,7 @@ handlers are configured or all of them return without taking action to
shutdown the processor or reset, a default fatal error handler is invoked. shutdown the processor or reset, a default fatal error handler is invoked.
Most of the action performed as part of processing the fatal error are Most of the action performed as part of processing the fatal error are
described in detail in the Fatal Error Manager chapter in the Users described in detail in the Fatal Error Manager chapter in the User's
Guide. However, the if no user provided extension or BSP specific fatal Guide. However, the if no user provided extension or BSP specific fatal
error handler takes action, the final default action is to invoke a error handler takes action, the final default action is to invoke a
CPU architecture specific function. Typically this function disables CPU architecture specific function. Typically this function disables
@ -414,7 +414,7 @@ In each of the architecture specific chapters, this section will present
a discussion of architecture specific BSP issues. For more information a discussion of architecture specific BSP issues. For more information
on developing a BSP, refer to BSP and Device Driver Development Guide on developing a BSP, refer to BSP and Device Driver Development Guide
and the chapter titled Board Support Packages in the RTEMS and the chapter titled Board Support Packages in the RTEMS
Applications Users Guide. Applications User's Guide.
System Reset System Reset
------------ ------------

View File

@ -20,27 +20,27 @@ the following documents available from Motorola and IBM:
- *PowerPC Microprocessor Family: The Programming Environment* - *PowerPC Microprocessor Family: The Programming Environment*
(Motorola Document MPRPPCFPE-01). (Motorola Document MPRPPCFPE-01).
- *IBM PPC403GB Embedded Controller Users Manual*. - *IBM PPC403GB Embedded Controller User's Manual*.
- *PoweRisControl MPC500 Family RCPU RISC Central Processing - *PoweRisControl MPC500 Family RCPU RISC Central Processing
Unit Reference Manual* (Motorola Document RCPUURM/AD). Unit Reference Manual* (Motorola Document RCPUURM/AD).
- *PowerPC 601 RISC Microprocessor Users Manual* - *PowerPC 601 RISC Microprocessor User's Manual*
(Motorola Document MPR601UM/AD). (Motorola Document MPR601UM/AD).
- *PowerPC 603 RISC Microprocessor Users Manual* - *PowerPC 603 RISC Microprocessor User's Manual*
(Motorola Document MPR603UM/AD). (Motorola Document MPR603UM/AD).
- *PowerPC 603e RISC Microprocessor Users Manual* - *PowerPC 603e RISC Microprocessor User's Manual*
(Motorola Document MPR603EUM/AD). (Motorola Document MPR603EUM/AD).
- *PowerPC 604 RISC Microprocessor Users Manual* - *PowerPC 604 RISC Microprocessor User's Manual*
(Motorola Document MPR604UM/AD). (Motorola Document MPR604UM/AD).
- *PowerPC MPC821 Portable Systems Microprocessor Users Manual* - *PowerPC MPC821 Portable Systems Microprocessor User's Manual*
(Motorola Document MPC821UM/AD). (Motorola Document MPC821UM/AD).
- *PowerQUICC MPC860 Users Manual* (Motorola Document MPC860UM/AD). - *PowerQUICC MPC860 User's Manual* (Motorola Document MPC860UM/AD).
Motorola maintains an on-line electronic library for the PowerPC Motorola maintains an on-line electronic library for the PowerPC
at the following URL: at the following URL:
@ -75,7 +75,7 @@ model specified on the compilation command line.
Alignment Alignment
--------- ---------
The macro PPC_ALIGNMENT is set to the PowerPC models worst case alignment The macro PPC_ALIGNMENT is set to the PowerPC model's worst case alignment
requirement for data types on a byte boundary. This value is used requirement for data types on a byte boundary. This value is used
to derive the alignment restrictions for memory allocated from to derive the alignment restrictions for memory allocated from
regions and partitions. regions and partitions.
@ -411,8 +411,8 @@ Interrupt Processing
Although RTEMS hides many of the processor dependent Although RTEMS hides many of the processor dependent
details of interrupt processing, it is important to understand details of interrupt processing, it is important to understand
how the RTEMS interrupt manager is mapped onto the processors how the RTEMS interrupt manager is mapped onto the processor's
unique architecture. Discussed in this chapter are the PowerPCs unique architecture. Discussed in this chapter are the PowerPC's
interrupt response and control mechanisms as they pertain to interrupt response and control mechanisms as they pertain to
RTEMS. RTEMS.
@ -468,10 +468,10 @@ interrupt handler, then upon receipt of the interrupt, the
processor passes control to the RTEMS interrupt handler which processor passes control to the RTEMS interrupt handler which
performs the following actions: performs the following actions:
- saves the state of the interrupted task on its stack, - saves the state of the interrupted task on it's stack,
- saves all registers which are not normally preserved - saves all registers which are not normally preserved
by the calling sequence so the users interrupt service by the calling sequence so the user's interrupt service
routine can be written in a high-level language. routine can be written in a high-level language.
- if this is the outermost (i.e. non-nested) interrupt, - if this is the outermost (i.e. non-nested) interrupt,
@ -560,7 +560,7 @@ An RTEMS based application is initiated or
re-initiated when the PowerPC processor is reset. The PowerPC re-initiated when the PowerPC processor is reset. The PowerPC
architecture defines a Reset Exception, but leaves the architecture defines a Reset Exception, but leaves the
details of the CPU state as implementation specific. Please details of the CPU state as implementation specific. Please
refer to the Users Manual for the CPU model in question. refer to the User's Manual for the CPU model in question.
In general, at power-up the PowerPC begin execution at address In general, at power-up the PowerPC begin execution at address
0xFFF00100 in supervisor mode with all exceptions disabled. For 0xFFF00100 in supervisor mode with all exceptions disabled. For
@ -579,7 +579,7 @@ observed to prevent some emulators from working properly, so it
may be necessary to run with caching disabled to use these emulators. may be necessary to run with caching disabled to use these emulators.
In addition to the requirements described in the*Board Support Packages* chapter of the RTEMS C In addition to the requirements described in the*Board Support Packages* chapter of the RTEMS C
Applications Users Manual for the reset code Applications User's Manual for the reset code
which is executed before the call to ``rtems_initialize_executive``, which is executed before the call to ``rtems_initialize_executive``,
the PowrePC version has the following specific requirements: the PowrePC version has the following specific requirements:
@ -596,7 +596,7 @@ the PowrePC version has the following specific requirements:
- Must enable traps so window overflow and underflow - Must enable traps so window overflow and underflow
conditions can be properly handled. conditions can be properly handled.
- Must initialize the PowerPCs initial Exception Table with default - Must initialize the PowerPC's initial Exception Table with default
handlers. handlers.
.. COMMENT: COPYRIGHT (c) 1988-2002. .. COMMENT: COPYRIGHT (c) 1988-2002.

View File

@ -33,7 +33,7 @@ the following documents available from SPARC International, Inc.
**ERC32 Specific Information** **ERC32 Specific Information**
The European Space Agencys ERC32 is a three chip The European Space Agency's ERC32 is a three chip
computing core implementing a SPARC V7 processor and associated computing core implementing a SPARC V7 processor and associated
support circuitry for embedded space applications. The integer support circuitry for embedded space applications. The integer
and floating-point units (90C601E & 90C602E) are based on the and floating-point units (90C601E & 90C602E) are based on the
@ -56,7 +56,7 @@ browser at ftp://ftp.estec.esa.nl/pub/ws/wsd/erc32.
- MEC Device Specification - MEC Device Specification
Additionally, the SPARC RISC Users Guide from Matra Additionally, the SPARC RISC User's Guide from Matra
MHS documents the functionality of the integer and floating MHS documents the functionality of the integer and floating
point units including the instruction set information. To point units including the instruction set information. To
obtain this document as well as ERC32 components and VHDL models obtain this document as well as ERC32 components and VHDL models
@ -112,7 +112,7 @@ features present on a particular CPU model, one simply notes
that floating point hardware is or is not present and defines a that floating point hardware is or is not present and defines a
single constant appropriately. Conditional compilation is single constant appropriately. Conditional compilation is
utilized to include the appropriate source code for this CPU utilized to include the appropriate source code for this CPU
models feature set. It is important to note that this means model's feature set. It is important to note that this means
that RTEMS is thus compiled using the appropriate feature set that RTEMS is thus compiled using the appropriate feature set
and compilation flags optimal for this CPU model used. The and compilation flags optimal for this CPU model used. The
alternative would be to generate a binary which would execute on alternative would be to generate a binary which would execute on
@ -130,7 +130,7 @@ CPU Model Name
The macro CPU_MODEL_NAME is a string which designates The macro CPU_MODEL_NAME is a string which designates
the name of this CPU model. For example, for the European Space the name of this CPU model. For example, for the European Space
Agencys ERC32 SPARC model, this macro is set to the string Agency's ERC32 SPARC model, this macro is set to the string
"erc32". "erc32".
Floating Point Unit Floating Point Unit
@ -385,7 +385,7 @@ registers windows.
Because the set of register windows is finite, it is Because the set of register windows is finite, it is
possible to execute enough save instructions without possible to execute enough save instructions without
corresponding restores to consume all of the register windows. corresponding restore's to consume all of the register windows.
This is easily accomplished in a high level language because This is easily accomplished in a high level language because
each subroutine typically performs a save instruction upon each subroutine typically performs a save instruction upon
entry. Thus having a subroutine call depth greater than the entry. Thus having a subroutine call depth greater than the
@ -396,7 +396,7 @@ is responsible for saving the contents of the oldest register
window on the program stack. window on the program stack.
Similarly, the subroutines will eventually complete Similarly, the subroutines will eventually complete
and begin to perform restores. If the restore results in the and begin to perform restore's. If the restore results in the
need for a register window which has previously been written to need for a register window which has previously been written to
memory as part of an overflow, then a window underflow condition memory as part of an overflow, then a window underflow condition
results. Just like the window overflow, the window underflow results. Just like the window overflow, the window underflow
@ -458,7 +458,7 @@ Call and Return Mechanism
The SPARC architecture supports a simple yet The SPARC architecture supports a simple yet
effective call and return mechanism. A subroutine is invoked effective call and return mechanism. A subroutine is invoked
via the call (call) instruction. This instruction places the via the call (call) instruction. This instruction places the
return address in the callers output register 7 (o7). After return address in the caller's output register 7 (o7). After
the callee executes a save instruction, this value is available the callee executes a save instruction, this value is available
in input register 7 (i7) until the corresponding restore in input register 7 (i7) until the corresponding restore
instruction is executed. instruction is executed.
@ -466,7 +466,7 @@ instruction is executed.
The callee returns to the caller via a jmp to the The callee returns to the caller via a jmp to the
return address. There is a delay slot following this return address. There is a delay slot following this
instruction which is commonly used to execute a restore instruction which is commonly used to execute a restore
instruction if a register window was allocated by this instruction - if a register window was allocated by this
subroutine. subroutine.
It is important to note that the SPARC subroutine It is important to note that the SPARC subroutine
@ -500,7 +500,7 @@ Parameter Passing
----------------- -----------------
RTEMS assumes that arguments are placed in the RTEMS assumes that arguments are placed in the
callers output registers with the first argument in output caller's output registers with the first argument in output
register 0 (o0), the second argument in output register 1 (o1), register 0 (o0), the second argument in output register 1 (o1),
and so forth. Until the callee executes a save instruction, the and so forth. Until the callee executes a save instruction, the
parameters are still visible in the output registers. After the parameters are still visible in the output registers. After the
@ -534,7 +534,7 @@ Memory Model
A processor may support any combination of memory A processor may support any combination of memory
models ranging from pure physical addressing to complex demand models ranging from pure physical addressing to complex demand
paged virtual memory systems. RTEMS supports a flat memory paged virtual memory systems. RTEMS supports a flat memory
model which ranges contiguously over the processors allowable model which ranges contiguously over the processor's allowable
address space. RTEMS does not support segmentation or virtual address space. RTEMS does not support segmentation or virtual
memory of any kind. The appropriate memory model for RTEMS memory of any kind. The appropriate memory model for RTEMS
provided by the targeted processor and related characteristics provided by the targeted processor and related characteristics
@ -601,8 +601,8 @@ Most processors require that an interrupt handler utilize some
special control mechanisms to return to the normal processing special control mechanisms to return to the normal processing
stream. Although RTEMS hides many of the processor dependent stream. Although RTEMS hides many of the processor dependent
details of interrupt processing, it is important to understand details of interrupt processing, it is important to understand
how the RTEMS interrupt manager is mapped onto the processors how the RTEMS interrupt manager is mapped onto the processor's
unique architecture. Discussed in this chapter are the SPARCs unique architecture. Discussed in this chapter are the SPARC's
interrupt response and control mechanisms as they pertain to interrupt response and control mechanisms as they pertain to
RTEMS. RTEMS.
@ -676,7 +676,7 @@ interrupt handler, then upon receipt of the interrupt, the
processor passes control to the RTEMS interrupt handler which processor passes control to the RTEMS interrupt handler which
performs the following actions: performs the following actions:
- saves the state of the interrupted task on its stack, - saves the state of the interrupted task on it's stack,
- insures that a register window is available for - insures that a register window is available for
subsequent traps, subsequent traps,
@ -713,7 +713,7 @@ trap cannot be correctly processed unless (1) traps are enabled
and (2) a register window is reserved for traps. Thus, the and (2) a register window is reserved for traps. Thus, the
RTEMS interrupt handler insures that a register window is RTEMS interrupt handler insures that a register window is
available for subsequent traps before enabling traps and available for subsequent traps before enabling traps and
invoking the users interrupt handler. invoking the user's interrupt handler.
Interrupt Levels Interrupt Levels
---------------- ----------------
@ -792,7 +792,7 @@ execute on the stack of the RTEMS task which they interrupted.
This artificially inflates the stack requirements for each task This artificially inflates the stack requirements for each task
since EVERY task stack would have to include enough space to since EVERY task stack would have to include enough space to
account for the worst case interrupt stack requirements in account for the worst case interrupt stack requirements in
addition to its own worst case usage. RTEMS addresses this addition to it's own worst case usage. RTEMS addresses this
problem on the SPARC by providing a dedicated interrupt stack problem on the SPARC by providing a dedicated interrupt stack
managed by software. managed by software.
@ -864,7 +864,7 @@ to support a particular processor and target board combination.
This chapter presents a discussion of SPARC specific BSP issues. This chapter presents a discussion of SPARC specific BSP issues.
For more information on developing a BSP, refer to the chapter For more information on developing a BSP, refer to the chapter
titled Board Support Packages in the RTEMS titled Board Support Packages in the RTEMS
Applications Users Guide. Applications User's Guide.
System Reset System Reset
------------ ------------
@ -891,14 +891,14 @@ reflect the last trap which occurred before the reset.
Processor Initialization Processor Initialization
------------------------ ------------------------
It is the responsibility of the applications It is the responsibility of the application's
initialization code to initialize the TBR and install trap initialization code to initialize the TBR and install trap
handlers for at least the register window overflow and register handlers for at least the register window overflow and register
window underflow conditions. Traps should be enabled before window underflow conditions. Traps should be enabled before
invoking any subroutines to allow for register window invoking any subroutines to allow for register window
management. However, interrupts should be disabled by setting management. However, interrupts should be disabled by setting
the Processor Interrupt Level (pil) field of the psr to 15. the Processor Interrupt Level (pil) field of the psr to 15.
RTEMS installs its own Trap Table as part of initialization RTEMS installs it's own Trap Table as part of initialization
which is initialized with the contents of the Trap Table in which is initialized with the contents of the Trap Table in
place when the ``rtems_initialize_executive`` directive was invoked. place when the ``rtems_initialize_executive`` directive was invoked.
Upon completion of executive initialization, interrupts are Upon completion of executive initialization, interrupts are
@ -926,7 +926,7 @@ specific requirements:
- Must enable traps so window overflow and underflow - Must enable traps so window overflow and underflow
conditions can be properly handled. conditions can be properly handled.
- Must initialize the SPARCs initial trap table with at - Must initialize the SPARC's initial trap table with at
least trap handlers for register window overflow and register least trap handlers for register window overflow and register
window underflow. window underflow.

View File

@ -16,7 +16,7 @@ through UltraSPARC IV processors.
The following documents were used in developing the SPARC-64 sun4u port: The following documents were used in developing the SPARC-64 sun4u port:
- UltraSPARC User’s Manual - UltraSPARC User's Manual
(http://www.sun.com/microelectronics/manuals/ultrasparc/802-7220-02.pdf) (http://www.sun.com/microelectronics/manuals/ultrasparc/802-7220-02.pdf)
- UltraSPARC IIIi Processor (datasheets.chipdb.org/Sun/UltraSparc-IIIi.pdf) - UltraSPARC IIIi Processor (datasheets.chipdb.org/Sun/UltraSparc-IIIi.pdf)
@ -104,7 +104,7 @@ Calling Conventions
Each high-level language compiler generates Each high-level language compiler generates
subroutine entry and exit code based upon a set of rules known subroutine entry and exit code based upon a set of rules known
as the compilers calling convention. These rules address the as the compiler's calling convention. These rules address the
following issues: following issues:
- register preservation and usage - register preservation and usage
@ -113,7 +113,7 @@ following issues:
- call and return mechanism - call and return mechanism
A compilers calling convention is of importance when A compiler's calling convention is of importance when
interfacing to subroutines written in another language either interfacing to subroutines written in another language either
assembly or high-level. Even when the high-level language and assembly or high-level. Even when the high-level language and
target processor are the same, different compilers may use target processor are the same, different compilers may use
@ -222,7 +222,7 @@ The SPARC architecture includes a number of special registers:
*``Processor State Register (pstate)``* *``Processor State Register (pstate)``*
The privileged pstate register contains control fields for the proces- The privileged pstate register contains control fields for the proces-
sor’s current state. Its flag fields include the interrupt enable, privi- sor's current state. Its flag fields include the interrupt enable, privi-
leged mode, and enable FPU. leged mode, and enable FPU.
*``Processor Interrupt Level (pil)``* *``Processor Interrupt Level (pil)``*
@ -270,7 +270,7 @@ registers are shared between adjacent registers windows.
Because the set of register windows is finite, it is Because the set of register windows is finite, it is
possible to execute enough save instructions without possible to execute enough save instructions without
corresponding restores to consume all of the register windows. corresponding restore's to consume all of the register windows.
This is easily accomplished in a high level language because This is easily accomplished in a high level language because
each subroutine typically performs a save instruction upon each subroutine typically performs a save instruction upon
entry. Thus having a subroutine call depth greater than the entry. Thus having a subroutine call depth greater than the
@ -281,7 +281,7 @@ is responsible for saving the contents of the oldest register
window on the program stack. window on the program stack.
Similarly, the subroutines will eventually complete Similarly, the subroutines will eventually complete
and begin to perform restores. If the restore results in the and begin to perform restore's. If the restore results in the
need for a register window which has previously been written to need for a register window which has previously been written to
memory as part of an overflow, then a window underflow condition memory as part of an overflow, then a window underflow condition
results. Just like the window overflow, the window underflow results. Just like the window overflow, the window underflow
@ -338,7 +338,7 @@ Call and Return Mechanism
The SPARC architecture supports a simple yet The SPARC architecture supports a simple yet
effective call and return mechanism. A subroutine is invoked effective call and return mechanism. A subroutine is invoked
via the call (call) instruction. This instruction places the via the call (call) instruction. This instruction places the
return address in the callers output register 7 (o7). After return address in the caller's output register 7 (o7). After
the callee executes a save instruction, this value is available the callee executes a save instruction, this value is available
in input register 7 (i7) until the corresponding restore in input register 7 (i7) until the corresponding restore
instruction is executed. instruction is executed.
@ -346,7 +346,7 @@ instruction is executed.
The callee returns to the caller via a jmp to the The callee returns to the caller via a jmp to the
return address. There is a delay slot following this return address. There is a delay slot following this
instruction which is commonly used to execute a restore instruction which is commonly used to execute a restore
instruction if a register window was allocated by this instruction - if a register window was allocated by this
subroutine. subroutine.
It is important to note that the SPARC subroutine It is important to note that the SPARC subroutine
@ -354,7 +354,7 @@ call and return mechanism does not automatically save and
restore any registers. This is accomplished via the save and restore any registers. This is accomplished via the save and
restore instructions which manage the set of registers windows. restore instructions which manage the set of registers windows.
This allows for the compiler to generate leaf-optimized functions This allows for the compiler to generate leaf-optimized functions
that utilize the caller’s output registers without using save and restore. that utilize the caller's output registers without using save and restore.
Calling Mechanism Calling Mechanism
----------------- -----------------
@ -376,7 +376,7 @@ Parameter Passing
----------------- -----------------
RTEMS assumes that arguments are placed in the RTEMS assumes that arguments are placed in the
callers output registers with the first argument in output caller's output registers with the first argument in output
register 0 (o0), the second argument in output register 1 (o1), register 0 (o0), the second argument in output register 1 (o1),
and so forth. Until the callee executes a save instruction, the and so forth. Until the callee executes a save instruction, the
parameters are still visible in the output registers. After the parameters are still visible in the output registers. After the
@ -410,7 +410,7 @@ Memory Model
A processor may support any combination of memory A processor may support any combination of memory
models ranging from pure physical addressing to complex demand models ranging from pure physical addressing to complex demand
paged virtual memory systems. RTEMS supports a flat memory paged virtual memory systems. RTEMS supports a flat memory
model which ranges contiguously over the processors allowable model which ranges contiguously over the processor's allowable
address space. RTEMS does not support segmentation or virtual address space. RTEMS does not support segmentation or virtual
memory of any kind. The appropriate memory model for RTEMS memory of any kind. The appropriate memory model for RTEMS
provided by the targeted processor and related characteristics provided by the targeted processor and related characteristics
@ -542,7 +542,7 @@ interrupt handler, then upon receipt of the interrupt, the
processor passes control to the RTEMS interrupt handler which processor passes control to the RTEMS interrupt handler which
performs the following actions: performs the following actions:
- saves the state of the interrupted task on its stack, - saves the state of the interrupted task on it's stack,
- switches the processor to trap level 0, - switches the processor to trap level 0,
@ -597,7 +597,7 @@ execute on the stack of the RTEMS task which they interrupted.
This artificially inflates the stack requirements for each task This artificially inflates the stack requirements for each task
since EVERY task stack would have to include enough space to since EVERY task stack would have to include enough space to
account for the worst case interrupt stack requirements in account for the worst case interrupt stack requirements in
addition to its own worst case usage. RTEMS addresses this addition to it's own worst case usage. RTEMS addresses this
problem on the SPARC by providing a dedicated interrupt stack problem on the SPARC by providing a dedicated interrupt stack
managed by software. managed by software.
@ -661,7 +661,7 @@ to support a particular processor and target board combination.
This chapter presents a discussion of SPARC specific BSP issues. This chapter presents a discussion of SPARC specific BSP issues.
For more information on developing a BSP, refer to the chapter For more information on developing a BSP, refer to the chapter
titled Board Support Packages in the RTEMS titled Board Support Packages in the RTEMS
Applications Users Guide. Applications User's Guide.
HelenOS and Open Firmware HelenOS and Open Firmware
------------------------- -------------------------

View File

@ -84,8 +84,8 @@ Interrupt Processing
Although RTEMS hides many of the processor dependent Although RTEMS hides many of the processor dependent
details of interrupt processing, it is important to understand details of interrupt processing, it is important to understand
how the RTEMS interrupt manager is mapped onto the processors how the RTEMS interrupt manager is mapped onto the processor's
unique architecture. Discussed in this chapter are the MIPSs unique architecture. Discussed in this chapter are the MIPS's
interrupt response and control mechanisms as they pertain to interrupt response and control mechanisms as they pertain to
RTEMS. RTEMS.

View File

@ -103,7 +103,7 @@ as ``${RTEMS_ROOT}`` in this discussion.
be discussed further in this document. be discussed further in this document.
``${RTEMS_ROOT}/cpukit/`` ``${RTEMS_ROOT}/cpukit/``
This directory is the root for all of the "multilibable" This directory is the root for all of the "multilib'able"
portions of RTEMS. This is a GNU way of saying the portions of RTEMS. This is a GNU way of saying the
contents of this directory can be compiled like the contents of this directory can be compiled like the
C Library (``libc.a``) and the functionality is C Library (``libc.a``) and the functionality is
@ -123,7 +123,7 @@ as ``${RTEMS_ROOT}`` in this discussion.
``${RTEMS_ROOT}/make/`` ``${RTEMS_ROOT}/make/``
This directory contains files which support the This directory contains files which support the
RTEMS Makefiles. From a users perspective, the RTEMS Makefile's. From a user's perspective, the
most important parts are found in the ``custom/`` most important parts are found in the ``custom/``
subdirectory. Each ".cfg" file in this directory subdirectory. Each ".cfg" file in this directory
is associated with a specific BSP and describes is associated with a specific BSP and describes
@ -232,7 +232,7 @@ directory and a description of each.
``${RTEMS_ROOT}/c/src/nfsclient/`` ``${RTEMS_ROOT}/c/src/nfsclient/``
This directory contains a Network File System (NFS) client This directory contains a Network File System (NFS) client
for RTEMS. With this file system, a users application can for RTEMS. With this file system, a user's application can
access files on a remote computer. access files on a remote computer.
``${RTEMS_ROOT}/c/src/optman/`` ``${RTEMS_ROOT}/c/src/optman/``
@ -554,10 +554,10 @@ and PostScript.
``${RTEMS_ROOT}/doc/ada_user/`` ``${RTEMS_ROOT}/doc/ada_user/``
This directory contains the source code for the *RTEMS This directory contains the source code for the *RTEMS
Applications Ada Users Guide* which documents the Ada95 Applications Ada User's Guide* which documents the Ada95
binding to the Classic API. This manual is produced from binding to the Classic API. This manual is produced from
from the same source base as the *RTEMS Application from the same source base as the *RTEMS Application
C Users Guide*. C User's Guide*.
``${RTEMS_ROOT}/doc/bsp_howto/`` ``${RTEMS_ROOT}/doc/bsp_howto/``
This directory contains the source code for the*RTEMS BSP and Device Driver Development Guide*. This directory contains the source code for the*RTEMS BSP and Device Driver Development Guide*.
@ -605,8 +605,8 @@ and PostScript.
This directory contains the source code for the*RTEMS POSIX 1003.1 Compliance Guide*. This directory contains the source code for the*RTEMS POSIX 1003.1 Compliance Guide*.
``${RTEMS_ROOT}/doc/posix_users/`` ``${RTEMS_ROOT}/doc/posix_users/``
This directory contains the source code for the*RTEMS POSIX API Users Guide*. It is important to This directory contains the source code for the*RTEMS POSIX API User's Guide*. It is important to
note that RTEMS support for POSIX is a combination of note that RTEMS' support for POSIX is a combination of
functionality provided by RTEMS and the Newlib C Library functionality provided by RTEMS and the Newlib C Library
so some functionality is documented by Newlib. so some functionality is documented by Newlib.
@ -628,7 +628,7 @@ and PostScript.
``${RTEMS_ROOT}/doc/user/`` ``${RTEMS_ROOT}/doc/user/``
This directory contains the source code for the *RTEMS This directory contains the source code for the *RTEMS
Applications C Users Guide* which documents the Classic API. Applications C User's Guide* which documents the Classic API.
.. COMMENT: COPYRIGHT (c) 1989-2007. .. COMMENT: COPYRIGHT (c) 1989-2007.

View File

@ -2,7 +2,7 @@
RTEMS Development Environment Guide RTEMS Development Environment Guide
=================================== ===================================
COPYRIGHT © 1988 - 2015. COPYRIGHT (c) 1988 - 2015.
On-Line Applications Research Corporation (OAR). On-Line Applications Research Corporation (OAR).

View File

@ -129,7 +129,7 @@ The following messages are printed:
Hello World Hello World
\*** END OF HELLO WORLD TEST \*** \*** END OF HELLO WORLD TEST \***
These messages are printed from the applications These messages are printed from the application's
single initialization task. If the above messages are not single initialization task. If the above messages are not
printed correctly, then either the BSP start up code or the printed correctly, then either the BSP start up code or the
console output routine is not operating properly. console output routine is not operating properly.
@ -199,7 +199,7 @@ when using the Ada version to output the following messages:
\*** END OF SAMPLE SINGLE PROCESSOR APPLICATION \*** \*** END OF SAMPLE SINGLE PROCESSOR APPLICATION \***
The first two messages are printed from the The first two messages are printed from the
applications single initialization task. The final messages application's single initialization task. The final messages
are printed from the single application task. are printed from the single application task.
Base Multiple Processor Application Base Multiple Processor Application
@ -233,7 +233,7 @@ The second node will print the following messages:
This task has the id of 0x20002 This task has the id of 0x20002
\*** END OF SAMPLE MULTIPROCESSOR APPLICATION \*** \*** END OF SAMPLE MULTIPROCESSOR APPLICATION \***
The herald is printed from the applications single The herald is printed from the application's single
initialization task on each node. The final messages are initialization task on each node. The final messages are
printed from the single application task on each node. printed from the single application task on each node.

View File

@ -116,7 +116,7 @@ smaller than download.sr.
The source for packhex first appeared in the May 1993 The source for packhex first appeared in the May 1993
issue of Embedded Systems magazine. The code was downloaded issue of Embedded Systems magazine. The code was downloaded
from their BBS. Unfortunately, the authors name was not from their BBS. Unfortunately, the author's name was not
provided in the listing. provided in the listing.
.. COMMENT: unhex .. COMMENT: unhex
@ -133,7 +133,7 @@ unhex - Convert Hexadecimal File into Binary Equivalent
**DESCRIPTION** **DESCRIPTION**
unhex accepts Intel Hexadecimal, Motorola Srecord, or unhex accepts Intel Hexadecimal, Motorola Srecord, or
TI B records and converts them to their binary equivalent. TI 'B' records and converts them to their binary equivalent.
The output may sent to standout or may be placed in a specified The output may sent to standout or may be placed in a specified
file with the -o option. The designated output file may not be file with the -o option. The designated output file may not be
an input file. Multiple input files may be specified with their an input file. Multiple input files may be specified with their

View File

@ -1,10 +1,10 @@
System Call Development Notes System Call Development Notes
############################# #############################
This set of routines represents the applications interface to files and directories This set of routines represents the application's interface to files and directories
under the RTEMS filesystem. All routines are compliant with POSIX standards if a under the RTEMS filesystem. All routines are compliant with POSIX standards if a
specific interface has been established. The list below represents the routines that have specific interface has been established. The list below represents the routines that have
been included as part of the applications interface. been included as part of the application's interface.
# access() # access()
@ -267,7 +267,7 @@ structure to make it an invalid file descriptor. Apparently the memory
that is about to be freed may still be referenced before it is that is about to be freed may still be referenced before it is
reallocated. reallocated.
The dd_buf structures memory is reallocated before the control structure The dd_buf structure's memory is reallocated before the control structure
that contains the pointer to the dd_buf region. that contains the pointer to the dd_buf region.
DIR control memory is reallocated. DIR control memory is reallocated.
@ -629,9 +629,9 @@ rtems_filesystem_is_separator. If it does the search starts from the root
of the RTEMS filesystem; otherwise the search will start from the current of the RTEMS filesystem; otherwise the search will start from the current
directory. directory.
The OPS table evalformake() function for the parents filesystem is used The OPS table evalformake() function for the parent's filesystem is used
to locate the node that will be the parent of the new link. It will also to locate the node that will be the parent of the new link. It will also
locate the start of the new paths name. This name will be used to define locate the start of the new path's name. This name will be used to define
a child under the parent directory. a child under the parent directory.
If the parent is found, the routine will determine if the hard link that If the parent is found, the routine will determine if the hard link that

View File

@ -78,7 +78,7 @@ The following POSIX constraints must be honored by all filesystems.
system cannot be removed. system cannot be removed.
- On filesystems supporting hard links, a link count is maintained. - On filesystems supporting hard links, a link count is maintained.
Prior to node removal, the nodes link count is decremented by one. The Prior to node removal, the node's link count is decremented by one. The
link count must be less than one to allow for removal of the node. link count must be less than one to allow for removal of the node.
API Layering API Layering
@ -168,7 +168,7 @@ provided to the application:
# write() # write()
The filesystems type as well as the node type within the filesystem The filesystem's type as well as the node type within the filesystem
determine the nature of the processing that must be performed for each of determine the nature of the processing that must be performed for each of
the functions above. The RTEMS filesystem provides a framework that the functions above. The RTEMS filesystem provides a framework that
allows new filesystem to be developed and integrated without alteration allows new filesystem to be developed and integrated without alteration
@ -634,7 +634,7 @@ const char \*dev
The is intended to contain a string that identifies the device that contains The is intended to contain a string that identifies the device that contains
the filesystem information. The filesystems that are currently implemented the filesystem information. The filesystems that are currently implemented
are memory based and dont require a device specification. are memory based and don't require a device specification.
If the mt_point_node.node_access is NULL then we are mounting the base file If the mt_point_node.node_access is NULL then we are mounting the base file
system. system.
@ -645,7 +645,7 @@ system.
The node will have read, write and execute permissions for owner, group and The node will have read, write and execute permissions for owner, group and
others. others.
The nodes name will be a null string. The node's name will be a null string.
A filesystem information structure(fs_info) will be allocated and A filesystem information structure(fs_info) will be allocated and
initialized for the IMFS filesystem. The fs_info pointer in the mount table initialized for the IMFS filesystem. The fs_info pointer in the mount table
@ -759,7 +759,7 @@ File Handler Table Functions
Handler table functions are defined in a ``rtems_filesystem_file_handlers_r`` Handler table functions are defined in a ``rtems_filesystem_file_handlers_r``
structure. It defines functions that are specific to a node type in a given structure. It defines functions that are specific to a node type in a given
filesystem. One table exists for each of the filesystems node types. The filesystem. One table exists for each of the filesystem's node types. The
structure definition appears below. It is followed by general developmental structure definition appears below. It is followed by general developmental
information on each of the functions associated with regular files contained information on each of the functions associated with regular files contained
in this function management structure. in this function management structure.

View File

@ -56,10 +56,10 @@ explanation of their role in the filesystem.
is a unique node identification number is a unique node identification number
*st_uid* *st_uid*
is the user ID of the files owner is the user ID of the file's owner
*st_gid* *st_gid*
is the group ID of the files owner is the group ID of the file's owner
*st_atime* *st_atime*
is the time of the last access to this file is the time of the last access to this file
@ -499,7 +499,7 @@ filesystem for the system that contains the mount point. It will determine
if the point that we are trying to mount onto is a node of IMFS_DIRECTORY if the point that we are trying to mount onto is a node of IMFS_DIRECTORY
type. type.
If it is the nodes info element is altered so that the info.directory.mt_fs If it is the node's info element is altered so that the info.directory.mt_fs
element points to the mount table chain entry that is associated with the element points to the mount table chain entry that is associated with the
mounted filesystem at this point. The info.directory.mt_fs element can be mounted filesystem at this point. The info.directory.mt_fs element can be
examined to determine if a filesystem is mounted at a directory. If it is examined to determine if a filesystem is mounted at a directory. If it is
@ -602,7 +602,7 @@ const char \*dev
The is intended to contain a string that identifies the device that contains The is intended to contain a string that identifies the device that contains
the filesystem information. The filesystems that are currently implemented the filesystem information. The filesystems that are currently implemented
are memory based and dont require a device specification. are memory based and don't require a device specification.
If the mt_point_node.node_access is NULL then we are mounting the base file If the mt_point_node.node_access is NULL then we are mounting the base file
system. system.
@ -613,7 +613,7 @@ system.
The node will have read, write and execute permissions for owner, group and The node will have read, write and execute permissions for owner, group and
others. others.
The nodes name will be a null string. The node's name will be a null string.
A filesystem information structure(fs_info) will be allocated and A filesystem information structure(fs_info) will be allocated and
initialized for the IMFS filesystem. The fs_info pointer in the mount table initialized for the IMFS filesystem. The fs_info pointer in the mount table
@ -658,7 +658,7 @@ This routine allows the IMFS to unmount a filesystem that has been
mounted onto a IMFS directory. mounted onto a IMFS directory.
The mount entry mount point node access is verified to be a mounted The mount entry mount point node access is verified to be a mounted
directory. Its mt_fs is set to NULL. This identifies to future directory. It's mt_fs is set to NULL. This identifies to future
calles into the IMFS that this directory node is no longer a mount calles into the IMFS that this directory node is no longer a mount
point. Additionally, it will allow any directories that were hidden point. Additionally, it will allow any directories that were hidden
by the mounted system to again become visible. by the mounted system to again become visible.
@ -741,7 +741,7 @@ Regular File Handler Table Functions
Handler table functions are defined in a rtems_filesystem_file_handlers_r Handler table functions are defined in a rtems_filesystem_file_handlers_r
structure. It defines functions that are specific to a node type in a given structure. It defines functions that are specific to a node type in a given
filesystem. One table exists for each of the filesystems node types. The filesystem. One table exists for each of the filesystem's node types. The
structure definition appears below. It is followed by general developmental structure definition appears below. It is followed by general developmental
information on each of the functions associated with regular files contained information on each of the functions associated with regular files contained
in this function management structure. in this function management structure.
@ -1114,7 +1114,7 @@ Directory Handler Table Functions
Handler table functions are defined in a rtems_filesystem_file_handlers_r Handler table functions are defined in a rtems_filesystem_file_handlers_r
structure. It defines functions that are specific to a node type in a given structure. It defines functions that are specific to a node type in a given
filesystem. One table exists for each of the filesystems node types. The filesystem. One table exists for each of the filesystem's node types. The
structure definition appears below. It is followed by general developmental structure definition appears below. It is followed by general developmental
information on each of the functions associated with directories contained in information on each of the functions associated with directories contained in
this function management structure. this function management structure.
@ -1467,7 +1467,7 @@ Device Handler Table Functions
Handler table functions are defined in a rtems_filesystem_file_handlers_r Handler table functions are defined in a rtems_filesystem_file_handlers_r
structure. It defines functions that are specific to a node type in a given structure. It defines functions that are specific to a node type in a given
filesystem. One table exists for each of the filesystems node types. The filesystem. One table exists for each of the filesystem's node types. The
structure definition appears below. It is followed by general developmental structure definition appears below. It is followed by general developmental
information on each of the functions associated with devices contained in information on each of the functions associated with devices contained in
this function management structure. this function management structure.

View File

@ -2,7 +2,7 @@
RTEMS Filesystem Design Guide RTEMS Filesystem Design Guide
============================= =============================
COPYRIGHT © 1988 - 2015. COPYRIGHT (c) 1988 - 2015.
On-Line Applications Research Corporation (OAR). On-Line Applications Research Corporation (OAR).

View File

@ -66,8 +66,8 @@ parsed.
*node_access* *node_access*
This element is filesystem specific. A filesystem can define and store This element is filesystem specific. A filesystem can define and store
any information necessary to identify a node at this location. This element any information necessary to identify a node at this location. This element
is normally filled in by the filesystems evaluate routine. For the is normally filled in by the filesystem's evaluate routine. For the
filesystems root node, the filesystems initilization routine should filesystem's root node, the filesystem's initilization routine should
fill this in, and it should remain valid until the instance of the fill this in, and it should remain valid until the instance of the
filesystem is unmounted. filesystem is unmounted.

View File

@ -1,16 +1,16 @@
System Initialization System Initialization
##################### #####################
After the RTEMS initialization is performed, the applications After the RTEMS initialization is performed, the application's
initialization will be performed. Part of initialization is a call to initialization will be performed. Part of initialization is a call to
rtems_filesystem_initialize(). This routine will mount the In Memory File rtems_filesystem_initialize(). This routine will mount the 'In Memory File
System as the base filesystem. Mounting the base filesystem consists System' as the base filesystem. Mounting the base filesystem consists
of the following: of the following:
- Initialization of mount table chain control structure - Initialization of mount table chain control structure
- Allocation of a ``jnode`` structure that will server as the root node - Allocation of a ``jnode`` structure that will server as the root node
of the In Memory Filesystem of the 'In Memory Filesystem'
- Initialization of the allocated ``jnode`` with the appropriate OPS, - Initialization of the allocated ``jnode`` with the appropriate OPS,
directory handlers and pathconf limits and options. directory handlers and pathconf limits and options.
@ -36,7 +36,7 @@ Base Filesystem
RTEMS initially mounts a RAM based file system known as the base file system. RTEMS initially mounts a RAM based file system known as the base file system.
The root directory of this file system tree serves as the logical root of the The root directory of this file system tree serves as the logical root of the
directory hierarchy (Figure 3). Under the root directory a /dev directory directory hierarchy (Figure 3). Under the root directory a '/dev' directory
is created under which all I/O device directories and files are registered as is created under which all I/O device directories and files are registered as
part of the file system hierarchy. part of the file system hierarchy.
.. code:: c .. code:: c
@ -61,8 +61,8 @@ required to manage the future file systems.
Base Filesystem Mounting Base Filesystem Mounting
------------------------ ------------------------
At present, the first file system to be mounted is the In Memory File At present, the first file system to be mounted is the 'In Memory File
System. It is mounted using a standard MOUNT() command in which the mount System'. It is mounted using a standard MOUNT() command in which the mount
point is NULL. This flags the mount as the first file system to be point is NULL. This flags the mount as the first file system to be
registered under the operating system and appropriate initialization of file registered under the operating system and appropriate initialization of file
system management information is performed (See figures 4 and 5). If a system management information is performed (See figures 4 and 5). If a
@ -81,7 +81,7 @@ system (See ioman.c) a device registration process is performed. Device
registration produces a unique dev_t handle that consists of a major and registration produces a unique dev_t handle that consists of a major and
minor device number. In addition, the configuration information for each minor device number. In addition, the configuration information for each
device contains a text string that represents the fully qualified pathname to device contains a text string that represents the fully qualified pathname to
that devices place in the base file systems hierarchy. A file system node that device's place in the base file system's hierarchy. A file system node
is created for the device along the specified registration path. is created for the device along the specified registration path.
.. code:: c .. code:: c

View File

@ -46,7 +46,7 @@ DEC21140 PCI Board Generalities
This chapter describes rapidely the PCI interface of this Ethernet controller. This chapter describes rapidely the PCI interface of this Ethernet controller.
The board we have chosen for our PC386 implementation is a D-Link DFE-500TX. The board we have chosen for our PC386 implementation is a D-Link DFE-500TX.
This is a dual-speed 10/100Mbps Ethernet PCI adapter with a DEC21140AF chip. This is a dual-speed 10/100Mbps Ethernet PCI adapter with a DEC21140AF chip.
Like other PCI devices, this board has a PCI devices header containing some Like other PCI devices, this board has a PCI device's header containing some
required configuration registers, as shown in the PCI Register Figure. required configuration registers, as shown in the PCI Register Figure.
By reading By reading
or writing these registers, a driver can obtain information about the type of or writing these registers, a driver can obtain information about the type of
@ -132,7 +132,7 @@ Receiver Thread
--------------- ---------------
This thread is event driven. Each time a DEC PCI board interrupt occurs, the This thread is event driven. Each time a DEC PCI board interrupt occurs, the
handler checks if this is a receive interrupt and send an event “reception” handler checks if this is a receive interrupt and send an event "reception"
to the receiver thread which looks into the entire buffer descriptors ring the to the receiver thread which looks into the entire buffer descriptors ring the
ones that contain a valid incoming frame (bit OWN=0 means descriptor belongs ones that contain a valid incoming frame (bit OWN=0 means descriptor belongs
to host processor). Each valid incoming ethernet frame is sent to the protocol to host processor). Each valid incoming ethernet frame is sent to the protocol

View File

@ -1,7 +1,7 @@
======================== ========================
RTEMS Network Supplement RTEMS Network Supplement
======================== ========================
COPYRIGHT © 1988 - 2015. COPYRIGHT (c) 1988 - 2015.
On-Line Applications Research Corporation (OAR). On-Line Applications Research Corporation (OAR).

View File

@ -6,7 +6,7 @@ RTEMS FTP Daemon
The RTEMS FTPD is a complete file transfer protocol (FTP) daemon The RTEMS FTPD is a complete file transfer protocol (FTP) daemon
which can store, retrieve, and manipulate files on the local which can store, retrieve, and manipulate files on the local
filesystem. In addition, the RTEMS FTPD provides “hooks” filesystem. In addition, the RTEMS FTPD provides "hooks"
which are actions performed on received data. Hooks are useful which are actions performed on received data. Hooks are useful
in situations where a destination file is not necessarily in situations where a destination file is not necessarily
appropriate or in cases when a formal device driver has not yet appropriate or in cases when a formal device driver has not yet

View File

@ -23,7 +23,7 @@ The network task processes incoming packets and takes care of
timed operations such as handling TCP timeouts and timed operations such as handling TCP timeouts and
aging and removing routing table entries. aging and removing routing table entries.
The Network code contains routines which may run in the context of The 'Network code' contains routines which may run in the context of
the user application tasks, the interface receive task or the network task. the user application tasks, the interface receive task or the network task.
A network semaphore ensures that A network semaphore ensures that
the data structures manipulated by the network code remain consistent. the data structures manipulated by the network code remain consistent.

View File

@ -6,7 +6,7 @@ Introduction
This chapter is intended to provide an introduction to the This chapter is intended to provide an introduction to the
procedure for writing RTEMS network device drivers. procedure for writing RTEMS network device drivers.
The example code is taken from the Generic 68360 network device The example code is taken from the 'Generic 68360' network device
driver. The source code for this driver is located in the``c/src/lib/libbsp/m68k/gen68360/network`` directory in the RTEMS driver. The source code for this driver is located in the``c/src/lib/libbsp/m68k/gen68360/network`` directory in the RTEMS
source code distribution. Having a copy of this driver at source code distribution. Having a copy of this driver at
hand when reading the following notes will help significantly. hand when reading the following notes will help significantly.
@ -15,7 +15,7 @@ Learn about the network device
============================== ==============================
Before starting to write the network driver become completely Before starting to write the network driver become completely
familiar with the programmers view of the device. familiar with the programmer's view of the device.
The following points list some of the details of the The following points list some of the details of the
device that must be understood before a driver can be written. device that must be understood before a driver can be written.
@ -70,7 +70,7 @@ data structures and resources. To ensure the consistency
of these structures the tasks of these structures the tasks
execute only when they hold the network semaphore (``rtems_bsdnet_semaphore``). execute only when they hold the network semaphore (``rtems_bsdnet_semaphore``).
The transmit and receive tasks must abide by this protocol. Be very The transmit and receive tasks must abide by this protocol. Be very
careful to avoid deadly embraces with the other network tasks. careful to avoid 'deadly embraces' with the other network tasks.
A number of routines are provided to make it easier for the network A number of routines are provided to make it easier for the network
driver code to conform to the network task scheduling conventions. driver code to conform to the network task scheduling conventions.
@ -160,9 +160,9 @@ in the device-dependent data structure supplied and maintained by the driver:
``ifp->if_unit`` ``ifp->if_unit``
The device number. The network stack uses this number and the The device number. The network stack uses this number and the
device name for device name lookups. For example, if``ifp->if_name`` is ``scc`` and ``ifp->if_unit`` is ``1``, device name for device name lookups. For example, if``ifp->if_name`` is '``scc``' and ``ifp->if_unit`` is '``1``',
the full device name would be ``scc1``. The unit number should be the full device name would be '``scc1``'. The unit number should be
obtained from the name entry in the configuration structure. obtained from the 'name' entry in the configuration structure.
``ifp->if_mtu`` ``ifp->if_mtu``
The maximum transmission unit for the device. For Ethernet The maximum transmission unit for the device. For Ethernet
@ -211,7 +211,7 @@ Once the attach function has set up the above entries it must link the
driver data structure onto the list of devices by driver data structure onto the list of devices by
calling ``if_attach``. Ethernet devices should then calling ``if_attach``. Ethernet devices should then
call ``ether_ifattach``. Both functions take a pointer to the call ``ether_ifattach``. Both functions take a pointer to the
devices ``ifnet`` structure as their only argument. device's ``ifnet`` structure as their only argument.
The attach function should return a non-zero value to indicate that The attach function should return a non-zero value to indicate that
the driver has been successfully configured and attached. the driver has been successfully configured and attached.
@ -221,8 +221,8 @@ Write the Driver Start Function.
This function is called each time the network stack wants to start the This function is called each time the network stack wants to start the
transmitter. This occures whenever the network stack adds a packet transmitter. This occures whenever the network stack adds a packet
to a devices send queue and the ``IFF_OACTIVE`` bit in the to a device's send queue and the ``IFF_OACTIVE`` bit in the
devices ``if_flags`` is not set. device's ``if_flags`` is not set.
For many devices this function need only set the ``IFF_OACTIVE`` bit in the``if_flags`` and send an event to the transmit task For many devices this function need only set the ``IFF_OACTIVE`` bit in the``if_flags`` and send an event to the transmit task
indicating that a packet is in the driver transmit queue. indicating that a packet is in the driver transmit queue.

View File

@ -11,7 +11,7 @@ who also ported the FreeBSD TCP/IP stack to RTEMS.
The following is a list of resources which should be useful in trying The following is a list of resources which should be useful in trying
to understand Ethernet: to understand Ethernet:
- *Charles Spurgeons Ethernet Web Site* - *Charles Spurgeon's Ethernet Web Site*
"This site provides extensive information about Ethernet "This site provides extensive information about Ethernet
(IEEE 802.3) local area network (LAN) technology. Including (IEEE 802.3) local area network (LAN) technology. Including
the original 10 Megabit per second (Mbps) system, the 100 Mbps the original 10 Megabit per second (Mbps) system, the 100 Mbps

View File

@ -11,7 +11,7 @@ The network used to test the driver should include at least:
the operation of the target machine. the operation of the target machine.
- An Ethernet network analyzer or a workstation with an - An Ethernet network analyzer or a workstation with an
Ethernet snoop program such as ``ethersnoop`` or``tcpdump``. 'Ethernet snoop' program such as ``ethersnoop`` or``tcpdump``.
- A workstation. - A workstation.
@ -39,7 +39,7 @@ is a list of them:
- mbuf activity - mbuf activity
There are commented out calls to ``printf`` in the file``sys/mbuf.h`` in the network stack code. Uncommenting There are commented out calls to ``printf`` in the file``sys/mbuf.h`` in the network stack code. Uncommenting
these lines results in output when mbufs are allocated these lines results in output when mbuf's are allocated
and freed. This is very useful for finding memory leaks. and freed. This is very useful for finding memory leaks.
- TX and RX queuing - TX and RX queuing
@ -91,29 +91,29 @@ is a list of them:
URL: (http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-routing.html) URL: (http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-routing.html)
For a quick reference to the flags, see the table below: For a quick reference to the flags, see the table below:
``U`` '``U``'
Up: The route is active. Up: The route is active.
``H`` '``H``'
Host: The route destination is a single host. Host: The route destination is a single host.
``G`` '``G``'
Gateway: Send anything for this destination on to this remote system, which Gateway: Send anything for this destination on to this remote system, which
will figure out from there where to send it. will figure out from there where to send it.
``S`` '``S``'
Static: This route was configured manually, not automatically generated by the Static: This route was configured manually, not automatically generated by the
system. system.
``C`` '``C``'
Clone: Generates a new route based upon this route for machines we connect Clone: Generates a new route based upon this route for machines we connect
to. This type of route is normally used for local networks. to. This type of route is normally used for local networks.
``W`` '``W``'
WasCloned: Indicated a route that was auto-configured based upon a local area WasCloned: Indicated a route that was auto-configured based upon a local area
network (Clone) route. network (Clone) route.
``L`` '``L``'
Link: Route involves references to Ethernet hardware. Link: Route involves references to Ethernet hardware.
- ``mbuf`` - ``mbuf``
@ -182,29 +182,29 @@ The network demonstration program ``netdemo`` may be used for these tests.
broadcast packets disabled: broadcast packets disabled:
Verify that the program continues to run once the driver has been attached. Verify that the program continues to run once the driver has been attached.
- Issue a ``u`` command to send UDP - Issue a '``u``' command to send UDP
packets to the discard port. packets to the 'discard' port.
Verify that the packets appear on the network. Verify that the packets appear on the network.
- Issue a ``s`` command to print the network and driver statistics. - Issue a '``s``' command to print the network and driver statistics.
- On a workstation, add a static route to the target system. - On a workstation, add a static route to the target system.
- On that same workstation try to ping the target system. - On that same workstation try to 'ping' the target system.
Verify that the ICMP echo request and reply packets appear on the net. Verify that the ICMP echo request and reply packets appear on the net.
- Remove the static route to the target system. - Remove the static route to the target system.
Modify ``networkconfig.h`` to attach the driver Modify ``networkconfig.h`` to attach the driver
with reception of broadcast packets enabled. with reception of broadcast packets enabled.
Try to ping the target system again. Try to 'ping' the target system again.
Verify that ARP request/reply and ICMP echo request/reply packets appear Verify that ARP request/reply and ICMP echo request/reply packets appear
on the net. on the net.
- Issue a ``t`` command to send TCP - Issue a '``t``' command to send TCP
packets to the discard port. packets to the 'discard' port.
Verify that the packets appear on the network. Verify that the packets appear on the network.
- Issue a ``s`` command to print the network and driver statistics. - Issue a '``s``' command to print the network and driver statistics.
- Verify that you can telnet to ports 24742 - Verify that you can telnet to ports 24742
and 24743 on the target system from one or more and 24743 on the target system from one or more
@ -232,7 +232,7 @@ Giant packets
- Recompile the driver with ``MAXIMUM_FRAME_SIZE`` set to - Recompile the driver with ``MAXIMUM_FRAME_SIZE`` set to
a smaller value, say 514. a smaller value, say 514.
- Ping the driver from another workstation and verify - 'Ping' the driver from another workstation and verify
that frames larger than 514 bytes are correctly rejected. that frames larger than 514 bytes are correctly rejected.
- Recompile the driver with ``MAXIMUM_FRAME_SIZE`` restored to 1518. - Recompile the driver with ``MAXIMUM_FRAME_SIZE`` restored to 1518.
@ -248,8 +248,8 @@ Resource Exhaustion
- Verify that the program operates properly and that you can - Verify that the program operates properly and that you can
still telnet to both the ports. still telnet to both the ports.
- Display the driver statistics (Console ``s`` command or telnet - Display the driver statistics (Console '``s``' command or telnet
control-G character) and verify that: 'control-G' character) and verify that:
# The number of transmit interrupts is non-zero. # The number of transmit interrupts is non-zero.
This indicates that all transmit descriptors have been in use at some time. This indicates that all transmit descriptors have been in use at some time.
@ -262,7 +262,7 @@ Cable Faults
- Run the ``netdemo`` program. - Run the ``netdemo`` program.
- Issue a ``u`` console command to make the target machine transmit - Issue a '``u``' console command to make the target machine transmit
a bunch of UDP packets. a bunch of UDP packets.
- While the packets are being transmitted, disconnect and reconnect the - While the packets are being transmitted, disconnect and reconnect the
@ -277,7 +277,7 @@ Throughput
---------- ----------
Run the ``ttcp`` network benchmark program. Run the ``ttcp`` network benchmark program.
Transfer large amounts of data (100s of megabytes) to and from the target Transfer large amounts of data (100's of megabytes) to and from the target
system. system.
The procedure for testing throughput from a host to an RTEMS target The procedure for testing throughput from a host to an RTEMS target

View File

@ -126,7 +126,7 @@ below, you need to provide only the first two entries in this structure.
You can also use ``rtems_bsdnet_do_bootp_rootfs`` to have a set of You can also use ``rtems_bsdnet_do_bootp_rootfs`` to have a set of
standard files created with the information return by the BOOTP/DHCP standard files created with the information return by the BOOTP/DHCP
protocol. The IP address is added to :file:`/etc/hosts` with the host protocol. The IP address is added to :file:`/etc/hosts` with the host
name and domain returned. If no host name or domain is returned``me.mydomain`` is used. The BOOTP/DHCP servers address is also name and domain returned. If no host name or domain is returned``me.mydomain`` is used. The BOOTP/DHCP server's address is also
added to :file:`/etc/hosts`. The domain name server listed in the added to :file:`/etc/hosts`. The domain name server listed in the
BOOTP/DHCP information are added to :file:`/etc/resolv.conf`. A``search`` record is also added if a domain is returned. The files BOOTP/DHCP information are added to :file:`/etc/resolv.conf`. A``search`` record is also added if a domain is returned. The files
are created if they do not exist. are created if they do not exist.
@ -162,7 +162,7 @@ below, you need to provide only the first two entries in this structure.
``char \*gateway`` ``char \*gateway``
The Internet host number of the network gateway machine, The Internet host number of the network gateway machine,
specified in dotted decimal (``129.128.4.1``) form. specified in 'dotted decimal' (``129.128.4.1``) form.
``char \*log_host`` ``char \*log_host``
The Internet host number of the machine to which ``syslog`` messages The Internet host number of the machine to which ``syslog`` messages
@ -279,13 +279,13 @@ structure.
``char \*ip_address`` ``char \*ip_address``
The Internet address of the device, The Internet address of the device,
specified in dotted decimal (``129.128.4.2``) form, or ``NULL`` specified in 'dotted decimal' (``129.128.4.2``) form, or ``NULL``
if the device configuration information is being obtained from a if the device configuration information is being obtained from a
BOOTP/DHCP server. BOOTP/DHCP server.
``char \*ip_netmask`` ``char \*ip_netmask``
The Internet inetwork mask of the device, The Internet inetwork mask of the device,
specified in dotted decimal (``255.255.255.0``) form, or ``NULL`` specified in 'dotted decimal' (``255.255.255.0``) form, or ``NULL``
if the device configuration information is being obtained from a if the device configuration information is being obtained from a
BOOTP/DHCP server. BOOTP/DHCP server.
@ -496,8 +496,8 @@ you when more data has arrived. (Condition 1.a.)
For sending, when the socket is connected and the free space becomes at For sending, when the socket is connected and the free space becomes at
or above the "low water mark" for the send buffer (default 4096 bytes) or above the "low water mark" for the send buffer (default 4096 bytes)
you will receive a writable callback. You dont get continuous callbacks you will receive a writable callback. You don't get continuous callbacks
if you dont write anything. Using a non-blocking write socket, you can if you don't write anything. Using a non-blocking write socket, you can
then call write until it returns a value less than the amount of data then call write until it returns a value less than the amount of data
requested to be sent or it produces error EWOULDBLOCK (indicating buffer requested to be sent or it produces error EWOULDBLOCK (indicating buffer
full and no longer writable). When this happens you can full and no longer writable). When this happens you can
@ -837,13 +837,13 @@ returns. The priority argument is ignored.
If the interval argument is greater than 0, the routine also starts an If the interval argument is greater than 0, the routine also starts an
RTEMS task at the specified priority and polls the NTP server every RTEMS task at the specified priority and polls the NTP server every
interval seconds. NOTE: This mode of operation has not yet been 'interval' seconds. NOTE: This mode of operation has not yet been
implemented. implemented.
On successful synchronization of the RTEMS time-of-day clock the routine On successful synchronization of the RTEMS time-of-day clock the routine
returns 0. If an error occurs a message is printed and the routine returns -1 returns 0. If an error occurs a message is printed and the routine returns -1
with an error code in errno. with an error code in errno.
There is no timeout if there is no response from an NTP server the There is no timeout - if there is no response from an NTP server the
routine will wait forever. routine will wait forever.
.. COMMENT: Written by Eric Norum .. COMMENT: Written by Eric Norum

View File

@ -87,7 +87,7 @@ Data Alignment Requirements
Data Element Alignment Data Element Alignment
---------------------- ----------------------
The CPU_ALIGNMENT macro should be set to the CPUs worst alignment The CPU_ALIGNMENT macro should be set to the CPU's worst alignment
requirement for data types on a byte boundary. This is typically the requirement for data types on a byte boundary. This is typically the
alignment requirement for a C double. This alignment does not take into alignment requirement for a C double. This alignment does not take into
account the requirements for the stack. account the requirements for the stack.

View File

@ -38,7 +38,7 @@ During the initialization of the context for tasks with floating point,
the CPU dependent code is responsible for initializing the floating point the CPU dependent code is responsible for initializing the floating point
context. If there is not an easy way to initialize the FP context during context. If there is not an easy way to initialize the FP context during
Context_Initialize, then it is usually easier to save an "uninitialized" Context_Initialize, then it is usually easier to save an "uninitialized"
FP context here and copy it to the tasks during Context_Initialize. If FP context here and copy it to the task's during Context_Initialize. If
this technique is used to initialize the FP contexts, then it is important this technique is used to initialize the FP contexts, then it is important
to ensure that the state of the floating point unit is in a coherent, to ensure that the state of the floating point unit is in a coherent,
initialized state. initialized state.

View File

@ -105,8 +105,8 @@ processor families is not enough to address the needs of embedded systems
developers. Custom board development is the norm for embedded systems. developers. Custom board development is the norm for embedded systems.
Each of these boards is optimized for a particular project. The processor Each of these boards is optimized for a particular project. The processor
and peripheral set have been chosen to meet a particular set of system and peripheral set have been chosen to meet a particular set of system
requirements. The tools in the embedded systems developers’ toolbox must requirements. The tools in the embedded systems developers toolbox must
support their project’s unique board. RTEMS addresses this issue via the support their project's unique board. RTEMS addresses this issue via the
Board Support Package. Board Support Package.
RTEMS segregates board specific code to make it possible for the embedded RTEMS segregates board specific code to make it possible for the embedded

View File

@ -86,7 +86,7 @@ self" which is implemented in a routine as follows.
} }
If the CPU dependent IDLE thread body is implementation centers upon using If the CPU dependent IDLE thread body is implementation centers upon using
a "halt", "idle", or "shutdown" instruction, then dont forget to put it a "halt", "idle", or "shutdown" instruction, then don't forget to put it
in an infinite loop as the CPU will have to reexecute this instruction in an infinite loop as the CPU will have to reexecute this instruction
each time the IDLE thread is dispatched. each time the IDLE thread is dispatched.
.. code:: c .. code:: c

View File

@ -1,7 +1,7 @@
=================== ===================
RTEMS Porting Guide RTEMS Porting Guide
=================== ===================
COPYRIGHT © 1988 - 2015. COPYRIGHT (c) 1988 - 2015.
On-Line Applications Research Corporation (OAR). On-Line Applications Research Corporation (OAR).

View File

@ -305,7 +305,7 @@ The ``_ISR_Handler`` routine provides the RTEMS interrupt management.
This discussion ignores a lot of the ugly details in a real implementation This discussion ignores a lot of the ugly details in a real implementation
such as saving enough registers/state to be able to do something real. such as saving enough registers/state to be able to do something real.
Keep in mind that the goal is to invoke a users ISR handler which is Keep in mind that the goal is to invoke a user's ISR handler which is
written in C. That ISR handler uses a known set of registers thus written in C. That ISR handler uses a known set of registers thus
allowing the ISR to preserve only those that would normally be corrupted allowing the ISR to preserve only those that would normally be corrupted
by a subroutine call. by a subroutine call.
@ -368,7 +368,7 @@ specific wrapper for ``_Thread_Dispatch`` used in this case.
ISR Invoked with Frame Pointer ISR Invoked with Frame Pointer
------------------------------ ------------------------------
Does the RTEMS invoke the users ISR with the vector number and a pointer Does the RTEMS invoke the user's ISR with the vector number and a pointer
to the saved interrupt frame (1) or just the vector number (0)? to the saved interrupt frame (1) or just the vector number (0)?
.. code:: c .. code:: c

View File

@ -5,7 +5,7 @@ Fatal Error Default Handler
=========================== ===========================
The ``_CPU_Fatal_halt`` routine is the default fatal error handler. This The ``_CPU_Fatal_halt`` routine is the default fatal error handler. This
routine copies _error into a known place typically a stack location or routine copies _error into a known place - typically a stack location or
a register, optionally disables interrupts, and halts/stops the CPU. It a register, optionally disables interrupts, and halts/stops the CPU. It
is prototyped as follows and is often implemented as a macro: is prototyped as follows and is often implemented as a macro:
.. code:: c .. code:: c
@ -100,8 +100,8 @@ single instruction (e.g. i486). It is probably best to avoid an "endian
swapping control bit" in the CPU. One good reason is that interrupts swapping control bit" in the CPU. One good reason is that interrupts
would probably have to be disabled to insure that an interrupt does not would probably have to be disabled to insure that an interrupt does not
try to access the same "chunk" with the wrong endian. Another good reason try to access the same "chunk" with the wrong endian. Another good reason
is that on some CPUs, the endian bit endianness for ALL fetches both is that on some CPUs, the endian bit endianness for ALL fetches - both
code and data so the code will be fetched incorrectly. code and data - so the code will be fetched incorrectly.
The following is an implementation of the ``CPU_swap_u32`` routine that will The following is an implementation of the ``CPU_swap_u32`` routine that will
work on any CPU. It operates by breaking the unsigned thirty-two bit work on any CPU. It operates by breaking the unsigned thirty-two bit
@ -142,8 +142,8 @@ single instruction (e.g. i486). It is probably best to avoid an "endian
swapping control bit" in the CPU. One good reason is that interrupts swapping control bit" in the CPU. One good reason is that interrupts
would probably have to be disabled to insure that an interrupt does not would probably have to be disabled to insure that an interrupt does not
try to access the same "chunk" with the wrong endian. Another good reason try to access the same "chunk" with the wrong endian. Another good reason
is that on some CPUs, the endian bit endianness for ALL fetches both is that on some CPUs, the endian bit endianness for ALL fetches - both
code and data so the code will be fetched incorrectly. code and data - so the code will be fetched incorrectly.
Similarly, here is a portable implementation of the ``CPU_swap_u16`` Similarly, here is a portable implementation of the ``CPU_swap_u16``
routine. Just as with the ``CPU_swap_u32`` routine, the porter routine. Just as with the ``CPU_swap_u32`` routine, the porter

View File

@ -85,8 +85,8 @@ major/minor) is the first bit found.
This entire "find first bit" and mapping process depends heavily on the This entire "find first bit" and mapping process depends heavily on the
manner in which a priority is broken into a major and minor components manner in which a priority is broken into a major and minor components
with the major being the 4 MSB of a priority and minor the 4 LSB. Thus (0 with the major being the 4 MSB of a priority and minor the 4 LSB. Thus (0
<< 4) + 0 corresponds to priority 0 the highest priority. And (15 << << 4) + 0 corresponds to priority 0 - the highest priority. And (15 <<
4) + 14 corresponds to priority 254 the next to the lowest priority. 4) + 14 corresponds to priority 254 - the next to the lowest priority.
If your CPU does not have a "find first bit" instruction, then there are If your CPU does not have a "find first bit" instruction, then there are
ways to make do without it. Here are a handful of ways to implement this ways to make do without it. Here are a handful of ways to implement this
@ -94,7 +94,7 @@ in software:
- a series of 16 bit test instructions - a series of 16 bit test instructions
- a "binary search using ifs" - a "binary search using if's"
- the following algorithm based upon a 16 entry lookup table. In this pseudo-code, bit_set_table[16] has values which indicate the first bit set: - the following algorithm based upon a 16 entry lookup table. In this pseudo-code, bit_set_table[16] has values which indicate the first bit set:

View File

@ -200,15 +200,15 @@ and ``_CPU_Context_switch`` will return to its caller.
Care should be exercise when writing this routine. All Care should be exercise when writing this routine. All
registers assumed to be preserved across subroutine calls registers assumed to be preserved across subroutine calls
must be preserved. These registers may be saved in must be preserved. These registers may be saved in
the tasks context area or on its stack. However, the the task's context area or on its stack. However, the
stack pointer and address to resume executing the task stack pointer and address to resume executing the task
at must be included in the context (normally the subroutine at must be included in the context (normally the subroutine
return address to the caller of ``_Thread_Dispatch``. return address to the caller of ``_Thread_Dispatch``.
The decision of where to store the tasks context is based The decision of where to store the task's context is based
on numerous factors including the capabilities of on numerous factors including the capabilities of
the CPU architecture itself and simplicity as well the CPU architecture itself and simplicity as well
as external considerations such as debuggers wishing as external considerations such as debuggers wishing
to examine a tasks context. In this case, it is to examine a task's context. In this case, it is
often simpler to save all data in the context area. often simpler to save all data in the context area.
Also there may be special considerations Also there may be special considerations
@ -292,7 +292,7 @@ is varying) macro is set based on the CPU family dependent macro.
The macro name THIS_CPU_FAMILY_HAS_FPU should be made CPU specific. It The macro name THIS_CPU_FAMILY_HAS_FPU should be made CPU specific. It
indicates whether or not this CPU model has FP support. For example, the indicates whether or not this CPU model has FP support. For example, the
definition of the i386ex and i386sx CPU models would set I386_HAS_FPU to definition of the i386ex and i386sx CPU models would set I386_HAS_FPU to
FALSE to indicate that these CPU models are i386s without an i387 and FALSE to indicate that these CPU models are i386's without an i387 and
wish to leave floating point support out of RTEMS when built for the wish to leave floating point support out of RTEMS when built for the
i386_nofp processor model. On a CPU with a built-in FPU like the i486, i386_nofp processor model. On a CPU with a built-in FPU like the i486,
this would be defined as TRUE. this would be defined as TRUE.
@ -399,7 +399,7 @@ point context is dumped by a "FP save context" type instruction and the
format is either not completely defined by the CPU documentation or the format is either not completely defined by the CPU documentation or the
format is not critical for the implementation of the floating point format is not critical for the implementation of the floating point
context switch routines. In this case, there is no need to figure out the context switch routines. In this case, there is no need to figure out the
exact format only the size. Of course, although this is enough exact format - only the size. Of course, although this is enough
information for RTEMS, it is probably not enough for a debugger such as information for RTEMS, it is probably not enough for a debugger such as
gdb. But that is another problem. gdb. But that is another problem.
.. code:: c .. code:: c
@ -416,7 +416,7 @@ Size of Floating Point Context Macro
The CPU_CONTEXT_FP_SIZE macro is set to the size of the floating point The CPU_CONTEXT_FP_SIZE macro is set to the size of the floating point
context area. On some CPUs this will not be a "sizeof" because the format context area. On some CPUs this will not be a "sizeof" because the format
of the floating point area is not defined only the size is. This is of the floating point area is not defined - only the size is. This is
usually on CPUs with a "floating point save context" instruction. In usually on CPUs with a "floating point save context" instruction. In
general, though it is easier to define the structure as a "sizeof" general, though it is easier to define the structure as a "sizeof"
operation and define the Context_Control_fp structure to be an area of operation and define the Context_Control_fp structure to be an area of

View File

@ -243,7 +243,7 @@ Get Configurable Pathname Variables
NOTE: The newlib unistd.h and sys/unistd.h are installed and the NOTE: The newlib unistd.h and sys/unistd.h are installed and the
include search patch is used to get the right one. There are include search patch is used to get the right one. There are
conflicts between the newlib unistd.h and RTEMS version. conflicts between the newlib unistd.h and RTEMS' version.
.. COMMENT: COPYRIGHT (c) 1988-2002. .. COMMENT: COPYRIGHT (c) 1988-2002.

View File

@ -2,7 +2,7 @@
RTEMS POSIX 1003.1 Compliance Guide RTEMS POSIX 1003.1 Compliance Guide
=================================== ===================================
COPYRIGHT © 1988 - 2015. COPYRIGHT (c) 1988 - 2015.
On-Line Applications Research Corporation (OAR). On-Line Applications Research Corporation (OAR).

View File

@ -4,12 +4,12 @@ Language-Specific Services for the C Programming Language
Referenced C Language Routines Referenced C Language Routines
============================== ==============================
ANSI C Section 4.2 Diagnostics ANSI C Section 4.2 - Diagnostics
.. code:: c .. code:: c
assert(), Function, Implemented assert(), Function, Implemented
ANSI C Section 4.3 Character Handling ANSI C Section 4.3 - Character Handling
.. code:: c .. code:: c
isalnum(), Function, Implemented isalnum(), Function, Implemented
@ -26,12 +26,12 @@ ANSI C Section 4.3 — Character Handling
tolower(), Function, Implemented tolower(), Function, Implemented
toupper(), Function, Implemented toupper(), Function, Implemented
ANSI C Section 4.4 Localization ANSI C Section 4.4 - Localization
.. code:: c .. code:: c
setlocale(), Function, Implemented setlocale(), Function, Implemented
ANSI C Section 4.5 Mathematics ANSI C Section 4.5 - Mathematics
.. code:: c .. code:: c
acos(), Function, Implemented acos(), Function, Implemented
@ -57,13 +57,13 @@ ANSI C Section 4.5 — Mathematics
floor(), Function, Implemented floor(), Function, Implemented
fmod(), Function, Implemented fmod(), Function, Implemented
ANSI C Section 4.6 Non-Local Jumps ANSI C Section 4.6 - Non-Local Jumps
.. code:: c .. code:: c
setjmp(), Function, Implemented setjmp(), Function, Implemented
longjmp(), Function, Implemented longjmp(), Function, Implemented
ANSI C Section 4.9 Input/Output ANSI C Section 4.9 - Input/Output
.. code:: c .. code:: c
FILE, Type, Implemented FILE, Type, Implemented
@ -105,7 +105,7 @@ ANSI C Section 4.9 — Input/Output
NOTE: ``rename`` is also included in another section. `Rename a File`_. NOTE: ``rename`` is also included in another section. `Rename a File`_.
ANSI C Section 4.10 General Utilities ANSI C Section 4.10 - General Utilities
.. code:: c .. code:: c
abs(), Function, Implemented abs(), Function, Implemented
@ -125,7 +125,7 @@ ANSI C Section 4.10 — General Utilities
NOTE: ``getenv`` is also included in another section. `Environment Access`_. NOTE: ``getenv`` is also included in another section. `Environment Access`_.
ANSI C Section 4.11 String Handling ANSI C Section 4.11 - String Handling
.. code:: c .. code:: c
strcpy(), Function, Implemented strcpy(), Function, Implemented
@ -143,7 +143,7 @@ ANSI C Section 4.11 — String Handling
strtok(), Function, Implemented strtok(), Function, Implemented
strlen(), Function, Implemented strlen(), Function, Implemented
ANSI C Section 4.12 Date and Time Handling ANSI C Section 4.12 - Date and Time Handling
.. code:: c .. code:: c
asctime(), Function, Implemented asctime(), Function, Implemented

View File

@ -58,7 +58,7 @@ RTEMS POSIX 1003.1 Compliance Guide
.. COMMENT: can force the copyright description onto a left hand page. .. COMMENT: can force the copyright description onto a left hand page.
COPYRIGHT © 1988 - 2015. COPYRIGHT (c) 1988 - 2015.
On-Line Applications Research Corporation (OAR). On-Line Applications Research Corporation (OAR).
@ -293,7 +293,7 @@ C Language Limits
ULONG_MAX, Constant, Implemented ULONG_MAX, Constant, Implemented
USHRT_MAX, Constant, Implemented USHRT_MAX, Constant, Implemented
NOTE: These are implemented in GCCs limits.h file. NOTE: These are implemented in GCC's limits.h file.
Minimum Values Minimum Values
-------------- --------------
@ -1138,7 +1138,7 @@ Get Configurable Pathname Variables
NOTE: The newlib unistd.h and sys/unistd.h are installed and the NOTE: The newlib unistd.h and sys/unistd.h are installed and the
include search patch is used to get the right one. There are include search patch is used to get the right one. There are
conflicts between the newlib unistd.h and RTEMS version. conflicts between the newlib unistd.h and RTEMS' version.
.. COMMENT: COPYRIGHT (c) 1988-2002. .. COMMENT: COPYRIGHT (c) 1988-2002.
@ -1580,12 +1580,12 @@ Language-Specific Services for the C Programming Language
Referenced C Language Routines Referenced C Language Routines
============================== ==============================
ANSI C Section 4.2 Diagnostics ANSI C Section 4.2 - Diagnostics
.. code:: c .. code:: c
assert(), Function, Implemented assert(), Function, Implemented
ANSI C Section 4.3 Character Handling ANSI C Section 4.3 - Character Handling
.. code:: c .. code:: c
isalnum(), Function, Implemented isalnum(), Function, Implemented
@ -1602,12 +1602,12 @@ ANSI C Section 4.3 — Character Handling
tolower(), Function, Implemented tolower(), Function, Implemented
toupper(), Function, Implemented toupper(), Function, Implemented
ANSI C Section 4.4 Localization ANSI C Section 4.4 - Localization
.. code:: c .. code:: c
setlocale(), Function, Implemented setlocale(), Function, Implemented
ANSI C Section 4.5 Mathematics ANSI C Section 4.5 - Mathematics
.. code:: c .. code:: c
acos(), Function, Implemented acos(), Function, Implemented
@ -1633,13 +1633,13 @@ ANSI C Section 4.5 — Mathematics
floor(), Function, Implemented floor(), Function, Implemented
fmod(), Function, Implemented fmod(), Function, Implemented
ANSI C Section 4.6 Non-Local Jumps ANSI C Section 4.6 - Non-Local Jumps
.. code:: c .. code:: c
setjmp(), Function, Implemented setjmp(), Function, Implemented
longjmp(), Function, Implemented longjmp(), Function, Implemented
ANSI C Section 4.9 Input/Output ANSI C Section 4.9 - Input/Output
.. code:: c .. code:: c
FILE, Type, Implemented FILE, Type, Implemented
@ -1681,7 +1681,7 @@ ANSI C Section 4.9 — Input/Output
NOTE: ``rename`` is also included in another section. `Rename a File`_. NOTE: ``rename`` is also included in another section. `Rename a File`_.
ANSI C Section 4.10 General Utilities ANSI C Section 4.10 - General Utilities
.. code:: c .. code:: c
abs(), Function, Implemented abs(), Function, Implemented
@ -1701,7 +1701,7 @@ ANSI C Section 4.10 — General Utilities
NOTE: ``getenv`` is also included in another section. `Environment Access`_. NOTE: ``getenv`` is also included in another section. `Environment Access`_.
ANSI C Section 4.11 String Handling ANSI C Section 4.11 - String Handling
.. code:: c .. code:: c
strcpy(), Function, Implemented strcpy(), Function, Implemented
@ -1719,7 +1719,7 @@ ANSI C Section 4.11 — String Handling
strtok(), Function, Implemented strtok(), Function, Implemented
strlen(), Function, Implemented strlen(), Function, Implemented
ANSI C Section 4.12 Date and Time Handling ANSI C Section 4.12 - Date and Time Handling
.. code:: c .. code:: c
asctime(), Function, Implemented asctime(), Function, Implemented

View File

@ -131,7 +131,7 @@ C Language Limits
ULONG_MAX, Constant, Implemented ULONG_MAX, Constant, Implemented
USHRT_MAX, Constant, Implemented USHRT_MAX, Constant, Implemented
NOTE: These are implemented in GCCs limits.h file. NOTE: These are implemented in GCC's limits.h file.
Minimum Values Minimum Values
-------------- --------------

View File

@ -41,8 +41,8 @@ There is currently no text in this section.
Directives Directives
========== ==========
This section details the clock managers directives. This section details the clock manager's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.

View File

@ -41,8 +41,8 @@ There is currently no text in this section.
Directives Directives
========== ==========
This section details the condition variable managers directives. This section details the condition variable manager's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.

View File

@ -46,8 +46,8 @@ There is currently no text in this section.
Directives Directives
========== ==========
This section details the device- and class- specific functions managers This section details the device- and class- specific functions manager's
directives. A subsection is dedicated to each of this managers directives directives. A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.

View File

@ -103,8 +103,8 @@ There is currently no text in this section.
Directives Directives
========== ==========
This section details the files and directories managers directives. This section details the files and directories manager's directives.
A subsection is dedicated to each of this managers directives A subsection is dedicated to each of this manager's directives
and describes the calling sequence, related constants, usage, and describes the calling sequence, related constants, usage,
and status codes. and status codes.
@ -342,7 +342,7 @@ On error, this routine returns -1 and sets ``errno`` to one of
the following: the following:
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix. Search permission is denied for a directory in a file's path prefix.
*ENAMETOOLONG* *ENAMETOOLONG*
Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is
@ -388,7 +388,7 @@ On error, this routine returns -1 and sets ``errno`` to one of
the following: the following:
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix. Search permission is denied for a directory in a file's path prefix.
*ENAMETOOLONG* *ENAMETOOLONG*
Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is
@ -435,7 +435,7 @@ getcwd - Gets current working directory
Result is too large Result is too large
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix. Search permission is denied for a directory in a file's path prefix.
**DESCRIPTION:** **DESCRIPTION:**
@ -475,7 +475,7 @@ open - Opens a file
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix. Search permission is denied for a directory in a file's path prefix.
*EEXIST* *EEXIST*
The named file already exists. The named file already exists.
@ -695,7 +695,7 @@ link - Creates a link to a file
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix Search permission is denied for a directory in a file's path prefix
*EEXIST* *EEXIST*
The named file already exists. The named file already exists.
@ -760,7 +760,7 @@ symlink - Creates a symbolic link to a file
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix Search permission is denied for a directory in a file's path prefix
*EEXIST* *EEXIST*
The named file already exists. The named file already exists.
@ -818,7 +818,7 @@ readlink - Obtain the name of a symbolic link destination
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix Search permission is denied for a directory in a file's path prefix
*ENAMETOOLONG* *ENAMETOOLONG*
Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in
@ -870,7 +870,7 @@ mkdir - Makes a directory
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix Search permission is denied for a directory in a file's path prefix
*EEXIST* *EEXIST*
The name file already exist. The name file already exist.
@ -928,7 +928,7 @@ mkfifo - Makes a FIFO special file
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix Search permission is denied for a directory in a file's path prefix
*EEXIST* *EEXIST*
The named file already exists. The named file already exists.
@ -973,7 +973,7 @@ unlink - Removes a directory entry
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix Search permission is denied for a directory in a file's path prefix
*EBUSY* *EBUSY*
The directory is in use. The directory is in use.
@ -1032,11 +1032,11 @@ rmdir - Delete a directory
*EACCES* *EACCES*
Write access to the directory containing ``pathname`` was not Write access to the directory containing ``pathname`` was not
allowed for the processs effective uid, or one of the directories in``pathname`` did not allow search (execute) permission. allowed for the process's effective uid, or one of the directories in``pathname`` did not allow search (execute) permission.
*EPERM* *EPERM*
The directory containing ``pathname`` has the stickybit (S_ISVTX) The directory containing ``pathname`` has the stickybit (S_ISVTX)
set and the processs effective uid is neither the uid of the file to set and the process's effective uid is neither the uid of the file to
be delected nor that of the director containing it. be delected nor that of the director containing it.
*ENAMETOOLONG* *ENAMETOOLONG*
@ -1096,7 +1096,7 @@ rename - Renames a file
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix. Search permission is denied for a directory in a file's path prefix.
*EBUSY* *EBUSY*
The directory is in use. The directory is in use.
@ -1174,7 +1174,7 @@ stat - Gets information about a file
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix. Search permission is denied for a directory in a file's path prefix.
*EBADF* *EBADF*
Invalid file descriptor. Invalid file descriptor.
@ -1343,7 +1343,7 @@ chmod - Changes file mode.
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix Search permission is denied for a directory in a file's path prefix
*ENAMETOOLONG* *ENAMETOOLONG*
Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in Length of a filename string exceeds PATH_MAX and _POSIX_NO_TRUNC is in
@ -1393,7 +1393,7 @@ fchmod - Changes permissions of a file
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix. Search permission is denied for a directory in a file's path prefix.
*EBADF* *EBADF*
The descriptor is not valid. The descriptor is not valid.
@ -1464,7 +1464,7 @@ and ``errno`` is set appropriately.
Invalid file descriptor ``fd``. Invalid file descriptor ``fd``.
*EFAULT* *EFAULT*
Argument points outside the calling processs address space. Argument points outside the calling process's address space.
*EINVAL* *EINVAL*
Result buffer is too small. Result buffer is too small.
@ -1505,7 +1505,7 @@ chown - Changes the owner and/or group of a file.
**STATUS CODES:** **STATUS CODES:**
*EACCES* *EACCES*
Search permission is denied for a directory in a files path prefix Search permission is denied for a directory in a file's path prefix
*EINVAL* *EINVAL*
Invalid argument Invalid argument
@ -1634,7 +1634,7 @@ ftruncate - truncate a file to a specified length
An I/O error occurred updating the inode. An I/O error occurred updating the inode.
*EFAULT* *EFAULT*
``Path`` points outside the processs allocated address space. ``Path`` points outside the process's allocated address space.
*EBADF* *EBADF*
The ``fd`` is not a valid descriptor. The ``fd`` is not a valid descriptor.
@ -1702,7 +1702,7 @@ truncate - truncate a file to a specified length
An I/O error occurred updating the inode. An I/O error occurred updating the inode.
*EFAULT* *EFAULT*
``Path`` points outside the processs allocated address space. ``Path`` points outside the process's allocated address space.
*EBADF* *EBADF*
The ``fd`` is not a valid descriptor. The ``fd`` is not a valid descriptor.
@ -1919,7 +1919,7 @@ named pipe) named ``pathname``, specified by ``mode`` and ``dev``.
It should be a combination (using bitwise OR) of one of the file types listed It should be a combination (using bitwise OR) of one of the file types listed
below and the permissions for the new node. below and the permissions for the new node.
The permissions are modified by the processs ``umask`` in the usual way: the The permissions are modified by the process's ``umask`` in the usual way: the
permissions of the created node are ``(mode & ~umask)``. permissions of the created node are ``(mode & ~umask)``.
The file type should be one of ``S_IFREG``, ``S_IFCHR``, ``S_IFBLK`` and``S_IFIFO`` to specify a normal file (which will be created empty), character The file type should be one of ``S_IFREG``, ``S_IFCHR``, ``S_IFBLK`` and``S_IFIFO`` to specify a normal file (which will be created empty), character

View File

@ -1,8 +1,8 @@
============================ ============================
RTEMS POSIX API Users Guide RTEMS POSIX API User's Guide
============================ ============================
COPYRIGHT © 1988 - 2015. COPYRIGHT (c) 1988 - 2015.
On-Line Applications Research Corporation (OAR). On-Line Applications Research Corporation (OAR).

Some files were not shown because too many files have changed in this diff Show More