summaryrefslogtreecommitdiffstats
path: root/doc (unfollow)
Commit message (Collapse)AuthorFilesLines
2014-05-20rtems: Clarify task set/get scheduler parametersSebastian Huber1-5/+7
2014-05-15score: Simplify _Thread_Change_priority()Sebastian Huber1-5/+0
The function to change a thread priority was too complex. Simplify it with a new scheduler operation. This increases the average case performance due to the simplified logic. The interrupt disabled critical section is a bit prolonged since now the extract, update and enqueue steps are executed atomically. This should however not impact the worst-case interrupt latency since at least for the Deterministic Priority Scheduler this sequence can be carried out with a wee bit of instructions and no loops. Add _Scheduler_Change_priority() to replace the sequence of - _Thread_Set_transient(), - _Scheduler_Extract(), - _Scheduler_Enqueue(), and - _Scheduler_Enqueue_first(). Delete STATES_TRANSIENT, _States_Is_transient() and _Thread_Set_transient() since this state is now superfluous. With this change it is possible to get rid of the SCHEDULER_SMP_NODE_IN_THE_AIR state. This considerably simplifies the implementation of the new SMP locking protocols.
2014-05-08doc: Use @dfn for glossary termsSebastian Huber1-1/+1
2014-05-08doc: Move SMP glossary to global glossarySebastian Huber2-126/+93
Add some terms.
2014-05-07score: Implement forced thread migrationSebastian Huber1-0/+46
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-05score: SMP_FATAL_SCHEDULER_WITHOUT_PROCESSORSSebastian Huber2-3/+3
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-05doc: Add SMP glossarySebastian Huber1-0/+110
2014-04-30doc: Extend documentation for unlimited objectsRalf Kirchner1-4/+37
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-28sparc: Add _CPU_Get_current_per_CPU_control()Sebastian Huber1-0/+5
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-28sparc: Document register g7 usageSebastian Huber1-0/+3
2014-04-28sparc: Optimize context switchSebastian Huber1-0/+3
The registers g2 through g4 are reserved for applications. GCC uses them as volatile registers by default. So they are treated like volatile registers in RTEMS as well.
2014-04-22bsps: Fix TLS support in linker command filesSebastian Huber1-1/+3
The TLS section symbols had wrong values in case of an empty TLS data section and a nonempty TLS BSS section.
2014-04-22doc: Setting Affinity to a Single ProcessorSebastian Huber1-8/+20
2014-04-17score: Clarify TLS supportSebastian Huber1-1/+20
2014-04-17doc: TypoSebastian Huber1-2/+1
2014-04-17doc: rtems_task_set_scheduler()Sebastian Huber1-0/+77
2014-04-17doc: rtems_task_get_scheduler()Sebastian Huber1-0/+35
2014-04-17doc: rtems_scheduler_get_processor_set()Sebastian Huber1-0/+40
2014-04-17doc: rtems_scheduler_ident()Sebastian Huber1-0/+37
2014-04-17doc: rtems_task_set_affinity()Sebastian Huber2-32/+15
2014-04-17doc: rtems_task_get_affinity()Sebastian Huber1-24/+15
2014-04-17doc: rtems_get_current_processor()Sebastian Huber1-0/+39
2014-04-17doc: rtems_get_processor_count()Sebastian Huber1-11/+14
2014-04-15score: Add clustered/partitioned schedulingSebastian Huber1-13/+194
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-15score: Add scheduler nameSebastian Huber1-0/+37
2014-04-15score: Static scheduler configurationSebastian Huber1-7/+9
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-10score: Statically initialize IO managerSebastian Huber1-33/+35
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-10documentation: ClarifySebastian Huber1-1/+1
2014-04-10documentation: Move CONFIGURE_MAXIMUM_DEVICESSebastian Huber1-33/+33
Move CONFIGURE_MAXIMUM_DEVICES documentation to "File System Configuration Parameters". This define has nothing to do with the device driver table.
2014-04-04Disable per task variables when SMP is enabledJoel Sherrill1-2/+17
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-03-27privateenv: Use POSIX keys instead of task variables.Christian Mauderer1-1/+3
2014-03-21doc misc: Building again and updatesJoel Sherrill6-18/+14
Remove references to Cygnus Fix issues introduced in previous edits
2014-03-20relnotes/intro.texi: Change rtems.com to rtems.org and updateJoel Sherrill1-27/+11
2014-03-20relnotes/status.texi: Update to BugzillaJoel Sherrill1-3/+3
2014-03-20HELP.html Makefile.am: Remove unused HELP.htmlJoel Sherrill2-23/+1
2014-03-20cpright.texi: Update to reflect services and communityJoel Sherrill1-7/+9
2014-03-20texi2html_init.in: Reword rtems.com to rtems.orgJoel Sherrill1-1/+1
2014-03-20started/buildc.t: Change CVS to GitJoel Sherrill1-12/+8
2014-03-20started/buildrt.t: Change CVS to GitJoel Sherrill1-12/+6
2014-03-21Change all references of rtems.com to rtems.org.Chris Johns11-18/+18
2014-03-20cpukit/shell: Replace task variables with posix keys.Christian Mauderer1-0/+3
Use posix keys for current shell environment instead of task variables. With this patch the shell needs one posix-key and one posix-key-value-pair configured. Update documentation for the shell. Adapt samples/fileio: - Add necessary objects. - Add login function and custom device name for better testing of the shell.
2014-03-14Add documentation for profilingSebastian Huber2-0/+23
2014-03-11doc: Improve description of rtems_status_text for ToCJoel Sherrill3-7/+6
2014-03-11smp.t: Add Background and Operation SectionsJoel Sherrill1-7/+200
2014-03-11Classic API Users Guide: Add SMP and affinity services.Joel Sherrill6-9/+181
This patch adds the initial version of the SMP chapter to the Users Guide.
2014-03-11POSIX Users Guide: Add thread affinity services.Joel Sherrill1-2/+250
2014-03-11stackchk.t task.t: Change can not to cannot for consistencyJoel Sherrill2-2/+2
2014-03-11cpright.texi: Update to 2014.Joel Sherrill1-1/+1
2014-03-11gen_section: Update for use with new SMP chapters.Joel Sherrill1-2/+19
2014-02-14score: Add CPU counter supportSebastian Huber1-0/+21
Add a CPU counter interface to allow access to a free-running counter. It is useful to measure short time intervals. This can be used for example to enable profiling of critical low-level functions. Add two busy wait functions rtems_counter_delay_ticks() and rtems_counter_delay_nanoseconds() implemented via the CPU counter.