Commit Graph
233 Commits
Author SHA1 Message Date
Sebastian Huber f3508c44b5 tmtests/tmcontext01: Improve cache dirty function
Increment by cache line size to allow more cycles per second.
2014-09-11 07:33:16 +02:00
Sebastian Huber 8d30713d42 tmtests/tmcontext01: Improve cache dirty function 2014-09-08 07:53:03 +02:00
Sebastian Huber b2356837db tmtests/tmcontext01: Plot a legend 2014-09-05 08:24:52 +02:00
Joel Sherrill b6343c6100 Enhance Semaphore Blocking and Readying Time Test Cases
tm02 and tm03 were modified to be reused for multiple configurations
of RTEMS Classic API Semaphores. This added tm31-36.  The messages for
tm02 and tm03 were modified to indicate the semaphore attributes.
tm31 - tm36 were added. This resulted in the following cases:

tm02 - rtems_semaphore_obtain: Counting/FIFO not available caller blocks
tm03 - rtems_semaphore_release: Counting/FIFO task readied preempts caller
tm31 - rtems_semaphore_obtain: Counting/priority not available caller blocks
tm32 - rtems_semaphore_release: Counting/priority task readied preempts caller
tm33 - rtems_semaphore_obtain: Binary/FIFO not available caller blocks
tm34 - rtems_semaphore_release: Binary/FIFO task readied preempts caller
tm35 - rtems_semaphore_obtain: Binary/priority not available caller blocks
tm36 - rtems_semaphore_release: Binary/priority task readied preempts caller
2014-07-14 19:31:00 -05:00
Sebastian Huber 38b59a6d30 score: Implement forced thread migration
The current implementation of task migration in RTEMS has some
implications with respect to the interrupt latency. It is crucial to
preserve the system invariant that a task can execute on at most one
processor in the system at a time. This is accomplished with a boolean
indicator in the task context. The processor architecture specific
low-level task context switch code will mark that a task context is no
longer executing and waits that the heir context stopped execution
before it restores the heir context and resumes execution of the heir
task. So there is one point in time in which a processor is without a
task. This is essential to avoid cyclic dependencies in case multiple
tasks migrate at once. Otherwise some supervising entity is necessary to
prevent life-locks. Such a global supervisor would lead to scalability
problems so this approach is not used. Currently the thread dispatch is
performed with interrupts disabled. So in case the heir task is
currently executing on another processor then this prolongs the time of
disabled interrupts since one processor has to wait for another
processor to make progress.

It is difficult to avoid this issue with the interrupt latency since
interrupts normally store the context of the interrupted task on its
stack. In case a task is marked as not executing we must not use its
task stack to store such an interrupt context. We cannot use the heir
stack before it stopped execution on another processor. So if we enable
interrupts during this transition we have to provide an alternative task
independent stack for this time frame. This issue needs further
investigation.
2014-05-07 14:26:28 +02:00
Chris Johns 1461b648b7 testsuite: Add a per BSP test check for tests not to build.
Provide a file per BSP to list tests that do not build for a BSP. This change
removes the BSP_SMALL_MEMORY hack from the code. That hack was a
mistake.

Provide configuration files for each BSP with tests that cannot build.
2014-05-05 10:24:41 +10:00
Sebastian Huber e1598a616d score: Static scheduler configuration
Do not allocate the scheduler control structures from the workspace.
This is a preparation step for configuration of clustered/partitioned
schedulers on SMP.
2014-04-15 08:37:11 +02:00
Sebastian Huber 4bc8d2e717 rtems: Rename rtems_smp_get_processor_count()
Rename rtems_smp_get_processor_count() in rtems_get_processor_count().
Make rtems_get_processor_count() a function in uni-processor
configurations to enable ABI compatibility with SMP configurations.
2014-04-11 08:52:54 +02:00
Sebastian Huber 316ba974ba tmtests/tm21: Fix configuration 2014-04-07 16:48:01 +02:00
Sebastian Huber 24934e36e2 score: Add scheduler control to scheduler ops
Scheduler operations must be free of a global scheduler context to
enable partitioned/clustered scheduling.
2014-04-04 11:01:18 +02:00
Sebastian Huber 494c2e3002 score: Move priority bit map to scheduler instance
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.
2014-04-03 11:13:26 +02:00
Sebastian Huber a75242eb65 tmtests/tmcontext01: Use <rtems/test.h> 2014-03-25 16:46:37 +01:00
bjorn larsson 2ead50ac4e tmtests: convert to test.h 2014-03-25 08:06:37 +01:00
Chris Johns c49985691f Change all references of rtems.com to rtems.org. 2014-03-21 08:10:47 +11:00
Sebastian Huber 53ad908a64 score: Add SMP lock profiling support 2014-03-14 08:46:49 +01:00
Sebastian Huber 28779c70ff score: Add function to destroy SMP locks 2014-03-11 10:58:09 +01:00
Sebastian Huber d50acdbb6c score: Add local context to SMP lock API
Add a local context structure to the SMP lock API for acquire and
release pairs.  This context can be used to store the ISR level and
profiling information.  It may be later used to enable more
sophisticated lock algorithms, e.g. MCS locks.

