Rename scheduler per-thread information into scheduler nodes using
Scheduler_Node as the base type. Use inheritance for specialized
schedulers.
Move the scheduler specific states from the thread control block into
the scheduler node structure.
Validate the SMP scheduler node state transitions in case RTEMS_DEBUG is
defined.
Do not allocate the scheduler control structures from the workspace.
This is a preparation step for configuration of clustered/partitioned
schedulers on SMP.
This simplifies the RTEMS initialization and helps to avoid a memory
overhead. The workspace demands of the IO manager were not included in
the <rtems/confdefs.h> workspace size estimate. This is also fixed as a
side-effect.
Update documentation and move "Specifying Application Defined Device
Driver Table" to the section end. This sub-section is not that
important for the user. Mentioning this at the beginning may lead to
confusion.
Delete global variables _Priority_Major_bit_map and _Priority_Bit_map.
This makes it possible to use multiple priority scheduler instances for
example with clustered/partitioned scheduling on SMP.
Do not return to BSP context in the exit() shutdown path. This makes it
possible to re-use the initialization stack. It can be used for the
interrupt stack for example. On targets with a small RAM this is a
considerable benefit.
This change eliminates also some special cases and simplifies the code.
Delete _Thread_Set_global_exit_status(),
_Thread_Get_global_exit_status() and _Thread_Stop_multitasking().
Move implementation specific parts of prioritybitmap.h and
prioritybitmap.inl into new header file prioritybitmapimpl.h. The
prioritybitmap.h contains now only the application visible API.
Move content of bitfield.h into prioritybitmapimpl.h.
Move implementation specific parts of tasks.h and tasks.inl into new
header file tasksimpl.h. The tasks.h contains now only the application
visible API.
Move implementation specific parts of region.h and region.inl into new
header file regionimpl.h. The region.h contains now only the
application visible API.
Move implementation specific parts of timer.h and timer.inl into new
header file timerimpl.h. The timer.h contains now only the application
visible API.
Move implementation specific parts of ratemon.h and ratemon.inl into
new header file ratemonimpl.h. The ratemon.h contains now only the
application visible API.
Move implementation specific parts of dpmem.h and dpmem.inl into new
header file dpmemimpl.h. The dpmem.h contains now only the application
visible API.
Move implementation specific parts of event.h, event.inl, eventset.h and
eventset.inl into new header file eventimpl.h. The event.h contains now
only the application visible API.
Move implementation specific parts of extension.h and extension.inl into
new header file extensionimpl.h. The extension.h contains now only the
application visible API.
Move implementation specific parts of watchdog.h and watchdog.inl into
new header file watchdogimpl.h. The watchdog.h contains now only the
application visible API.
Move implementation specific parts of message.h and message.inl into new
header file messageimpl.h. The message.h contains now only the
application visible API.
Rename in rtems_smp_get_processor_count(). Always provide
<rtems/score/smp.h> and <rtems/rtems/smp.h>. Add
_SMP_Get_processor_count(). This function will be a compile time
constant defined to be one on uni-processor configurations. This allows
iterations over all processors without overhead on uni-processor
configurations.
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.
PR 1729/cpukit
* spsize/size.c: Add next step in SMP support. This adds an allocated
array of the Per_CPU structures to support multiple cpus vs a single
instance of the structure which is still used if SMP support is
disabled. Configuration support is also added to explicitly enable or
disable SMP. But SMP can only be enabled for the CPUs which will
support it initially -- SPARC and i386. With the stub BSP support, a
BSP can be run as a single core SMP system from an RTEMS data
structure standpoint.
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.
PR 1573/cpukit
* spsize/size.c: Add a per cpu data structure which contains the
information required by RTEMS for each CPU core. This encapsulates
information such as thread executing, heir, idle and dispatch needed.
* Makefile.am, configure.ac, spfatal06/testcase.h,
spfatal07/testcase.h, spfatal08/testcase.h, spfatal09/testcase.h,
spsize/size.c: Eliminate pointers to API configuration tables in the
main configuration table. Reference the main configuration table and
the API configuration tables directly using the confdefs.h version
rather than obtaining a pointer to it. This eliminated some
variables, a potential fatal error, some unnecessary default
configuration structures. Overall, about a 4.5% reduction in the code
size for minimum and hello on the SPARC.
* spfatal10/.cvsignore, spfatal10/Makefile.am, spfatal10/spfatal10.scn,
spfatal10/testcase.h: Removed.
* spsize/size.c: Make _System_state_Is_multiprocessing unused when
multiprocessing is not enabled. Saves one more variable from single
processor configuration.
* sp28/init.c: Corrections to configuration.
* sp37/init.c: Correctly invoke rtems_interrupt_disable() body.
* spsize/size.c: _ISR_Vector_table only exists on architectures
which use the Simple Vectored Interrupt Model.
* spsize/size.c: Move interrupt_stack_size field from CPU Table to
Configuration Table. Eliminate CPU Table from all ports. Delete
references to CPU Table in all forms.
* spsize/size.c: Eliminate maximum_drivers configuration parameter
since it was used to configure a no longer used feature. Device names
are now part of the filesystem not in a table. This also eliminated
the variables _IO_Number_of_devices and _IO_Driver_name_table from
RTEMS as well as the memory allocation used to populate
_IO_Driver_name_table.
* sp01/Makefile.am, sp02/Makefile.am, sp03/Makefile.am,
sp04/Makefile.am, sp05/Makefile.am, sp06/Makefile.am,
sp07/Makefile.am, sp07/tdelete.c, sp08/Makefile.am, sp09/Makefile.am,
sp11/Makefile.am, sp12/Makefile.am, sp13/Makefile.am,
sp14/Makefile.am, sp15/Makefile.am, sp16/Makefile.am,
sp17/Makefile.am, sp19/Makefile.am, sp20/Makefile.am,
sp21/Makefile.am, sp22/Makefile.am, sp23/Makefile.am,
sp24/Makefile.am, sp25/Makefile.am, sp26/Makefile.am,
sp32/Makefile.am, sp33/Makefile.am, sp34/Makefile.am,
sp35/Makefile.am, spfatal/Makefile.am, spsize/Makefile.am,
spsize/size.c: Add optional managers to Makefiles. Clean up test
cases so last output line follows END OF pattern. Make sure test case
all run. All tests appeared ok on sis.