Commit Graph

26457 Commits

Author SHA1 Message Date
Daniel Cederman
774ee0029e sparc: Change asm to __asm__ to compile with -std=c99. 2014-05-14 10:33:28 +02:00
Ralf Kirchner
c8b7b32329 bsp/altera-caclone-v: Early printk support
Make sure printk can work early during BSP startup.
2014-05-12 15:57:50 +02:00
Sebastian Huber
390e73c4ee score: Move out of __RTEMS_HAVE_SYS_CPUSET_H__
Move _Scheduler_Get() and _Scheduler_Set() out of the #if
defined(__RTEMS_HAVE_SYS_CPUSET_H__) block.
2014-05-12 15:56:42 +02:00
Sebastian Huber
fa0a9a1893 bsps: Declare bsp_start_on_secondary_processors() 2014-05-12 09:32:20 +02:00
Sebastian Huber
6c5c2f39d0 bsps: Use bsp_start_on_secondary_processor()
Use a standard function for startup on secondary processors.
2014-05-12 09:23:51 +02:00
Sebastian Huber
64a04ac3c7 bsps: Use standard file name for BSP support 2014-05-12 09:01:40 +02:00
Sebastian Huber
ca2dd1ef09 bsp/leon3: Delete unused function 2014-05-12 08:37:05 +02:00
Sebastian Huber
6339cd2de2 rtems: Move extern "C" in <rtems.h>
Do not cover the includes with an extern "C".
2014-05-12 08:37:05 +02:00
Christian Mauderer
3a3869c449 bsps/sparc: Move flags to grlib header
This enables re-use for other BSPs
2014-05-12 08:37:00 +02:00
Sebastian Huber
89f079469c bsp/gen83xx: Disable interrupt nesting for br_uid
This is necessary for the USB support.
2014-05-08 13:02:44 +02:00
Sebastian Huber
11b05f11d4 score: Fix CPU context usage on SMP
We must not alter the is executing indicator in
_CPU_Context_Initialize() since this would cause an invalid state during
a self restart.