There is only one lock that cannot be used with a local context.  This
is the per-CPU lock since here we would have to transfer the local
context through a context switch which is very complicated.
2014-03-11 10:58:09 +01:00
Sebastian Huber 825cb1f196 score: Delete _Thread_Dispatch_set_disable_level()
This function was only used in some tests and can be replaced with other
functions.
2014-03-06 09:43:59 +01:00
Sebastian Huber b323e1fb41 tmtests/tm26: Fix deadlock for SMP configurations
Some _Context_Switch() invocations end up in _Thread_Handler().  Create
the right context for this function.
2014-03-06 09:43:59 +01:00
Sebastian Huber 9abbb6ab97 tmtests/tmcontext01: New test 2014-02-28 09:06:20 +01:00
Cynthia Rempel 4e108d7919 tmtests: Add contents to multiple documentation files 2014-01-09 09:42:01 -06:00
Daniel Ramirez 371f32f48e tmtests: refactored timesys.h, removed declarations 2013-12-09 19:55:35 -06:00
Joel Sherrill 6d730e919f tmtests_plan.csv: New planning file 2013-12-07 19:49:40 -06:00
Joel Sherrill a98d5fc291 tmoverhd/testtask.c: Fix output to be consistent 2013-12-07 19:45:11 -06:00
Joel Sherrill dab34ec9e6 tmoverhd/empty.c: formatting 2013-12-07 19:44:20 -06:00
Joel Sherrill bcc45a8142 tm19: Clean up output 2013-12-07 19:39:48 -06:00
Joel Sherrill 2e50dcec70 timesys.h: Benchmark output now includes a dash for easier parsing 2013-12-07 19:10:35 -06:00
Joel Sherrill 9410d01196 tmtests: Make output more uniform 2013-12-07 19:10:35 -06:00
Sebastian Huber bf30999cc6 smp: Add and use _Assert_Owner_of_giant()
Add and use _ISR_Disable_without_giant() and
_ISR_Enable_without_giant() if RTEMS_SMP is defined.

On single processor systems the ISR disable/enable was the big hammer
which ensured system-wide mutual exclusion.  On SMP configurations this
no longer works since other processors do not care about disabled
interrupts on this processor and continue to execute freely.

On SMP in addition to ISR disable/enable an SMP lock must be used.
Currently we have only the Giant lock so we can check easily that ISR
disable/enable is used only in the right context.
2013-08-30 11:16:28 +02:00
Sebastian Huber d19cce29dc score: Per-CPU thread dispatch disable level
Use a per-CPU thread dispatch disable level.  So instead of one global
thread dispatch disable level we have now one instance per processor.
This is a major performance improvement for SMP.  On non-SMP
configurations this may simplifiy the interrupt entry/exit code.

The giant lock is still present, but it is now decoupled from the thread
dispatching in _Thread_Dispatch(), _Thread_Handler(),
_Thread_Restart_self() and the interrupt entry/exit.   Access to the
giant lock is now available via _Giant_Acquire() and _Giant_Release().
The giant lock is still implicitly acquired via
_Thread_Dispatch_decrement_disable_level().

The giant lock is only acquired for high-level operations in interrupt
handlers (e.g. release of a semaphore, sending of an event).

As a side-effect this change fixes the lost thread dispatch necessary
indication bug in _Thread_Dispatch().

A per-CPU thread dispatch disable level greatly simplifies the SMP
support for the interrupt entry/exit code since no spin locks have to be
acquired in this area.  It is only necessary to get the current
processor index and use this to calculate the address of the own per-CPU
control.  This reduces the interrupt latency considerably.

