Commit Graph

26288 Commits

Author SHA1 Message Date
Sebastian Huber
2e06be4d4f score: Documentation 2014-04-16 09:10:52 +02:00
Sebastian Huber
33d0666d02 score: Critical fix for SMP
The _Scheduler_SMP_Allocate_processor() and _Thread_Dispatch() exchange
information without locks.  Make sure we use the right load/store
ordering.
2014-04-16 09:07:33 +02:00
Sebastian Huber
b80f920860 bsp/qoriq: SMP support for IRQ support 2014-04-16 09:07:33 +02:00
Sebastian Huber
487b94e7ad bsps/powerpc: SMP support for SPR functions
These registers are local to a processor, there is no need to use SMP
locks here.
2014-04-16 09:07:33 +02:00
Sebastian Huber
598f39cd87 libchip: SMP support for NS16550 2014-04-16 09:07:33 +02:00
Sebastian Huber
509040f0af bsps/powerpc: SMP support for one TSEC driver 2014-04-15 10:43:05 +02:00
Sebastian Huber
c5831a3f9a score: Add clustered/partitioned scheduling
Clustered/partitioned scheduling helps to control the worst-case
latencies in the system.  The goal is to reduce the amount of shared
state in the system and thus prevention of lock contention.  Modern
multi-processor systems tend to have several layers of data and
instruction caches.  With clustered/partitioned scheduling it is
possible to honour the cache topology of a system and thus avoid
expensive cache synchronization traffic.

We have clustered scheduling in case the set of processors of a system
is partitioned into non-empty pairwise-disjoint subsets.  These subsets
are called clusters.  Clusters with a cardinality of one are partitions.
Each cluster is owned by exactly one scheduler instance.
2014-04-15 10:41:44 +02:00
Sebastian Huber
27270b0d6c rtems: Add task get/set scheduler 2014-04-15 09:29:35 +02:00
Sebastian Huber
1b67535d86 rtems: Add scheduler get processors 2014-04-15 09:29:35 +02:00
Sebastian Huber
b427a92adf rtems: Add scheduler identification 2014-04-15 09:29:31 +02:00
Sebastian Huber
133d54c55e score: Add scheduler name 2014-04-15 08:37:12 +02:00
Sebastian Huber
0712d172d0 score: Task get/set affinity
Make rtems_task_get_affinity() and rtems_task_set_affinity() available
on non-SMP configurations.  Allow larger CPU sets.
2014-04-15 08:37:12 +02:00
Sebastian Huber
69aa33490b score: Simplify thread control initialization
The thread control block contains fields that point to application
configuration dependent memory areas, like the scheduler information,
the API control blocks, the user extension context table, the RTEMS
notepads and the Newlib re-entrancy support.  Account for these areas in
the configuration and avoid extra workspace allocations for these areas.

This helps also to avoid heap fragementation and reduces the per thread
memory due to a reduced heap allocation overhead.
2014-04-15 08:37:12 +02: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
dc18190be4 score: Add and use RTEMS_ZERO_LENGTH_ARRAY 2014-04-15 08:37:11 +02:00
Joel Sherrill
589bbcb0ed sp74.doc: Correct minor typos 2014-04-14 16:05:52 -05:00
Sebastian Huber
2ca0a7be22 capture: Use ISR lock for SMP support 2014-04-14 08:37:04 +02:00
Sebastian Huber
53e008b6fd score: SMP initialization changes
Add and use _CPU_SMP_Start_processor().  Add and use
_CPU_SMP_Finalize_initialization().  This makes most
_CPU_SMP_Initialize() functions a bit simpler since we can calculate the
minimum value of the count of processors requested by the application
configuration and the count of physically or virtually available
processors in the high-level code.

The CPU port has now the ability to signal a processor start failure.
With the support for clustered/partitioned scheduling the presence of
particular processors can be configured to be optional or mandatory.
There will be a fatal error only in case mandatory processors are not
present.

