summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Create rbtree implementation headerSebastian Huber2013-07-236-14/+6
| | | | | | Move implementation specific parts of rbtree.h and rbtree.inl into new header file rbtreeimpl.h. The rbtree.h contains now only the application visible API.
* score: Create watchdog implementation headerSebastian Huber2013-07-2226-14/+25
| | | | | | Move implementation specific parts of watchdog.h and watchdog.inl into new header file watchdogimpl.h. The watchdog.h contains now only the application visible API.
* score: Create chain implementation headerSebastian Huber2013-07-2220-19/+20
| | | | | | Move implementation specific parts of chain.h and chain.inl into new header file chainimpl.h. The chain.h contains now only the application visible API.
* score: Create spinlock implementation headerSebastian Huber2013-07-223-3/+3
| | | | | | Move implementation specific parts of corespinlock.h and corespinlock.inl into new header file corespinlockimpl.h. The corespinlock.h contains now only the application visible API.
* score: Avoid direct usage of _Thread_ExecutingSebastian Huber2013-07-223-4/+4
| | | | | | Pass the executing thread as a function parameter. Obtain the executing thread inside a thread dispatch critical section to avoid problems on SMP.
* score: Create rwlock implementation headerSebastian Huber2013-07-225-5/+5
| | | | | | Move implementation specific parts of corerwlock.h and corerwlock.inl into new header file corerwlockimpl.h. The corerwlock.h contains now only the application visible API.
* score: Avoid direct usage of _Thread_ExecutingSebastian Huber2013-07-221-2/+1
| | | | | | Pass the executing thread as a function parameter. Obtain the executing thread inside a thread dispatch critical section to avoid problems on SMP.
* score: Create barrier implementation headerSebastian Huber2013-07-223-3/+3
| | | | | | Move implementation specific parts of corebarrier.h and corebarrier.inl into new header file corebarrierimpl.h. The corebarrier.h contains now only the application visible API.
* score: Avoid direct usage of _Thread_ExecutingSebastian Huber2013-07-222-4/+3
| | | | | | Pass the executing thread as a function parameter. Obtain the executing thread inside a thread dispatch critical section to avoid problems on SMP.
* score: Create message queue implementation headerSebastian Huber2013-07-229-9/+9
| | | | | | Move implementation specific parts of coremsg.h and coremsg.inl into new header file coremsgimpl.h. The coremsg.h contains now only the application visible API.
* score: Avoid direct usage of _Thread_ExecutingSebastian Huber2013-07-222-4/+9
| | | | | | Pass the executing thread as a function parameter. Obtain the executing thread inside a thread dispatch critical section to avoid problems on SMP.
* score: Add const qualifierSebastian Huber2013-07-221-3/+3
|
* score: Create semaphore implementation headerSebastian Huber2013-07-225-5/+5
| | | | | | Move implementation specific parts of coresem.h and coresem.inl into new header file coresemimpl.h. The coresem.h contains now only the application visible API.
* score: Error for non-preemptible tasks on SMPSebastian Huber2013-07-221-0/+7
| | | | | | | A common use case for disabled preemption was to ensure mutual exclusion on single-processor configurations. On SMP this does not work. To abandon non-preemptible tasks simplifies the scheduler.
* score: Use _Thread_Get_executing()Sebastian Huber2013-07-225-5/+5
|
* score: Include missing header filesSebastian Huber2013-07-222-0/+2
|
* score: Avoid direct usage of _Thread_ExecutingSebastian Huber2013-07-185-12/+26
| | | | | | Pass the executing thread as a function parameter. Obtain the executing thread inside a thread dispatch critical section to avoid problems on SMP.
* score: Create mutex implementation headerSebastian Huber2013-07-187-5/+7
| | | | | | Move implementation specific parts of coremutex.h and coremutex.inl into new header file coremuteximpl.h. The coremutex.h contains now only the application visible API.
* score: Update due to API changesSebastian Huber2013-07-181-1/+2
|
* smp: Rename _CPU_Processor_event_receive()Sebastian Huber2013-07-171-1/+1
| | | | Rename to _CPU_SMP_Processor_event_receive().
* smp: Rename _CPU_Processor_event_broadcast()Sebastian Huber2013-07-171-1/+1
| | | | Rename to _CPU_SMP_Processor_event_broadcast().
* smp: Add and use _CPU_SMP_Send_interrupt()Sebastian Huber2013-07-171-1/+1
| | | | Delete bsp_smp_interrupt_cpu().
* smp: Add and use _CPU_SMP_Get_current_processor()Sebastian Huber2013-07-172-18/+18
| | | | | | | | | | Add and use _SMP_Get_current_processor() and rtems_smp_get_current_processor(). Delete bsp_smp_interrupt_cpu(). Change type of current processor index from int to uint32_t to match _SMP_Processor_count type.
* smp: Delete RTEMS_BSP_SMP_CONTEXT_SWITCH_NECESSARYSebastian Huber2013-07-171-31/+29
| | | | | The thread dispatch is a side-effect of interrupt processing, thus there is no need to send an explicit message.
* score: Changes due to Newlib __DYNAMIC_REENT__Sebastian Huber2013-07-171-0/+2
| | | | | | | | | | | | | Delete _Thread_libc_reent and add __getreent() instead according to __DYNAMIC_REENT__ define. For SMP configurations __DYNAMIC_REENT__ must be defined. A Newlib including the following patch is required: 2013-07-09 Sebastian Huber <sebastian.huber@embedded-brains.de> * libc/include/sys/config.h (__DYNAMIC_REENT__): Define for RTEMS.
* threadhandler.c: Add commentsJoel Sherrill2013-07-091-0/+10
|
* heap: Add _Heap_Greedy_allocate_all_except_largestSebastian Huber2013-06-251-0/+13
| | | | | Add rtems_workspace_greedy_allocate_all_except_largest() and rtems_heap_greedy_allocate_all_except_largest().
* heap: Free all delayed blocks during resizeSebastian Huber2013-06-251-0/+4
|
* heap: Free all delayed blocks during extendSebastian Huber2013-06-251-0/+1
|
* heap: Workaround for workspace protectionSebastian Huber2013-06-251-1/+7
|
* score: _Heap_Protection_free_all_delayed_blocks()Sebastian Huber2013-06-211-0/+2
| | | | | Add and use _Heap_Protection_free_all_delayed_blocks() to prevent test suite failures if RTEMS_DEBUG is defined.
* scheduler: New simple SMP scheduler implementationSebastian Huber2013-06-148-337/+200
| | | | | | | | | | | | | | | | | The new Simple SMP Scheduler allocates a processor for the processor count highest priority ready threads. The thread priority and position in the ready chain are the only information to determine the scheduling decision. Threads with an allocated processor are in the scheduled chain. After initialization the scheduled chain has exactly processor count nodes. Each processor has exactly one allocated thread after initialization. All enqueue and extract operations may exchange threads with the scheduled chain. One thread will be added and another will be removed. The scheduled and ready chain is ordered according to the thread priority order. The chain insert operations are O(count of ready threads), thus this scheduler is unsuitable for most real-time applications. The thread preempt mode will be ignored.
* scheduler: Simplify simple schedulerSebastian Huber2013-06-142-43/+4
| | | | | | | Add and use _Scheduler_simple_Insert_priority_fifo_order(), _Scheduler_simple_Insert_priority_lifo_order(), _Scheduler_simple_Insert_priority_fifo() and _Scheduler_simple_Insert_priority_lifo().
* scheduler: Add and use _Scheduler_default_Tick()Sebastian Huber2013-06-142-114/+17
| | | | | Delete _Scheduler_priority_Tick(). Use _SMP_Get_processor_count() for default tick operation. Delete _Scheduler_simple_smp_Tick().
* scheduler: Specify thread of yield operationSebastian Huber2013-06-144-21/+16
| | | | | | The yielding thread of the yield operation is now specified by a parameter. The tick operation may be performed for each executing thread in a SMP configuration.
* scheduler: Add start idle thread operationSebastian Huber2013-06-143-3/+32
| | | | Add and use _Scheduler_Start_idle().
* score: Simplify _Thread_Create_idle()Sebastian Huber2013-06-141-23/+12
|
* score: Rename rtems_smp_get_number_of_processors()Sebastian Huber2013-06-142-5/+5
| | | | | | | | | Rename in rtems_smp_get_processor_count(). Always provide <rtems/score/smp.h> and <rtems/rtems/smp.h>. Add _SMP_Get_processor_count(). This function will be a compile time constant defined to be one on uni-processor configurations. This allows iterations over all processors without overhead on uni-processor configurations.
* score: Add and use _Thread_Dispatch_is_enabled()Sebastian Huber2013-06-143-10/+2
| | | | | Delete _Thread_Dispatch_in_critical_section() and _Thread_Is_dispatching_enabled().
* 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-121-6/+6
| | | | Add and use _Per_CPU_Lock_release().
* smp: Set state PER_CPU_STATE_UP on main processorSebastian Huber2013-06-071-4/+6
|
* score: Add and use _Objects_Put()Sebastian Huber2013-06-0710-41/+45
| | | | | | 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-071-0/+6
| | | | | 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-0717-2/+17
| | | | | | | 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-071-2/+2
|
* 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.
* smp: New SMP lock APISebastian Huber2013-05-313-333/+52
| | | | | | | | | | | | | | 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.