| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
Move thread dispatch declarations and inline functions to new header
<rtems/score/threaddispatch.h> to make it independent of the
Thread_Control structure. This avoids a cyclic dependency in case
thread dispatch functions are used for the object implementation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the SMP lock implementation to the CPU port. An optimal SMP lock
implementation is highly architecture dependent. For example the memory
models may be fundamentally different.
The new SMP lock API has a flaw. It does not provide the ability to use
a local context for acquire and release pairs. Such a context is
necessary to implement for example the Mellor-Crummey and Scott (MCS)
locks. The SMP lock is currently used in _Thread_Disable_dispatch() and
_Thread_Enable_dispatch() and makes them to a giant lock acquire and
release. Since these functions do not pass state information via a
local context there is currently no use case for such a feature.
|
| |
|
|
|
|
| |
disable/enable-IRQ function simulated.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add and use new CPU port define CPU_SIZEOF_POINTER. It must be an
integer literal that can be used by the assembler. This value will be
used to calculate offsets of structure members. These offsets will be
used in assembler code.
The size of a pointer is part of the application binary interface (ABI)
and thus independent of the actual programming language. The compiler
will provide defines to determine the current ABI. We use these defines
to select the appropriate CPU_SIZEOF_POINTER value.
Static assertions in the new file "cpukit/score/src/percpuasm.c" will
ensure that the value of CPU_SIZEOF_POINTER is consistent with the
current compiler settings. Also the offset values used by assembler
code are verfied.
|
|
|
|
|
| |
The _User_extensions_Thread_switch() function is only used in
_Thread_Dispatch().
|
|
|
|
|
| |
This file contains the parts of <rtems/score/userext.h> that are only
necessary for the RTEMS implementation.
|
|
|
|
| |
Delete _TOD_Get_as_timestamp().
|
| |
|
|
|
|
|
|
|
| |
Replace the separate user extension iterations with a single iteration
function. This reduces code size and improves maintainability since the
iteration logic is only in one function. The runtime overhead is
insignificant.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The _Heap_Extend() has now the same signature as _Heap_Initialize().
The 4th parameter is ignored (page size in _Heap_Initialize()).
Add Heap_Area and Heap_Initialization_or_extend_handler.
Add and test _Heap_No_extend().
This helps to do a table based heap initialization and extension.
Create a table of Heap_Area elements and iterate through it. Set the
handler to _Heap_Initialize() in the first iteration and then to
_Heap_Extend().
|
|
|
|
|
|
|
| |
Due to the fact that CBS extends the EDF scheduler, most parts of EDF are
reused. One part is the allocation of the per-thread data. However, the CBS
per-thread structure defines a further element (while including the rest of
Scheduler_EDF_Per_thread)
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
See http://www.rtems.org/pipermail/rtems-devel/2012-May/001006.html
for details.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New functions
o _RBTree_Next_unprotected(),
o _RBTree_Next(),
o _RBTree_Successor_unprotected(),
o _RBTree_Predecessor_unprotected(),
o rtems_rbtree_successor_unprotected(), and
o rtems_rbtree_predecessor_unprotected().
Change prototype of
o _RBTree_Successor(),
o _RBTree_Predecessor(),
o rtems_rbtree_successor(), and
o rtems_rbtree_predecessor().
|
|
|
|
|
|
| |
Various tests must check program paths that result due to failed memory
allocations from the heap. To avoid tinkering with internal heap
structures throughout the test code these functions should be used.
|
|
|
|
|
|
|
| |
* score/src/wkstringduplicate.c: New file.
* score/Makefile.am: Reflect change above.
* score/include/rtems/score/wkspace.h: Declare
_Workspace_String_duplicate().
|
|
|
|
|
|
|
|
|
|
| |
* score/src/heapiterate.c, score/src/pheapiterate.c: New files.
* score/Makefile.am: Reflect changes above.
* score/include/rtems/score/heap.h: Declare _Heap_Iterate() and define
Heap_Block_visitor.
* score/include/rtems/score/protectedheap.h: Declare
_Protected_heap_Iterate().
* score/src/heapgetinfo.c: Use _Heap_Iterate().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1914/cpukit
* score/src/timespecgreaterthan.c, score/src/ts64greaterthan.c:
Removed files.
* score/Makefile.am: Reflect changes above.
* score/include/rtems/score/timespec.h,
score/include/rtems/score/timestamp.h,
score/include/rtems/score/timestamp64.h, score/src/ts64addto.c,
score/src/ts64divide.c, score/src/ts64dividebyinteger.c,
score/src/ts64equalto.c, score/src/ts64getnanoseconds.c,
score/src/ts64getseconds.c, score/src/ts64lessthan.c,
score/src/ts64set.c, score/src/ts64settozero.c,
score/src/ts64subtract.c, score/src/ts64toticks.c,
score/src/ts64totimespec.c: Use CPU_TIMESTAMP_USE_STRUCT_TIMESPEC,
CPU_TIMESTAMP_USE_INT64, and CPU_TIMESTAMP_USE_INT64_INLINE. Removed
copy and paste.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 1896/cpukit
* sapi/include/confdefs.h, score/Makefile.am, score/preinstall.am: Add
Earliest Deadline First (EDF) Scheduling Algorithm implementation.
* score/include/rtems/score/scheduleredf.h, score/src/scheduleredf.c,
score/src/scheduleredfallocate.c, score/src/scheduleredfblock.c,
score/src/scheduleredfenqueue.c,
score/src/scheduleredfenqueuefirst.c,
score/src/scheduleredfextract.c, score/src/scheduleredffree.c,
score/src/scheduleredfprioritycompare.c,
score/src/scheduleredfreleasejob.c, score/src/scheduleredfschedule.c,
score/src/scheduleredfunblock.c, score/src/scheduleredfupdate.c,
score/src/scheduleredfyield.c: New files.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1895/cpukit
* rtems/src/ratemoncancel.c, rtems/src/ratemondelete.c,
rtems/src/ratemonperiod.c, sapi/include/confdefs.h,
score/Makefile.am, score/include/rtems/score/scheduler.h,
score/include/rtems/score/schedulerpriority.h,
score/include/rtems/score/schedulersimple.h,
score/include/rtems/score/schedulersimplesmp.h,
score/inline/rtems/score/scheduler.inl,
score/inline/rtems/score/schedulerpriority.inl,
score/src/coremutexseize.c: Add priority_compare and release_job
hooks interfaces to scheduler interface.
* score/src/schedulerpriorityprioritycompare.c,
score/src/schedulerpriorityreleasejob.c: New files.
|
|
|
|
|
|
|
|
| |
PR 1876
* score/Makefile.am, score/include/rtems/score/isr.h, score/src/isr.c,
score/src/smp.c, score/src/smplock.c, score/src/threaddispatch.c,
score/src/threaddispatchdisablelevel.c: Add smp isr support.
* score/src/isrsmp.c: New file.
|
|
|
|
|
|
|
|
| |
* score/Makefile.am, score/preinstall.am,
score/include/rtems/score/isr.h, score/include/rtems/score/percpu.h:
Split isrlevel into its own file to avoid a circular dependancy in
smp code.
* score/include/rtems/score/isrlevel.h: New file.
|
|
|
|
|
|
| |
* score/Makefile.am, score/include/rtems/score/schedulersimplesmp.h,
score/src/schedulersimplesmptick.c: Build schedulersimplesmptick.c
and fix typos.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1819/cpukit
* rtems/src/clocktick.c, score/Makefile.am,
score/include/rtems/score/scheduler.h,
score/include/rtems/score/schedulerpriority.h,
score/include/rtems/score/schedulersimple.h,
score/include/rtems/score/schedulersimplesmp.h,
score/include/rtems/score/thread.h,
score/inline/rtems/score/scheduler.inl: Add a scheduler entry point
which is invoked at each clock tick. _Thread_Tickle_timeslice() is
now a method owned by the Deterministic Priority Scheduler and shared
by the Simple Priority Scheduler. The Simple SMP Scheduler has its
own variation on this which does timeslicing bookkeeping on all
cores.
* score/src/schedulerprioritytick.c,
score/src/schedulersimplesmptick.c: New files.
* score/src/threadtickletimeslice.c: Removed.
|
|
|
|
|
|
|
| |
* score/Makefile.am, score/include/rtems/score/thread.h,
score/inline/rtems/score/thread.inl: Add smp support to dispable
dispatch level accesses.
* score/src/threaddispatchdisablelevel.c: New file.
|
|
|
|
| |
* score/Makefile.am: Reformat.
|
|
|
|
|
| |
* score/Makefile.am, score/preinstall.am: bspsmp.h is now supposed to
be installed all the time. Revert part of previous commit.
|
|
|
|
|
|
|
|
|
|
| |
PR 1789/cpukit
* sapi/include/confdefs.h, score/Makefile.am, score/preinstall.am: Add
Simple SMP Priority Scheduler.
* score/include/rtems/score/schedulersimplesmp.h,
score/src/schedulersimplesmpblock.c,
score/src/schedulersimplesmpschedule.c,
score/src/schedulersimplesmpunblock.c: New files.
|
|
|
|
|
| |
* score/Makefile.am, score/include/rtems/score/isr.h: Replace tabs with
spaces.
|
|
|
|
|
|
|
|
| |
* score/Makefile.am, score/preinstall.am,
score/include/rtems/score/percpu.h, score/src/percpu.c,
score/src/threadcreateidle.c: Modifications to restrict compilation
of SMP only code to when SMP is enabled. Entire SMP specific files
are disabled via Makefile.am.
|
|
|
|
|
|
|
|
|
| |
PR 1784
* sapi/src/exinit.c, score/Makefile.am, score/preinstall.am,
score/include/rtems/bspsmp.h, score/src/percpu.c, score/src/smp.c,
score/src/threadcreateidle.c: Split bspsmp.h into two files smp.h and
bspsmp.h
* score/include/rtems/score/smp.h: New file.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1777/cpukit
* libcsupport/src/malloc_deferred.c, libcsupport/src/realloc.c,
score/Makefile.am, score/cpu/lm32/irq.c, score/cpu/nios2/irq.c,
score/include/rtems/score/coremutex.h,
score/include/rtems/score/thread.h,
score/inline/rtems/score/thread.inl, score/src/heapfree.c,
score/src/pheapwalk.c, score/src/smp.c, score/src/threaddispatch.c:
Consolidated access to _Thread_Dispatch_disable_level.
* score/src/threaddisabledispatch.c, score/src/threadenabledispatch.c:
New files.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1729/cpukit
* configure.ac, sapi/include/confdefs.h, sapi/src/exinit.c,
score/Makefile.am, score/preinstall.am,
score/cpu/i386/rtems/score/cpu.h, score/cpu/sparc/cpu_asm.S,
score/cpu/sparc/rtems/score/cpu.h,
score/include/rtems/score/basedefs.h,
score/include/rtems/score/context.h,
score/include/rtems/score/percpu.h, score/src/percpu.c,
score/src/thread.c, score/src/threadcreateidle.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.
* aclocal/check-smp.m4, aclocal/enable-smp.m4,
score/include/rtems/bspsmp.h, score/include/rtems/score/smplock.h,
score/src/smp.c, score/src/smplock.c: New files.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1743/cpu
* sapi/include/confdefs.h, score/Makefile.am, score/preinstall.am: 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.
* score/include/rtems/score/schedulersimple.h,
score/inline/rtems/score/schedulersimple.inl,
score/src/schedulersimple.c, score/src/schedulersimpleblock.c,
score/src/schedulersimpleenqueue.c,
score/src/schedulersimpleenqueuefirst.c,
score/src/schedulersimpleextract.c,
score/src/schedulersimplereadyqueueenqueue.c,
score/src/schedulersimplereadyqueueenqueuefirst.c,
score/src/schedulersimpleschedule.c,
score/src/schedulersimpleunblock.c, score/src/schedulersimpleyield.c:
New files.
|
|
|
|
|
|
|
| |
* rtems/src/taskresume.c, score/Makefile.am,
score/include/rtems/score/thread.h: Convert _Thread_Resume and
_Thread_Suspend into macros.
* score/src/threadresume.c, score/src/threadsuspend.c: Removed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* sapi/include/confdefs.h, score/Makefile.am,
score/include/rtems/score/scheduler.h,
score/include/rtems/score/schedulerpriority.h,
score/include/rtems/score/thread.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/schedulerpriorityunblock.c,
score/src/schedulerpriorityyield.c, score/src/threadchangepriority.c,
score/src/threadclose.c, score/src/threadinitialize.c,
score/src/threadsetpriority.c, score/src/threadsettransient.c:
Significant clean up on Scheduler Plugin Interface. Names were
shortened. Missing operations added. Many scheduler files had
unneeded includes removed. Made pointer to scheduler information in
Thread_Control and Scheduler_Control a void * pointer because the
thread and scheduler wrapper should be unaware of scheduler types AND
this is broken for user provided schedulers.
* score/src/schedulerpriorityallocate.c,
score/src/schedulerpriorityenqueue.c,
score/src/schedulerpriorityenqueuefirst.c,
score/src/schedulerpriorityextract.c,
score/src/schedulerpriorityfree.c,
score/src/schedulerpriorityupdate.c: New files.
* score/src/schedulerprioritythreadschedulerallocate.c,
score/src/schedulerprioritythreadschedulerfree.c,
score/src/schedulerprioritythreadschedulerupdate.c: Removed.
|
|
|
|
|
|
|
|
| |
* score/src/watchdognanoseconds.c: New file.
* score/Makefile.am: Reflect change above.
* score/include/rtems/score/watchdog.h, score/src/coretodget.c,
score/src/coretodgetuptime.c: Do not allow NULL as nanoseconds since
last tick handler pointer.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1647/cpukit
* posix/src/nanosleep.c, posix/src/sched_yield.c,
rtems/src/taskwakeafter.c, sapi/include/confdefs.h,
sapi/include/rtems/config.h, sapi/src/exinit.c, score/Makefile.am,
score/preinstall.am, score/include/rtems/score/prioritybitmap.h,
score/include/rtems/score/thread.h,
score/inline/rtems/score/thread.inl, score/src/thread.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/threadsettransient.c, score/src/threadsuspend.c,
score/src/threadtickletimeslice.c: Refactor scheduler out of thread
handler to facilitate alternate scheduler implementations.
* score/src/threadyieldprocessor.c: Removed.
* score/src/schedulerprioritythreadschedulerupdate.c,
score/src/schedulerprioritythreadschedulerfree.c,
score/src/schedulerpriorityblock.c, score/src/scheduler.c,
score/src/schedulerprioritythreadschedulerallocate.c,
score/src/schedulerpriorityunblock.c,
score/src/schedulerpriority.c, score/src/schedulerpriorityyield.c,
score/include/rtems/score/schedulerpriority.h,
score/include/rtems/score/scheduler.h,
score/inline/rtems/score/scheduler.inl,
score/inline/rtems/score/schedulerpriority.inl: New files.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1673/cpukit
* score/src/chainappendempty.c, score/src/chaingetempty.c,
score/src/chainprependempty.c: New files.
* score/Makefile.am: Reflect changes above.
* score/include/rtems/score/chain.h: Declare
_Chain_Append_with_empty_check(), _Chain_Prepend_with_empty_check(),
and _Chain_Get_with_empty_check().
* score/inline/rtems/score/chain.inl: Define
_Chain_Append_with_empty_check_unprotected(),
_Chain_Prepend_with_empty_check_unprotected(), and
_Chain_Get_with_empty_check_unprotected().
|