The CPU port may use a timeout to monitor the start of a processor.
2014-04-14 08:37:04 +02:00
Sebastian Huber
198c143335 score: Add _Per_CPU_Get_snapshot() 2014-04-14 08:37:04 +02:00
Sebastian Huber
67a7a2cc98 sparc: Use __leon__ multilib define 2014-04-14 08:37:04 +02:00
Gedare Bloom
73b9af2d25 sparc64/niagara: add bsp_fatal_handler to terminate execution
Terminates the execution of niagara BSP when running in gem5.
2014-04-12 14:23:11 -04:00
Sebastian Huber
cb5eaddf95 rtems: Rename rtems_smp_get_current_processor()
Rename rtems_smp_get_current_processor() in
rtems_get_current_processor().  Make rtems_get_current_processor() a
function in uni-processor configurations to enable ABI compatibility
with SMP configurations.
2014-04-11 08:52:54 +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
263f4becea score: Statically initialize IO manager
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.
2014-04-10 12:37:40 +02:00
Sebastian Huber
3a4d28a8c3 documentation: Clarify 2014-04-10 12:34:00 +02:00
Sebastian Huber
d61f550246 documentation: Move CONFIGURE_MAXIMUM_DEVICES
Move CONFIGURE_MAXIMUM_DEVICES documentation to "File System
Configuration Parameters".  This define has nothing to do with the
device driver table.
2014-04-10 11:52:22 +02:00
Sebastian Huber
7a597e977c pppd: Delete example
This example is available via testsuites/samples/pppd.
2014-04-10 11:28:52 +02:00
Sebastian Huber
6cf45cbeef score: Fix workspace size estimate for TLS 2014-04-09 15:30:25 +02:00
Sebastian Huber
2d5424d2d0 sptests/sp37: Account for internal struct align 2014-04-09 15:30:24 +02:00
Sebastian Huber
c3cd7e7b7b smptests/smpschedule01: Rename in smpscheduler01 2014-04-09 15:27:21 +02:00
Sebastian Huber
eeb45b5cb9 sptests/sp68: Fix configuration 2014-04-07 16:48:02 +02:00
Sebastian Huber
d61c315575 score: Fix for empty heap 2014-04-07 16:48:02 +02:00
Sebastian Huber
fef4293834 psxtests/psxkey02: Test for proper error case 2014-04-07 16:48:02 +02:00
Sebastian Huber
b2700c3501 score: Use proper protection 2014-04-07 16:48:02 +02:00
Sebastian Huber
316ba974ba tmtests/tm21: Fix configuration 2014-04-07 16:48:01 +02:00
Sebastian Huber
781631ebe4 sptests/spwatchdog: Fix for short enums 2014-04-07 14:51:31 +02:00
Sebastian Huber
57c29858ce score: Lazy key value pair allocation 2014-04-07 14:51:31 +02:00
Sebastian Huber
e785fbaae5 score: Delete _Thread_Ticks_per_timeslice
Use the Configuration instead.
2014-04-07 14:51:31 +02:00
Sebastian Huber
4744584698 score: Delete _Thread_Maximum_extensions
Use the Configuration instead.
2014-04-07 14:51:31 +02:00
Sebastian Huber
94086a9cb7 score: Fix POSIX threads size estimate
The POSIX threads are separate objects.  Account for the object
administration overhead.
2014-04-07 14:51:31 +02:00
Sebastian Huber
fb9e98ea22 score: Fix workspace size estimate 2014-04-07 14:51:31 +02:00
Sebastian Huber
57740ce8a1 score: Clarify CPU port alignment requirements 2014-04-07 14:51:31 +02:00
Joel Sherrill
d507c03731 Disable per task variables when SMP is enabled
Per task variables are inherently unsafe in SMP systems. This
patch disables them from the build and adds warnings in the
appropriate documentation and configuration sections.
2014-04-04 14:27:27 -05:00
Sebastian Huber
cae120e23c rhealstone/rhmlatency: Fix configuration 2014-04-04 17:06:52 +02:00
Joel Sherrill
95cb09ed74 sparc/shared/.../linkcmds.base: Correct C++ support
Add KEEP() for .eh_frame*, .ctor*, and .dtor*.
2014-04-04 09:26:08 -05:00
Joel Sherrill
c6f0a4b7cb schedulerpriorityaffinitysmp.h: Fix compilation error introduced by recent changes 2014-04-04 09:24:44 -05:00
Joel Sherrill
eb2c8133aa privateenv.c: Remove unused variable warning 2014-04-04 09:24:17 -05: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
439c494fe2 score: Add and use Scheduler_simple_Control 2014-04-04 11:01:18 +02:00
Sebastian Huber
3891983283 score: Add and use Scheduler_EDF_Control 2014-04-04 11:01:18 +02:00