summaryrefslogtreecommitdiffstats
path: root/cpukit (follow)
Commit message (Collapse)AuthorAgeFilesLines
* posix: Add pthread_attr_t methods to get/set affinity.Jennifer Averett2014-03-073-0/+108
| | | | | | | This patch adds the following methods: + pthread_attr_get_affinity_np + pthread_attr_set_affinity_np
* posix: Add support method to compare two pthread attribute structures.Jennifer Averett2014-03-072-0/+95
|
* posix: Add POSIX thread affinity attribute support.Jennifer Averett2014-03-074-16/+129
| | | | | With the addition of pthread affinity information in pthread_attr_t, the existing code for pthread_attr_t had to be adjusted.
* rtems: Add Classic API get and set affinity methods.Jennifer Averett2014-03-074-0/+177
| | | | | | | Add the following methods: + rtems_task_get_affinity + rtems_task_set_affinity
* sapi: Moved smp initialization and added cpuset initilization.Jennifer Averett2014-03-071-2/+5
| | | | | | | SMP must be initialized in order to know the current set of cores available. Without this, you cannot initialize the default cpu_set_t associated with Classic API tasks and POSIX threads.
* score: Add cpuset support to Score.Jennifer Averett2014-03-078-1/+361
| | | | | | This new Score Handler provides a structure to manage a cpu_set_t plus helper routines to validate the contents against the current system configuration.
* score: Fix per-CPU state documentationSebastian Huber2014-03-061-3/+3
|
* score: Delete _Thread_Dispatch_set_disable_level()Sebastian Huber2014-03-062-60/+0
| | | | | This function was only used in some tests and can be replaced with other functions.
* rtems: Add RTEMS_INTERRUPT_REPLACESebastian Huber2014-03-061-6/+29
| | | | | | | | | | | | | | | | | | | | | A new option RTEMS_INTERRUPT_REPLACE is introduced that permits updating the first interrupt handler for the registered interrupt vector and matching argument. If no match is found, the install function fails with RTEMS_UNSATISFIED. The Interrupt Manager Extension offers interrupt handlers with an argument pointer. It is impossible to update two words (handler and argument) atomically on most architectures. In order to avoid an SMP lock in bsp_interrupt_handler_dispatch() which would degrade the interrupt response time an alternative must be provided that makes it possible to tear-down interrupt sources without an SMP lock. Add RTEMS_INTERRUPT_REPLACE option to Interrupt Manager Extension. This enables a clean tear-down of interrupt sources on SMP configurations. Instead of an interrupt handler removal a replacement handler can be installed to silence an interrupt source. This can be used in contexts that allow no sophisticated synchronization (e.g. in atexit() or fatal handlers).
* score: Add _Atomic_Fence()Sebastian Huber2014-03-062-0/+14
|
* libnetworking: TypoSebastian Huber2014-03-061-1/+1
|
* score: Add and use _Giant_Drop()Sebastian Huber2014-03-063-0/+33
| | | | New test smptests/smpfatal03.
* score: SMP initialization and shutdown changesSebastian Huber2014-03-068-119/+230
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename _SMP_Request_other_cores_to_perform_first_context_switch() into _SMP_Request_start_multitasking() since this requests now a multitasking start on all configured and available processors. The name corresponds _Thread_Start_multitasking() and _SMP_Start_multitasking_on_secondary_processor() actions issued in response to this request. Move in source file to right place. Rename PER_CPU_STATE_READY_TO_BEGIN_MULTITASKING into PER_CPU_STATE_READY_TO_START_MULTITASKING. Rename PER_CPU_STATE_BEGIN_MULTITASKING into PER_CPU_STATE_REQUEST_START_MULTITASKING. Rename _SMP_Request_other_cores_to_shutdown() into _SMP_Request_shutdown(). Add a per-CPU state lock to protect all changes. This was necessary to offer a controlled shutdown of the system (atomic read/writes alone are not sufficient for this kind of synchronization). Add documentation for Per_CPU_State. Delete debug output. New tests smptests/smpfatal01 and smptests/smpfatal02.
* taskmode: Formatting correctionJoel Sherrill2014-03-051-5/+3
|
* rtems: Add cache size functionsSebastian Huber2014-02-281-0/+20
| | | | | Add rtems_cache_get_data_cache_size() and rtems_cache_get_instruction_cache_size().
* rtems: Use size_t for cache line sizeSebastian Huber2014-02-281-2/+2
| | | | A cache line cannot have a negative size.
* rtems: Cache manager documentationSebastian Huber2014-02-281-66/+79
| | | | Move useful functions to the top of the file.
* sparc: Fix CPU counter supportSebastian Huber2014-02-243-2/+84
| | | | | | | | The SPARC processors supported by RTEMS have no built-in CPU counter support. We have to use some hardware counter module for this purpose. The BSP must provide a 32-bit register which contains the current CPU counter value and a function for the difference calculation. It can use for example the GPTIMER instance used for the clock driver.
* score: Fix thread TLS area initializationSebastian Huber2014-02-241-8/+13
| | | | | Do not use _TLS_Size here since this will lead GCC to assume that this symbol is not 0 and the later > 0 test will be optimized away.
* score: _CPU_SMP_Get_current_processor()Sebastian Huber2014-02-217-13/+9
| | | | | | | Remove RTEMS_COMPILER_PURE_ATTRIBUTE from _SMP_Get_current_processor() and all _CPU_SMP_Get_current_processor(). Make inline ASM statements volatile again. Test smptests/smpmigration01 showed that GCC optimizes too much otherwise.
* score: _Thread_Start_multitasking()Sebastian Huber2014-02-211-1/+5
| | | | | Fix serious race-condition. Read the heir after the per-CPU lock acquire.
* score: Rename _Internal_error_Occurred()Sebastian Huber2014-02-2127-36/+36
| | | | Rename _Internal_error_Occurred() into _Terminate().
* posix: Set pthread attribute values in detach and setschedparm methods.Jennifer Averett2014-02-192-0/+4
|
* score: _SMP_Inter_processor_interrupt_handler()Sebastian Huber2014-02-192-42/+23
| | | | | Inline _SMP_Inter_processor_interrupt_handler() to avoid function call overhead. Remove debug output.
* score: Wait for per-CPU state changes laterSebastian Huber2014-02-191-9/+5
| | | | | | Wait for per-CPU changes into PER_CPU_STATE_READY_TO_BEGIN_MULTITASKING later. There is no need to delay the initialization of the main processor at this point.
* score: Initialize per-CPU locksSebastian Huber2014-02-191-0/+6
|
* score: Move _SMP_Handler_initialize()Sebastian Huber2014-02-192-31/+22
|
* score: Rename rtems_smp_process_interrupt()Sebastian Huber2014-02-195-80/+6
| | | | | | Rename rtems_smp_process_interrupt() into _SMP_Inter_processor_interrupt_handler(). Delete unused header file <rtems/bspsmp.h>.
* score: Rename rtems_smp_secondary_cpu_initialize()Sebastian Huber2014-02-193-26/+28
| | | | | | Rename rtems_smp_secondary_cpu_initialize() into _SMP_Start_multitasking_on_secondary_processor(). Move declaration to <rtems/score/smpimpl.h>.
* score: Add and use <rtems/score/smpimpl.h>Sebastian Huber2014-02-198-83/+134
| | | | | Collect SMP implementation specific parts in the <rtems/score/smpimpl.h> header file.
* score: Delete bsp_smp_broadcast_interrupt()Sebastian Huber2014-02-192-22/+4
| | | | | | Since the per-CPU SMP lock must be acquired and released to send the message a single interrupt broadcast operations offers no benefits. If synchronization is required, then a SMP barrier must be used anyway.
* score: Rename bsp_smp_initialize()Sebastian Huber2014-02-198-21/+28
| | | | | Rename bsp_smp_initialize() into _CPU_SMP_Initialize() since every CPU port must supply this function.
* score: Remove ASM guardSebastian Huber2014-02-191-4/+0
|
* score: Rename RTEMS_BSP_SMP_SHUTDOWNSebastian Huber2014-02-192-10/+10
| | | | | Rename RTEMS_BSP_SMP_SHUTDOWN in SMP_MESSAGE_SHUTDOWN since SMP messages have nothing to do with the BSP. Use UINT32_C() instead of casts.
* score: Add RTEMS_FATAL_SOURCE_SMPSebastian Huber2014-02-194-6/+18
| | | | | | Use rtems_fatal() instead of _CPU_Fatal_halt() to shutdown processors in SMP configurations since this allows intervention of BSP or application specific fatal extensions.
* score: Add RTEMS_FATAL_SOURCE_BSPSebastian Huber2014-02-192-14/+6
| | | | | | Merge RTEMS_FATAL_SOURCE_BSP_GENERIC and RTEMS_FATAL_SOURCE_BSP_SPECIFIC into new fatal source RTEMS_FATAL_SOURCE_BSP. This makes it easier to figure out the code position given a fatal source and code.
* score: Delete INTERNAL_ERROR_SHUTDOWN_WHEN_NOT_UPSebastian Huber2014-02-193-18/+3
| | | | | This error case is no longer required since rtems_shutdown_executive() can be called anytime, anywhere
* score: Move _SMP_Request_other_cores_to_shutdown()Sebastian Huber2014-02-195-20/+29
| | | | | | Move _SMP_Request_other_cores_to_shutdown() invocation from rtems_shutdown_executive() to _Internal_error_Occurred() to allow a proper shutdown on SMP configurations even in the error case.
* score: Disable ISR in _Internal_error_Occurred()Sebastian Huber2014-02-193-3/+11
| | | | | | | Disable interrupts as the first step in _Internal_error_Occurred() to get a defined execution context for the fatal extensions. Make _ISR_Disable_without_giant() available for non-SMP configurations.
* score: Delete _Thread_BSP_contextSebastian Huber2014-02-197-157/+40
| | | | | | | | | | | | Do not return to BSP context in the exit() shutdown path. This makes it possible to re-use the initialization stack. It can be used for the interrupt stack for example. On targets with a small RAM this is a considerable benefit. This change eliminates also some special cases and simplifies the code. Delete _Thread_Set_global_exit_status(), _Thread_Get_global_exit_status() and _Thread_Stop_multitasking().
* score: Add SYSTEM_STATE_TERMINATEDSebastian Huber2014-02-194-20/+7
| | | | | | Merge systems states SYSTEM_STATE_SHUTDOWN and SYSTEM_STATE_FAILED into new system state SYSTEM_STATE_TERMINATED. This reflects that all system termination paths end up in _Internal_error_Occurred().
* powerpc: Change interrupt disable implemetationSebastian Huber2014-02-193-19/+36
| | | | | | | | | | | | Instead of SPRG0 (= special purpose register 272) use the new global symbol _PPC_INTERRUPT_DISABLE_MASK to store the interrupt disable mask. The benefit is that it is now possible to disable interrupts without further run-time initialization in boot_card(). At least on Freescale e500 cores this leads also to a faster execution since the mfmsr and mfspr instruction require four cycles to complete. The instructions to load the mask value can execute while the mfmsr is in progress.
* score: Move SMP interrupt stack initializationSebastian Huber2014-02-192-39/+25
| | | | | | | Move SMP interrupt stack initialization for secondary processors from _SMP_Handler_initialize() to _ISR_Handler_initialization() to avoid code duplication. Apply _CPU_Interrupt_stack_setup() to all interrupt stacks.
* cpukit: Correct bug in check of affinity support in newlib.Jennifer Averett2014-02-171-6/+22
|
* score: Add SMP barrierSebastian Huber2014-02-174-0/+181
|
* score: Use atomic API for SMP lockSebastian Huber2014-02-1716-559/+36
| | | | | Use a ticket lock implementation based on atomic operations. Delete CPU port specific SMP lock implementations.
* Require presence of <stdatomic.h> for SMP supportSebastian Huber2014-02-176-41/+15
|
* sparc: Add atomic support for SPARC V8Sebastian Huber2014-02-172-0/+203
| | | | Use SWAP instruction with one lock for the system in the SMP case.
* sparc: Add LEON3_ASR17_PROCESSOR_INDEX_SHIFTSebastian Huber2014-02-141-0/+14
| | | | Add _LEON3_Get_current_processor().
* score: Add Atomic_UintSebastian Huber2014-02-142-0/+171
|