All elements for the interrupt entry/exit code are now part of the
Per_CPU_Control structure: thread dispatch disable level, ISR nest level
and thread dispatch necessary.  Nothing else is required (except CPU
port specific stuff like on SPARC).
2013-08-09 23:02:38 +02:00
Sebastian Huber 09c00eea70 tmtests/tm27: Fixes for RTEMS_DEBUG 2013-08-01 16:45:44 +02:00
Sebastian Huber e31a9c8b0d tmtests/tm26: Fixes for RTEMS_DEBUG 2013-07-31 15:09:04 +02:00
Sebastian Huber d7ce33f17e testsuites: Use _Thread_Get_executing() 2013-07-22 16:46:00 +02:00
Sebastian Huber 2bbea657ae rtems: Create semaphore implementation header
Move implementation specific parts of sem.h and sem.inl into new header
file semimpl.h.  The sem.h contains now only the application visible
API.
2013-07-18 09:58:56 +02:00
Sebastian Huber b4062c3f7f tmtests/tm20: Change allocation sizes
This avoids problems with debugging enabled.
2013-06-25 17:06:24 +02:00
Gedare Bloom fad2d38a9f RTEMS: Delete ChangeLog files.
This commit deletes all RTEMS ChangeLog files. These files have been abandoned
since converting to git version control. The historical data may be recovered
by checking out any commit before this one. Most of the contents of these
ChangeLog files can also be found in the git log.

Two external ChangeLog files, ChangeLog.slac and ChangeLog.zlib, remain.
2013-03-08 15:55:06 -05:00
Cynthia Rempel 3169affa16 tmoverhd.doc
Hi,
Adding test documentation...
2013-01-06 08:26:21 -05:00
Gedare Bloom 57e922c799 Revert "Add config.h.in."
This reverts commit cf42a6ea9d.
2012-08-06 13:04:24 -04:00
Ralf Corsépius bb2b8259ea Require automake-1.12.2. 2012-07-19 15:47:55 +02:00
Ralf Corsépius 0f772813aa Require autoconf-2.69. 2012-07-19 15:44:32 +02:00
Ralf Corsépius cf42a6ea9d Add config.h.in. 2012-05-24 07:17:05 +02:00
Joel Sherrill a03d4453dd tmoverhd - Eliminate warnings 2012-05-11 09:25:49 -05:00
Joel Sherrill 9b4422a251 Remove All CVS Id Strings Possible Using a Script
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.
2012-05-11 08:44:13 -05:00
Joel Sherrill 865bffd1c7 tm30 - Fix warning for Init needed prototype 2012-05-07 16:57:35 -05:00
Joel Sherrill 33a105fb69 Revert: Remove CVS Ids
See http://www.rtems.org/pipermail/rtems-devel/2012-May/001006.html
for details.
2012-05-07 11:08:48 -05:00
Ralf Corsépius 9f4e8fbc63 Remove CVS-Ids. 2012-05-04 09:36:24 +02:00
Joel Sherrill 61250b4ce9 Remove all .cvsignore files. 2012-02-01 10:59:44 -06:00
Ralf Corsepius ee22b256be 2011-12-13 Ralf Corsépius <ralf.corsepius@rtems.org>
* tm30/init.c: Make benchmark_barrier_create,
	benchmark_barrier_ident, benchmark_barrier_delete static.
2011-12-13 09:54:51 +00:00
Joel Sherrill 448f6577fb 2011-12-08 Joel Sherrill <joel.sherrill@oarcorp.com>
PR 1589/build
	* tm01/Makefile.am, tm02/Makefile.am, tm03/Makefile.am,
	tm04/Makefile.am, tm05/Makefile.am, tm06/Makefile.am,
	tm07/Makefile.am, tm08/Makefile.am, tm09/Makefile.am,
	tm10/Makefile.am, tm11/Makefile.am, tm12/Makefile.am,
	tm13/Makefile.am, tm14/Makefile.am, tm15/Makefile.am,
	tm16/Makefile.am, tm17/Makefile.am, tm18/Makefile.am,
	tm19/Makefile.am, tm20/Makefile.am, tm21/Makefile.am,
	tm22/Makefile.am, tm23/Makefile.am, tm24/Makefile.am,
	tm25/Makefile.am, tm26/Makefile.am, tm27/Makefile.am,
	tm28/Makefile.am, tm29/Makefile.am, tm30/Makefile.am,
	tmck/Makefile.am, tmoverhd/Makefile.am: Remove obsolete optional
	manager capability.
2011-12-08 21:38:46 +00:00
Ralf Corsepius c0b35f9385 2011-10-18 Ralf Corsépius <ralf.corsepius@rtems.org>
* tm26/fptest.h: Use PRIu32 to print uint32_t.
2011-10-18 08:42:57 +00:00