New macros
o _Objects_Maximum_per_allocation(),
o rtems_resource_is_unlimited(), and
o rtems_resource_maximum_per_allocation().
New function
o _Objects_Is_unlimited().
In the Red-Black Tree Heap the administration data structures are not
contained in the managed memory area. This can be used for example in a
task stack allocator which protects the task stacks from access by other
tasks.
PR 1924/cpukit
* sapi/include/rtems/config.h: Added stack_allocate_init_hook to
rtems_configuration_table.
* sapi/include/confdefs.h: Added CONFIGURE_TASK_STACK_FROM_ALLOCATOR
and CONFIGURE_TASK_STACK_ALLOCATOR_INIT defines. Set default stack
allocator and free hook to _Workspace_Allocate() and _Workspace_Free()
respectively.
* score/src/thread.c, score/src/threadstackallocate.c,
score/src/threadstackfree.c: Update due to API changes.
PR 1924/cpukit
* sapi/include/rtems/config.h: New fields stack_space_size,
unified_work_area, and stack_allocator_avoids_work_space in
rtems_configuration_table.
* sapi/include/confdefs.h: Removed rtems_unified_work_area (this is
now part of the Configuration). Separate work space and stack space
estimate. Added CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
configuration option.
* libmisc/shell/main_wkspaceinfo.c, score/src/wkspace.c,
libcsupport/src/malloc_initialize.c: Update due to API changes.
PR 1906/cpukit
* sapi/Makefile.am, sapi/preinstall.am, sapi/include/confdefs.h,
score/Makefile.am, score/preinstall.am: Add the CBS (Constant
Bandwidth Server) scheduler. This is a complex scheduling policy
built atop of the EDF scheduler. Unlike other schedulers, this one
provides a user API and handles not only deadlines of tasks but also
claimed budget per period. The main aim of the scheduler is isolation
of tasks so that each task is guaranteed to meet all deadlines
regardless of how other tasks behave.
* sapi/include/rtems/cbs.h, sapi/inline/rtems/cbs.inl,
score/include/rtems/score/schedulercbs.h, score/src/schedulercbs.c,
score/src/schedulercbsattachthread.c,
score/src/schedulercbscleanup.c,
score/src/schedulercbscreateserver.c,
score/src/schedulercbsdestroyserver.c,
score/src/schedulercbsdetachthread.c,
score/src/schedulercbsgetapprovedbudget.c,
score/src/schedulercbsgetexecutiontime.c,
score/src/schedulercbsgetparameters.c,
score/src/schedulercbsgetremainingbudget.c,
score/src/schedulercbsgetserverid.c,
score/src/schedulercbsreleasejob.c,
score/src/schedulercbssetparameters.c,
score/src/schedulercbsunblock.c: New files.
PR 1886/cpukit
* sapi/include/rtems/rbtree.h, sapi/inline/rtems/rbtree.inl,
score/include/rtems/score/rbtree.h,
score/inline/rtems/score/rbtree.inl, score/src/rbtree.c,
score/src/rbtreeinsert.c: This patch enables inserting duplicate keys
into rbtree. It is possible to turn on this feature when initializing
the tree.
PR 1641/cpukit
* sapi/Makefile.am, sapi/preinstall.am, score/Makefile.am,
score/preinstall.am: Add Red Black Tree data structure to score.
* sapi/include/rtems/rbtree.h, sapi/inline/rtems/rbtree.inl,
score/include/rtems/score/rbtree.h, score/inline/rtems/score/rbtree.inl,
score/src/rbtree.c, score/src/rbtreeextract.c,
score/src/rbtreefind.c, score/src/rbtreefindheader.c,
score/src/rbtreeget.c, score/src/rbtreeinsert.c,
score/src/rbtreepeek.c: New files.
* sapi/include/confdefs.h, sapi/include/rtems/config.h,
score/include/rtems/score/scheduler.h,
score/include/rtems/score/schedulerpriority.h,
score/inline/rtems/score/scheduler.inl,
score/inline/rtems/score/schedulerpriority.inl,
score/src/scheduler.c, score/src/schedulerpriority.c,
score/src/schedulerpriorityblock.c,
score/src/schedulerpriorityschedule.c,
score/src/schedulerprioritythreadschedulerallocate.c,
score/src/schedulerprioritythreadschedulerfree.c,
score/src/schedulerprioritythreadschedulerupdate.c,
score/src/schedulerpriorityunblock.c,
score/src/schedulerpriorityyield.c, score/src/threadchangepriority.c,
score/src/threadclearstate.c, score/src/threadclose.c,
score/src/threadinitialize.c, score/src/threadready.c,
score/src/threadresume.c, score/src/threadsetpriority.c,
score/src/threadsetstate.c, score/src/threadsuspend.c: Simplify the
pluggable scheduler interface. Its configuration made a table
of available schedulers and set a pointer to one of the.
This was heavy handed since you can only use one scheduler
in an application. This configuration mechanism resulted in a
scheduler pointer being passed around when you could put all
scheduler configuration in an initialized structure.
* sapi/include/rtems/config.h: Fixed typos (wrong case) in macro
expansion for
rtems_configuration_get_device_driver_table()
and
rtems_configuration_get_user_extension_table()
* cpukit/sapi/include/rtems/io.h: Documentation.
* cpukit/sapi/src/ioregisterdriver.c: Call from interrupt context is
an error.
* cpukit/sapi/src/iounregisterdriver.c: Disable preemption during
critical section.
* sapi/include/rtems/io.h, sapi/src/ioregisterdriver.c: Documenation.
rtems_io_lookup_name() is now deprecated. Added
rtems_io_driver_io_error(). rtems_io_register_driver() is now
thread-safe.
* sapi/include/rtems/config.h, score/include/rtems/score/thread.h,
score/src/threadidlebody.c: Change prototype of IDLE thread to
consistently return void * and take a uintptr_t argument.
* rtems/include/rtems/rtems/regionmp.h, sapi/include/rtems/config.h,
sapi/src/exinit.c, score/Makefile.am,
score/include/rtems/score/object.h,
score/include/rtems/score/objectmp.h, score/src/objectmp.c: Eliminate
Object Handler Initialization routine since it was all for MP
configurations.
* score/src/object.c: Removed.
* itron/include/rtems/itron/itronapi.h, libmisc/capture/capture.c,
libmisc/monitor/mon-config.c, libmisc/monitor/mon-driver.c,
libmisc/monitor/mon-itask.c, libmisc/monitor/mon-mpci.c,
posix/include/rtems/posix/config.h,
posix/include/rtems/posix/posixapi.h,
rtems/include/rtems/rtems/config.h,
rtems/include/rtems/rtems/rtemsapi.h, rtems/src/taskinitusers.c,
sapi/include/confdefs.h, sapi/include/rtems/config.h,
sapi/include/rtems/init.h, sapi/src/exinit.c, sapi/src/itronapi.c,
sapi/src/posixapi.c, sapi/src/rtemsapi.c, score/src/isr.c,
score/src/thread.c, score/src/threadcreateidle.c,
score/src/threadstackallocate.c, score/src/threadstackfree.c,
score/src/wkspace.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.
* libcsupport/src/realloc.c, rtems/include/rtems/rtems/region.h,
rtems/src/regioncreate.c, rtems/src/regionextend.c,
rtems/src/regiongetsegment.c, rtems/src/regiongetsegmentsize.c,
rtems/src/regionmp.c, rtems/src/regionresizesegment.c,
sapi/include/rtems/config.h, score/include/rtems/score/heap.h,
score/include/rtems/score/protectedheap.h, score/src/heap.c,
score/src/heapallocate.c, score/src/heapallocatealigned.c,
score/src/heapextend.c, score/src/heapresizeblock.c,
score/src/heapsizeofuserarea.c, score/src/pheapallocate.c,
score/src/pheapallocatealigned.c, score/src/pheapextend.c,
score/src/pheapgetblocksize.c, score/src/pheapresizeblock.c: Change
sizes of heap/region and allocated objects in heap to intptr_t so
they can be larger than a single allocatable object (e.g. size_t).
* posix/include/rtems/posix/pthread.h, posix/src/pthread.c,
posix/src/pthreadcreate.c, rtems/include/rtems.h, rtems/src/attr.c,
sapi/include/confdefs.h, sapi/include/rtems/config.h,
score/inline/rtems/score/stack.inl, score/src/isr.c,
score/src/mpci.c, score/src/threadcreateidle.c,
score/src/threadinitialize.c, score/src/threadstackallocate.c: Add
ability for application to configure minimum stack size. Add
RTEMS_CONFIGURED_MINIMUM_STACK_SIZE constant so user can clearly
indicate they want the configured as opposed to the recommended
minimum stack size.
reduce size of data area.
IMFS: Fixed creation of symbolic links to avoid a compiler warning.
DOSFS: Use LibBlock instead of read() to read the boot record.
* sapi/include/rtems/init.h, sapi/src/exinit.c: Refactored and renamed
initialization routines to rtems_initialize_data_structures,
rtems_initialize_before_drivers, rtems_initialize_device_drivers, and
rtems_initialize_start_multitasking. This opened the sequence up so
that bootcard() could provide a more robust and flexible framework
which is easier to explain and understand. This also lays the
groundwork for sharing the division of available memory between the
RTEMS workspace and heap and the C library initialization across all
BSPs.
* sapi/include/confdefs.h: Do not reserve 2 * minimum stack size
for the ITRON initialization tasks ALL the time.
Do not reserve memory for the object name table since it does not
exist any longer.
* sapi/include/rtems/sptables.h: Fix typo.
* sapi/include/rtems/config.h, sapi/include/rtems/sptables.h: Add
missing field to default multiprocessing configuration table. Also
document fields in Doxygen format.
* sapi/include/rtems/fatal.h, score/include/rtems/score/coremutex.h,
score/include/rtems/score/interr.h,
score/inline/rtems/score/thread.inl, score/src/coremutexseize.c:
Modifications to aid in full path testing.
* sapi/include/confdefs.h, sapi/include/rtems/config.h,
sapi/include/rtems/init.h, sapi/src/exinit.c,
score/include/rtems/system.h, score/src/isr.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.