summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Use atomic API for SMP lockSebastian Huber2014-02-171-15/+36
| | | | | Use a ticket lock implementation based on atomic operations. Delete CPU port specific SMP lock implementations.
* score: Add Atomic_UintSebastian Huber2014-02-142-0/+171
|
* score: Fix warnings, C++ compatibility, fix typosSebastian Huber2014-02-141-18/+22
|
* score: Format _Thread_Get_maximum_internal_threadsSebastian Huber2014-02-101-3/+2
|
* score: _CPU_Context_switch_to_first_task_smp()Sebastian Huber2014-02-051-17/+0
| | | | | Delete _CPU_Context_switch_to_first_task_smp() and use _CPU_Context_restore() instead.
* Add thread-local storage (TLS) supportSebastian Huber2014-02-043-2/+194
| | | | | Tested and implemented on ARM, m68k, PowerPC and SPARC. Other architectures need more work.
* score: Add _Thread_Get_maximum_internal_threads()Sebastian Huber2014-02-041-0/+19
|
* score: Add _Heap_Size_with_overhead()Sebastian Huber2014-02-041-0/+23
|
* score: Add _Workspace_Allocate_aligned()Sebastian Huber2014-02-041-0/+11
|
* cpukit/rtems: Add rtems_clock_get_uptime_nanoseconds to the RTEMS API.Chris Johns2013-12-243-0/+52
| | | | | | Add Timestamp support in the score to return a timestamp in nanoseconds. Add a test. Update the RTEMS API documentation.
* score: Use local variables for consistencySebastian Huber2013-11-261-3/+3
|
* score/rbtree: Remove "unprotected" from APISebastian Huber2013-11-212-16/+16
|
* score/rbtree: Delete protected operationsSebastian Huber2013-11-211-134/+7
| | | | | The user of the red-black tree container must now ensure that at most one thread at once can access an instance.
* score: Objects_Information::extract visibilitySebastian Huber2013-11-181-2/+2
| | | | This filed is only used if RTEMS_MULTIPROCESSING is defined.
* score: New state STATES_WAITING_FOR_BSD_WAKEUPSebastian Huber2013-10-311-0/+3
| | | | This state is necessery to implement the SLEEP(9) FreeBSD kernel API.
* basedefs.h: Add RTEMS_COMPILER_UNUSED_ATTRIBUTE.Joel Sherrill2013-09-221-0/+11
|
* score: Use void * for some atomic pointer opsSebastian Huber2013-09-032-25/+26
|
* score: Use unsigned long for atomic integersSebastian Huber2013-09-032-66/+66
| | | | | | | Use unsigned long instead of uint_fast32_t since C11 provides only a ATOMIC_LONG_LOCK_FREE macro constant. This makes it also possible to use properly typed integer literals like 123UL. It is now clear which compatible type should be used for the atomic integer.
* smp: Add and use _Assert_Owner_of_giant()Sebastian Huber2013-08-305-6/+35
| | | | | | | | | | | | | | Add and use _ISR_Disable_without_giant() and _ISR_Enable_without_giant() if RTEMS_SMP is defined. On single processor systems the ISR disable/enable was the big hammer which ensured system-wide mutual exclusion. On SMP configurations this no longer works since other processors do not care about disabled interrupts on this processor and continue to execute freely. On SMP in addition to ISR disable/enable an SMP lock must be used. Currently we have only the Giant lock so we can check easily that ISR disable/enable is used only in the right context.
* score: Atomic flag changesSebastian Huber2013-08-282-56/+29
| | | | | | | Delete _Atomic_Init_flag(). Change ATOMIC_INITIALIZER_FLAG into a constant. Rename _Atomic_Clear_flag() to _Atomic_Flag_clear(). Rename _Atomic_Test_set_flag() to _Atomic_Flag_test_and_set(). This is now in line with the C11 schema.
* score: Use static inline directlySebastian Huber2013-08-282-43/+43
| | | | This file uses already C11 features. Include proper header file.
* add atomic init functionWeiY2013-08-282-0/+75
|
* score: Add and use CHAIN_INITIALIZER_ONE_NODE().Sebastian Huber2013-08-271-0/+16
| | | | | | Add and use CHAIN_NODE_INITIALIZER_ONE_NODE_CHAIN(), RTEMS_CHAIN_INITIALIZER_ONE_NODE() and RTEMS_CHAIN_NODE_INITIALIZER_ONE_NODE_CHAIN().
* score: Delete unused function parameterSebastian Huber2013-08-261-4/+2
|
* score: PR2140: _Thread_queue_Extract()Sebastian Huber2013-08-261-3/+9
| | | | | Return if the executing context performed the extract operation since interrupts may interfere.
* score: _Thread_queue_Enqueue_with_handler()Sebastian Huber2013-08-232-5/+8
| | | | | Add thread parameter to _Thread_queue_Enqueue_with_handler() to avoid access to global _Thread_Executing.
* smp: DocumentationSebastian Huber2013-08-211-2/+3
|
* smp: Delete RTEMS_BSP_SMP_SIGNAL_TO_SELFSebastian Huber2013-08-211-7/+0
|
* smp: Add Deterministic Priority SMP SchedulerSebastian Huber2013-08-202-0/+111
|
* smp: Generalize Simple SMP schedulerSebastian Huber2013-08-201-0/+165
|
* smp: Optimize Simple SMP schedulerSebastian Huber2013-08-203-1/+32
| | | | | | | | | | Add Thread_Control::is_in_the_air field if configured for SMP. This helps to simplify the extract operation and avoids superfluous inter-processor interrupts. Move the processor allocation step into the enqueue operation. Add and use _Scheduler_simple_smp_Get_highest_ready(). Add and use _Scheduler_SMP_Get_lowest_scheduled().
* smp: _Scheduler_simple_smp_Allocate_processor()Sebastian Huber2013-08-201-0/+42
| | | | | Rename _Scheduler_simple_smp_Allocate_processor() to _Scheduler_SMP_Allocate_processor().
* smp: Rename _Scheduler_simple_smp_Start_idle()Sebastian Huber2013-08-203-8/+8
| | | | | Rename _Scheduler_simple_smp_Start_idle() to _Scheduler_SMP_Start_idle().
* smp: Replace Scheduler_simple_smp_ControlSebastian Huber2013-08-203-5/+104
| | | | | Replace Scheduler_simple_smp_Control with Scheduler_SMP_Control. Rename _Scheduler_simple_smp_Instance() to _Scheduler_SMP_Instance().
* score: Add _Priority_bit_map_Is_empty()Sebastian Huber2013-08-201-0/+5
|
* score: _Priority_bit_map_Handler_initialization()Sebastian Huber2013-08-201-34/+1
| | | | | | | Delete _Priority_bit_map_Handler_initialization() and rely on BSS initialization. Move definition of _Priority_Major_bit_map and _Priority_Bit_map to separate file. Move definition of __log2table also to this file.
* score: _Scheduler_priority_Ready_queue_initialize()Sebastian Huber2013-08-201-10/+4
| | | | Move workspace allocation to _Scheduler_priority_Initialize().
* score: _Scheduler_priority_Ready_queue_first()Sebastian Huber2013-08-201-4/+1
| | | | Remove superfluous check since a ready thread must exist.
* score: Add _Scheduler_priority_Get_ready_queues()Sebastian Huber2013-08-201-4/+9
| | | | Add and use _Scheduler_priority_Get_ready_queues()
* score: Add _Scheduler_priority_Get_scheduler_infoSebastian Huber2013-08-201-34/+27
| | | | Add and use _Scheduler_priority_Get_scheduler_info().
* score: PR2136: Fix _Thread_Change_priority()Sebastian Huber2013-08-2010-20/+119
| | | | | | | | | | | | | | | Add call to _Scheduler_Schedule() in missing path after _Thread_Set_transient() in _Thread_Change_priority(). See also sptests/spintrcritical19. Add thread parameter to _Scheduler_Schedule(). This parameter is currently unused but may be used in future SMP schedulers. Do heir selection in _Scheduler_Schedule(). Use _Scheduler_Update_heir() for this in the particular scheduler implementation. Add and use _Scheduler_Generic_block().
* score: Per-CPU thread dispatch disable levelSebastian Huber2013-08-095-72/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use a per-CPU thread dispatch disable level. So instead of one global thread dispatch disable level we have now one instance per processor. This is a major performance improvement for SMP. On non-SMP configurations this may simplifiy the interrupt entry/exit code. The giant lock is still present, but it is now decoupled from the thread dispatching in _Thread_Dispatch(), _Thread_Handler(), _Thread_Restart_self() and the interrupt entry/exit. Access to the giant lock is now available via _Giant_Acquire() and _Giant_Release(). The giant lock is still implicitly acquired via _Thread_Dispatch_decrement_disable_level(). The giant lock is only acquired for high-level operations in interrupt handlers (e.g. release of a semaphore, sending of an event). As a side-effect this change fixes the lost thread dispatch necessary indication bug in _Thread_Dispatch(). A per-CPU thread dispatch disable level greatly simplifies the SMP support for the interrupt entry/exit code since no spin locks have to be acquired in this area. It is only necessary to get the current processor index and use this to calculate the address of the own per-CPU control. This reduces the interrupt latency considerably. All elements for the interrupt entry/exit code are now part of the Per_CPU_Control structure: thread dispatch disable level, ISR nest level and thread dispatch necessary. Nothing else is required (except CPU port specific stuff like on SPARC).
* score: Add and use _Per_CPU_Acquire_all().Sebastian Huber2013-08-091-0/+30
| | | | | | | Add and use _Per_CPU_Release_all(). The context switch user extensions are invoked in _Thread_Dispatch(). This change is necessary to avoid the giant lock in _Thread_Dispatch().
* smp: Use ISR lock in per-CPU controlSebastian Huber2013-08-091-11/+19
| | | | | | | Rename _Per_CPU_Lock_acquire() to _Per_CPU_ISR_disable_and_acquire(). Rename _Per_CPU_Lock_release() to _Per_CPU_Release_and_ISR_enable(). Add _Per_CPU_Acquire() and _Per_CPU_Release().
* score/cpu: Add CPU_Per_CPU_controlSebastian Huber2013-08-091-2/+7
| | | | Add CPU port specific per-CPU control.
* score: Rename _Scheduler_simple_Update()Sebastian Huber2013-08-083-15/+11
| | | | Rename _Scheduler_simple_Update() in _Scheduler_default_Update().
* score: Rename _Scheduler_simple_Allocate(), etc.Sebastian Huber2013-08-083-33/+24
| | | | | Rename _Scheduler_simple_Allocate() in _Scheduler_default_Allocate(). Rename _Scheduler_simple_Free() in _Scheduler_default_Free().
* score: Rename _Scheduler_priority_Release_job()Sebastian Huber2013-08-084-17/+14
| | | | | Rename _Scheduler_priority_Release_job() into _Scheduler_default_Release_job().
* correct comments about atomic apiWeiY2013-08-062-10/+10
|
* smp: Generalize _Thread_Start_multitasking()Sebastian Huber2013-08-051-1/+1
| | | | | | | | | | Add context parameter to _Thread_Start_multitasking() and use this function in rtems_smp_secondary_cpu_initialize(). This avoids duplication of code. Fix missing floating point context initialization in rtems_smp_secondary_cpu_initialize(). Now performed via _Thread_Start_multitasking().