The is executing indicator must be valid at creation time since
otherwise _Thread_Kill_zombies() uses an undefined value for not started
threads.  This could result in a system life lock.
2014-05-08 13:02:40 +02:00
Sebastian Huber
35a3af7af8 doc: Use @dfn for glossary terms 2014-05-08 08:43:45 +02:00
Sebastian Huber
29e6637eb1 doc: Move SMP glossary to global glossary
Add some terms.
2014-05-08 08:43:45 +02:00
Sebastian Huber
d9196d1da7 configure: Paravirtualization for all targets
Virtual machines with paravirtualization exist not only on x86.
2014-05-08 08:40:35 +02:00
Sebastian Huber
23b9d09528 smptests/smp07: Fix test output 2014-05-07 18:32:15 +02:00
Sebastian Huber
8fa342218d smptests/smp05: Fix test name and output 2014-05-07 18:30:36 +02:00
Sebastian Huber
b97bc8bc71 tests: Add locked_printf_plugin()
Add locked_vprintf().  Return an int just like printf(), etc.
2014-05-07 18:27:19 +02:00
Sebastian Huber
0960fee406 rtems: Fix ASR SMP support
Initialize the ISR lock only once and destroy it properly.
2014-05-07 17:55:59 +02:00
Sebastian Huber
6c36946fea score: Fix SMP startup 2014-05-07 14:26:33 +02: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
Sebastian Huber
58444f7795 score: Delete _SMP_Test_message_default_handler
A default handler is not necessary.  The test message sender must ensure
that a handler is installed.
2014-05-07 12:08:11 +02:00
Sebastian Huber
0034629738 bsps/arm: Declare return types 2014-05-07 09:24:07 +02:00
Sebastian Huber
43ef706873 bsps: Fix BSP_INITIAL_EXTENSION 2014-05-07 09:24:07 +02:00
Sebastian Huber
07e7a7f8ce score: Documentation 2014-05-07 08:14:37 +02:00
Joel Sherrill
3324383ce0 testsuites: Remove BSP_SMALL_MEMORY 2014-05-06 18:31:00 -05:00
Joel Sherrill
053abcda22 multiple BSPs: Remove BSP_SMALL_MEMORY 2014-05-06 18:31:00 -05:00
Sebastian Huber
c2ea0ea54d bsp/gen83xx: Add BSP_USB_EHCI_MPC83XX_HAS_ULPI 2014-05-06 14:45:10 +02:00
Sebastian Huber
7d1436e4b3 posix: Fix POSIX keys initialization
Always initialize the freechain.  This prevents a NULL pointer access in
case no initial key value pairs are defined.
2014-05-06 13:46:20 +02:00
Sebastian Huber
4d906bdac2 score: Use atomic operations for SMP messages 2014-05-05 08:32:58 +02:00
Sebastian Huber
145becf075 score: Add SMP test message handler
This handler can be used to test the inter-processor interrupt
implementation.
2014-05-05 08:26:27 +02:00
Sebastian Huber
e239760f6a score: SMP_FATAL_SCHEDULER_WITHOUT_PROCESSORS
Avoid the SMP_FATAL_SCHEDULER_WITHOUT_PROCESSORS fatal error and make it
a run-time error in rtems_scheduler_ident() and _Scheduler_Get_by_id().
2014-05-05 08:26:27 +02:00
Sebastian Huber
d20b029af9 doc: Add SMP glossary 2014-05-05 08:26:27 +02:00
Sebastian Huber
bee71f8e97 score: Fix TLS size usage 2014-05-05 08:26:27 +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
Ralf Kirchner
b0e83e1207 libchip: Add asserts to dwmac driver 2014-04-30 14:53:17 +02:00
Ralf Kirchner
64bc102fbf libchip: Correct netstats message for dwmac driver 2014-04-30 14:53:17 +02:00
Ralf Kirchner
bc9a71ba6a bsp/altera-cyclone-v: Move mbufs and network clusters to uncached RAM 2014-04-30 14:53:14 +02:00
Ralf Kirchner
ff13e0bd97 bsp/altera-cyclone-v: Increase size of nocache region and nocache heap
Increase size of nocache heap in order to be able to move mbufs and clusters of the network driver to uncached RAM
2014-04-30 14:44:47 +02:00
Sebastian Huber
dabf42349e score: Typo 2014-04-30 08:32:36 +02:00
Ralf Kirchner
0832ca7dc3 doc: Extend documentation for unlimited objects
Mark POSIX Keys and POSIX Key Value Pairs as supported.
Add list of unsupported object classes.
Add hint to unified work areas.
Add example.
2014-04-30 08:29:55 +02:00
Sebastian Huber
03b7789ec7 score: Statically initialize _ISR_Vector_table 2014-04-29 09:51:22 +02:00
Sebastian Huber
a16af0b367 bsps/mips: Delete unused files
The MIPS port defines CPU_SIMPLE_VECTORED_INTERRUPTS to FALSE.
2014-04-29 09:51:22 +02:00
Sebastian Huber
0b344f3451 bsps/m32r: Fix bsp_specs 2014-04-29 09:50:40 +02:00
Sebastian Huber
ef2645409d bsps/bfin: Fix bsp_specs 2014-04-29 09:50:25 +02:00
Sebastian Huber
99be750459 sapi: Report profiling only if enabled for tests 2014-04-29 08:07:16 +02:00
Sebastian Huber
6741427a3b bsp/h8sim: Fix linker command file 2014-04-29 08:07:16 +02:00
Sebastian Huber
a336d51b09 score: Avoid copy and paste 2014-04-28 09:56:33 +02:00
Sebastian Huber
aea93fb408 sapi: Add profiling done message 2014-04-28 09:26:19 +02:00
Sebastian Huber
8365ad1347 sapi: Add arithmetic means to XML profiling report 2014-04-28 09:26:19 +02:00
Sebastian Huber
7c0bd74c87 sparc: Add _CPU_Get_current_per_CPU_control()
Use register g6 for the per-CPU control of the current processor.  The
register g6 is reserved for the operating system by the SPARC ABI.  On
Linux register g6 is used for a similar purpose with the same method
since 1996.

The register g6 must be initialized during system startup and then must
remain unchanged.

Since the per-CPU control is used in all critical sections of the
operating system, this is a performance optimization for the operating
system core procedures.  An additional benefit is that the low-level
context switch and interrupt processing code is now identical on non-SMP
and SMP configurations.
2014-04-28 09:26:19 +02:00