summaryrefslogtreecommitdiffstats
path: root/cpukit (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Add and use _Thread_Dispatch_if_necessary()Sebastian Huber2013-06-142-30/+27
| | | | | | | | | Delete _Thread_Evaluate_is_dispatch_needed(). Use _Thread_Dispatch_is_enabled() in rtems_task_mode() instead of the system state to determine if a thread dispatch is allowed. Signales are now delivered in rtems_task_mode() even if preemption is disabled. This is in line with rtems_signal_send().
* score: Add and use _Thread_Dispatch_is_enabled()Sebastian Huber2013-06-1411-49/+22
| | | | | Delete _Thread_Dispatch_in_critical_section() and _Thread_Is_dispatching_enabled().
* score: Add _Chain_Insert_ordered_unprotected()Sebastian Huber2013-06-141-0/+41
|
* rtems: Simplify rtems_task_mode()Sebastian Huber2013-06-141-6/+4
|
* smp: Fix _Thread_Dispatch_decrement_disable_levelSebastian Huber2013-06-121-1/+7
| | | | | | We must obtain the processor ID after interrupts are disabled since a non-optimizing compiler may store the value on the stack and read it back.
* smp: Protect decrement operationSebastian Huber2013-06-121-4/+4
|
* smp: Add and use _Per_CPU_Lock_acquire()Sebastian Huber2013-06-122-6/+12
| | | | Add and use _Per_CPU_Lock_release().
* score: Avoid cyclic include dependencySebastian Huber2013-06-121-1/+2
|
* score: Add missing includeSebastian Huber2013-06-121-0/+1
|
* termios: SMP supportSebastian Huber2013-06-122-20/+30
|
* termios: Notify driver about inactive transmitSebastian Huber2013-06-121-0/+3
| | | | | | Returning this state in the return value leads to race conditions on SMP. The inactive state notification must be inside the critical section.
* termios: Expand critical sectionSebastian Huber2013-06-121-8/+4
| | | | | | Use interrupt disable/enable to protect the complete refill state change. This avoids race conditions for the task driven configuration and a later SMP support.
* termios: Move wake up writer task actionSebastian Huber2013-06-121-2/+8
|
* termios: Avoid second return pathSebastian Huber2013-06-121-10/+9
|
* rtems: Add interrupt locksSebastian Huber2013-06-121-0/+135
| | | | | Interrupt locks are low-level lock to protect critical sections accessed by threads and interrupt service routines.
* score: Always provide <rtems/score/smplock.h>Sebastian Huber2013-06-124-8/+12
|
* configure: DocumentationSebastian Huber2013-06-122-2/+6
|
* smp: Set state PER_CPU_STATE_UP on main processorSebastian Huber2013-06-071-4/+6
|
* score: Add and use _Objects_Put()Sebastian Huber2013-06-07114-209/+253
| | | | | | Add and use _Objects_Put_without_thread_dispatch(). These two functions pair with the _Objects_Get() function. This helps to introduce object specific SMP locks to avoid lock contention.
* score: Add _Objects_Put_for_get_isr_disable()Sebastian Huber2013-06-074-0/+23
| | | | | Provide SMP support. The ISR disable/enable is not enough to ensure mutual exclusion for SMP configurations.
* score: Align _Objects_Get_isr_disable()Sebastian Huber2013-06-071-2/+1
| | | | | Align ISR disable/enable sequence in _Objects_Get_isr_disable() with thread dispatch disable/enable sequence in _Objects_Get().
* score: Move thread dispatch content to new fileSebastian Huber2013-06-0725-247/+291
| | | | | | | 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.
* score: Simplify _CORE_mutex_Seize_interrupt_try*Sebastian Huber2013-06-073-17/+17
|
* score: Simplify _CORE_semaphore_Seize_isr_disableSebastian Huber2013-06-072-6/+6
|
* score: Simplify _Thread_Create_idle_helper()Sebastian Huber2013-06-071-9/+0
| | | | | The _Thread_Initialize() function has nothing to do with thread dispatching it simply initializes the thread control.
* rtems: Move unnest dispatch after ISR enableSebastian Huber2013-06-071-1/+1
| | | | This prevents a lock order reversal.
* rtems: Fix system event send for remote threadsSebastian Huber2013-06-071-0/+1
|
* dosfs: DocumentationSebastian Huber2013-06-071-0/+8
|
* termios: Fix warningSebastian Huber2013-06-071-1/+1
|
* nfsclient: Add rpcSetXIDs()Sebastian Huber2013-06-052-0/+30
|
* nfsclient: Fix warningsSebastian Huber2013-06-052-8/+3
|
* nfsclient: Delete superfluous mask operationSebastian Huber2013-06-051-1/+1
|
* nfsclient: Delete superfluous assignmentSebastian Huber2013-06-051-1/+0
|
* libblock: Use UTF-8 converter in media managerSebastian Huber2013-06-041-3/+10
|
* dosfs: DocumentationRalf Kirchner2013-06-031-6/+97
|
* dosfs: UTF-8 Support: Multibyte conversionsRalf Kirchner2013-06-034-10/+340
| | | | | | | | | | | | Add optional conversion methods for multibyte strings. With these conversions which make use of iconv and utf8proc it becomes possible to use strings from any language (Czech, Chinese, Arabian, Hebrew, Corean, ...) for file names and directory names. NOTE: Iconv support must be activated during the build of the tool chain for these conversion methods (options --enable-newlib-iconv --enable-newlib-iconv-encodings=[ENCODINGS_YOU_WANT]). Alternatively you can provide your own conversion methods.
* libmisc: Add utf8proc-v1.1.5Ralf Kirchner2013-06-039-0/+14552
| | | | | | | utf8proc is a small library for processing UTF-8 encoded Unicode strings. Some features are Unicode normalization, stripping of default ignorable characters, case folding and detection of grapheme cluster boundaries. For the time beeing utf8proc is intended to be used for normalizing and folding UTF-8 strings for comparison purposes when adding UTF-8 support to the FAT file system.
* dosfs: UTF-8 Support: UI, backwards compatibilityRalf Kirchner2013-06-0311-560/+1781
| | | | | | | | | User interface and backwards compatibility for UTF-8 support in the FAT file system. Purpose of UTF-8 support is to permit file names and directory names with characters from all kinds of languages (Czech, Chinese, Arabian, Hebrew, Korean, ...). This commit does not yet support multibyte characters. It only contains the user interface and the backwards compatibility.
* smp: Add ARM supportSebastian Huber2013-05-317-3/+181
|
* smp: Add PowerPC supportSebastian Huber2013-05-315-2/+117
|
* smp: New SMP lock APISebastian Huber2013-05-3118-463/+470
| | | | | | | | | | | | | | 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.
* score: Mark as no returnSebastian Huber2013-05-311-5/+7
| | | | Mark rtems_smp_secondary_cpu_initialize() as no return.
* score: Remove idle field of Per_CPU_ControlSebastian Huber2013-05-315-14/+27
| | | | | | This field is unused except for special case simulator clock drivers. In these places use an alternative. Add and use _Thread_Set_global_exit_status() and _Thread_Get_global_exit_status().
* smp: Move secondary CPU initialization requestSebastian Huber2013-05-292-6/+4
| | | | | Do not assume that the scheduler selects the main processor for the initialization thread.
* smp: Use _CPU_Fatal_halt()Sebastian Huber2013-05-291-2/+2
|
* smp: Simplify SMP initialization sequenceSebastian Huber2013-05-298-189/+252
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Delete bsp_smp_wait_for(). Other parts of the system work without timeout, e.g. the spinlocks. Using a timeout here does not make the system more robust. Delete bsp_smp_cpu_state and replace it with Per_CPU_State. The Per_CPU_State follows the Score naming conventions. Add _Per_CPU_Change_state() and _Per_CPU_Wait_for_state() functions to change and observe states. Use Per_CPU_State in Per_CPU_Control instead of the anonymous integer. Add _CPU_Processor_event_broadcast() and _CPU_Processor_event_receive() functions provided by the CPU port. Use these functions in _Per_CPU_Change_state() and _Per_CPU_Wait_for_state(). Add prototype for _SMP_Send_message(). Delete RTEMS_BSP_SMP_FIRST_TASK message. The first context switch is now performed in rtems_smp_secondary_cpu_initialize(). Issuing the first context switch in the context of the inter-processor interrupt is not possible on systems with a modern interrupt controller. Such an interrupt controler usually requires a handshake protocol with interrupt acknowledge and end of interrupt signals. A direct context switch in an interrupt handler circumvents the interrupt processing epilogue and may leave the system in an inconsistent state. Release lock in rtems_smp_process_interrupt() even if no message was delivered. This prevents deadlock of the system. Simplify and format _SMP_Send_message(), _SMP_Request_other_cores_to_perform_first_context_switch(), _SMP_Request_other_cores_to_dispatch() and _SMP_Request_other_cores_to_shutdown().
* smp: Delete bsp_smp_secondary_cpu_initialize()Sebastian Huber2013-05-292-21/+19
| | | | | | | Do not call bsp_smp_secondary_cpu_initialize() in rtems_smp_secondary_cpu_initialize(). This allows more flexibilty in the BSP low-level code. Specify context requirements for a call to rtems_smp_secondary_cpu_initialize().
* smp: Delete rtems_smp_send_message()Sebastian Huber2013-05-291-15/+0
|
* smp: Delete rtems_smp_initialize_per_cpu()Sebastian Huber2013-05-291-10/+0
|
* smp: Simplify main CPU initializationSebastian Huber2013-05-293-21/+24
| | | | | | Call _SMP_Handler_initialize() later and move bsp_smp_initialize() into _SMP_Handler_initialize(). Change bsp_smp_initialize() prototype to match integer types of calling context.