Add a CPU counter interface to allow access to a free-running counter.
It is useful to measure short time intervals. This can be used for
example to enable profiling of critical low-level functions.
Add two busy wait functions rtems_counter_delay_ticks() and
rtems_counter_delay_nanoseconds() implemented via the CPU counter.
This adds five tests for <sys/cpuset.h>. It does not include
tests for CPU_XXX_S methods. The autotools should be able to
avoid enabling the tests unless the toolset has <sys/cpuset.h>.
Add CPU port type CPU_Exception_frame and function
_CPU_Exception_frame_print().
The CPU ports of avr, bfin, h8300, lm32, m32c, m32r, m68k, nios2, sh,
sparc64, and v850 use an empty default implementation of
_CPU_Exception_frame_print().
Add rtems_exception_frame and rtems_exception_frame_print().
Add RTEMS_FATAL_SOURCE_EXCEPTION for CPU exceptions. Use rtems_fatal()
with source RTEMS_FATAL_SOURCE_EXCEPTION in CPU ports of i386, powerpc,
and sparc for unexpected exceptions.
Add third parameter to RTEMS_BSP_CLEANUP_OPTIONS() which controls the
BSP_PRINT_EXCEPTION_CONTEXT define used in the default
bsp_fatal_extension().
Add test sptests/spfatal26.
System events are similar to normal events. They offer a second set of
events. These events are intended for internal RTEMS use and should not
be used by applications (with the exception of the transient system
event).
The work areas (RTEMS work space and C program heap) will be initialized
now in a separate step and are no longer part of
rtems_initialize_data_structures(). Initialization is performed with
tables of Heap_Area entries. This allows usage of scattered memory
areas present on various small scale micro-controllers.
The sbrk() support API changes also. The bsp_sbrk_init() must now deal
with a minimum size for the first memory chunk to take the configured
work space size into account.
The changes in _Thread_Dispatch() of commits
dad36c52b8 and
d4dc7c8196 introduced a severe bug which
destroys the real-time properties of RTEMS completely.
Consider the following scenario. We have three tasks L (lowest
priority), M (middle priority), and H (highest priority). Now let a
thread dispatch from M to L happen. An interrupt occurs in
_Thread_Dispatch() here:
void _Thread_Dispatch( void )
{
[...]
post_switch:
_ISR_Enable( level );
<-- INTERRUPT
<-- AFTER INTERRUPT
_Thread_Unnest_dispatch();
_API_extensions_Run_postswitch();
}
The interrupt event makes task H ready. The interrupt code will see
_Thread_Dispatch_disable_level > 0 and thus doesn't perform a
_Thread_Dispatch(). Now we return to position "AFTER INTERRUPT". This
means task L executes now although task H is ready! Task H will execute
once someone calls _Thread_Dispatch().
Script does what is expected and tries to do it as
smartly as possible.
+ remove occurrences of two blank comment lines
next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
contain CVS Ids
+ If the processing left a blank line at the top of
a file, it was removed.
Since the CBS scheduler is inspired by AQuoSA project for Linux, additional API
(qreslib) compliant with Linux has been created.
Sptest for qreslib included.
PR 1857/tests
* Makefile.am, configure.ac: Add test where there is more than one
thread at a priority with the executing thread being non-preemptive.
* sp76/.cvsignore, sp76/Makefile.am, sp76/init.c, sp76/sp76.doc,
sp76/sp76.scn: New files.
* Makefile.am, configure.ac: New test to get coverage of core mutex
obtain while in ISR or other dispatch disabled critical section but
no wait.
* sp75/.cvsignore, sp75/Makefile.am, sp75/init.c, sp75/sp75.doc,
sp75/sp75.scn: New files.
PR 1853/tests
* Makefile.am, configure.ac: Add test for case where a thread is
non-preemptive, multiple threads are ready at that priority, a higher
priority thread is heir and the thread yields.
* sp74/.cvsignore, sp74/Makefile.am, sp74/init.c, sp74/sp74.doc,
sp74/sp74.scn: New files.
PR 1641/cpukit
* Makefile.am, configure.ac: Create testcase for red black tree.
* sprbtree01/init.c, sprbtree01/Makefile.am, sprbtree01/sprbtree01.doc,
sprbtree01/sprbtree01.scn: New files.
PR 1743/cpu
* Makefile.am, configure.ac, spsize/size.c: Add Simple Priority
Scheduler as complement to existing Deterministic Priority Scheduler.
This scheduler serves both as an example and as a lighter weight
implementation for smaller systems.
* spsimplesched01/.cvsignore, spsimplesched01/Makefile.am,
spsimplesched01/init.c, spsimplesched01/spsimplesched01.doc,
spsimplesched01/spsimplesched01.scn, spsimplesched02/.cvsignore,
spsimplesched02/Makefile.am, spsimplesched02/init.c,
spsimplesched02/spsimplesched02.doc,
spsimplesched02/spsimplesched02.scn, spsimplesched03/.cvsignore,
spsimplesched03/Makefile.am, spsimplesched03/init.c,
spsimplesched03/spsimplesched03.doc,
spsimplesched03/spsimplesched03.scn: New files.
* Makefile.am, configure.ac: Add sp73. This is a new test designed
to improve coverage of the thread yield logic.
* sp73/.cvsignore, sp73/Makefile.am, sp73/init.c, sp73/sp73.doc,
sp73/sp73.scn: New files.