summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include (follow)
Commit message (Collapse)AuthorAgeFilesLines
* api: Remove deprecated NotepadsAun-Ali Zaidi2015-12-241-3/+3
| | | | | | | | | | | | | | | | | | | | | | | Notepads where a feature of RTEMS' tasks that simply functioned in the same way as POSIX keys or threaded local storage (TLS). They were introduced well before per task variables, which are also deprecated, and were barely used in favor of their POSIX alternatives. In addition to their scarce usage, Notepads took up unnecessary memory. For each task: - 16 32-bit integers were allocated. - A total of 64 bytes per task per thread. This is especially critical in low memory and safety-critical applications. They are also defined as uint32_t, and therefore are not guaranteed to hold a pointer. Lastly, they are not portable solutions for SMP and uniprocessor systems, like POSIX keys and TLS. updates #2493.
* score: Untangle thread actionsSebastian Huber2015-12-111-5/+6
| | | | | | | Remove the thread action handler parameter from _Thread_Action_initialize() and instead set it later in _Thread_Add_post_switch_action(). This avoids a dependency on the thread action handler via the thread initialization.
* Use linker set for system initializationSebastian Huber2015-12-111-0/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make rtems_initialize_data_structures(), rtems_initialize_before_drivers() and rtems_initialize_device_drivers() static. Rename rtems_initialize_start_multitasking() to rtems_initialize_executive() and call the registered system initialization handlers in this function. Add system initialization API available via #include <rtems/sysinit.h>. Update the documentation accordingly. This is no functional change, only the method to call the existing initialization routines changes. Instead of direct function calls a table of function pointers contained in the new RTEMS system initialization linker set is used. This table looks like this (the actual addresses depend on the target). nm *.exe | grep _Linker | sort 0201a2d0 D _Linker_set__Sysinit_begin 0201a2d0 D _Linker_set__Sysinit_bsp_work_area_initialize 0201a2d4 D _Linker_set__Sysinit_bsp_start 0201a2d8 D _Linker_set__Sysinit_rtems_initialize_data_structures 0201a2dc D _Linker_set__Sysinit_bsp_libc_init 0201a2e0 D _Linker_set__Sysinit_rtems_initialize_before_drivers 0201a2e4 D _Linker_set__Sysinit_bsp_predriver_hook 0201a2e8 D _Linker_set__Sysinit_rtems_initialize_device_drivers 0201a2ec D _Linker_set__Sysinit_bsp_postdriver_hook 0201a2f0 D _Linker_set__Sysinit_end Add test sptests/spsysinit01. Update #2408.
* Add RTEMS linker setsSebastian Huber2015-12-081-0/+96
| | | | Update #2408.
* score: Statically initialize system stateSebastian Huber2015-12-081-14/+0
| | | | Update #2408.
* score: Delete unused API extensionsSebastian Huber2015-12-081-27/+1
| | | | Update #2408.
* score: Statically initialize API extensionsSebastian Huber2015-12-081-12/+0
| | | | Update #2408.
* Remove <rtems/debug.h>Sebastian Huber2015-12-071-91/+0
| | | | Close #2477.
* Require __getreent()Sebastian Huber2015-11-251-32/+0
| | | | | This function is used by Newlib since 2013-07-09 (Git commit 9b51cd8c6b9cdd067d9648a7ab952884019c56a5).
* basdefs.h: Add and use RTEMS_PACKEDSebastian Huber2015-10-261-2/+5
|
* basdefs.h: Add and use RTEMS_UNUSEDSebastian Huber2015-10-263-4/+7
|
* basdefs.h: Add and use RTEMS_DEPRECATEDSebastian Huber2015-10-262-4/+6
|
* basdefs.h: Add RTEMS_PURESebastian Huber2015-10-261-3/+5
|
* basedefs.h: Add and use RTEMS_NO_RETURNSebastian Huber2015-10-265-8/+10
|
* basedefs.h: Add compiler attributesSebastian Huber2015-10-261-1/+40
|
* SMP: Optimize ticket lock implementationSebastian Huber2015-10-021-1/+1
| | | | | | | | This reverts the relevant part of commit da06fe948c0878057e5f563ebd3dfe40c0f1b0d2. The acquire/release order is superfluous for the next ticket increment. The mutual exclusion is guaranteed by the acquire load from and release store to the next serving atomic variable.
* SMP: Fix and optimize thread dispatchingSebastian Huber2015-09-283-41/+29
| | | | | | | | According to the C11 and C++11 memory models only a read-modify-write operation guarantees that we read the last value written in modification order. Avoid the sequential consistent thread fence and instead use the inter-processor interrupt to set the thread dispatch necessary indicator.
* SMP: Simplify thread lock operationsSebastian Huber2015-09-281-27/+25
|
* score: Use uintptr_t for atomic pointer operationsSebastian Huber2015-09-262-71/+69
| | | | Do not obfuscate the standard API.
* score: Fix atomic compare exchangeSebastian Huber2015-09-251-3/+15
|
* score: Implement priority boostingSebastian Huber2015-09-042-0/+56
|
* score: Implement SMP-specific priority queueSebastian Huber2015-09-042-1/+59
|
* score: DocumentationSebastian Huber2015-09-041-2/+29
|
* rbtree: Add _RBTree_Replace_node()Sebastian Huber2015-09-031-0/+13
|
* rbtree: Replace implementationSebastian Huber2015-09-032-252/+143
| | | | | Use the BSD <sys/tree.h> implementation since it is faster, more flexible and uses less storage. See https://github.com/sebhub/rb-bench.
* rbtree: Delete rtems_rbtree_find_control()Sebastian Huber2015-09-011-25/+0
| | | | | This function is hard to support in alternative implementations. It has no internal use case.
* rbtree: Delete unused RBTREE_NODE_*() macrosSebastian Huber2015-08-311-12/+0
|
* rbtree: Delete _RBTree_Initialize()Sebastian Huber2015-08-311-24/+0
| | | | This function has no internal use case.
* rbtree: Delete _RBTree_Get()Sebastian Huber2015-08-311-31/+0
| | | | This function has no internal use case.
* rbheap: Drop direction from _RBTree_Iterate()Sebastian Huber2015-08-311-4/+0
|
* rbtree: Delete _RBTree_Is_first()Sebastian Huber2015-08-311-20/+0
|
* rbtree: Add _RBTree_Minimum(), _RBTree_Maximum()Sebastian Huber2015-08-312-1/+31
|
* score: Add self-contained condition implementationSebastian Huber2015-07-301-0/+3
|
* score: Add self-contained futex implementationSebastian Huber2015-07-301-0/+3
|
* score: Add self-contained semaphore implementationSebastian Huber2015-07-301-0/+3
|
* score: Add self-contained mutex implementationSebastian Huber2015-07-301-0/+3
| | | | | | | This mutex implementation uses a thread priority queue with a simple priority inheritance mechanism (similar to the object based mutexes). The storage space must be supplied by the user (16 bytes on 32-bit targets).
* score: Add thread queue for self-contained objectsSebastian Huber2015-07-301-0/+18
|
* score: Use a plain ticket lock for thread locksSebastian Huber2015-07-304-41/+140
| | | | | | This enables external libraries to use thread locks since they are independent of the actual RTEMS build configuration, e.g. profiling enabled or disabled.
* score: Add potpourri lock statisticsSebastian Huber2015-07-301-0/+12
| | | | | | | These SMP lock statistics are used for all lock objects that lack a storage space for the statistics. Examples are lock objects used in external libraries which are independent of the actual RTEMS build configuration.
* score: Provide struct _Thread_queue_HeadsSebastian Huber2015-07-301-1/+7
| | | | | Use a leading underscore in the structure name to allow forward declarations in standard header files provided by Newlib and GCC.
* score: Rename struct Thread_ControlSebastian Huber2015-07-303-7/+10
| | | | | Add a leading underscore to the structure name to allow forward declarations in standard header files provided by Newlib and GCC.
* score: Rename _POSIX_Absolute_timeout_to_ticks()Sebastian Huber2015-07-281-0/+39
| | | | | | Rename _POSIX_Absolute_timeout_to_ticks() to _TOD_Absolute_timeout_to_ticks() and move it to the score directory. Delete empty <rtems/posix/time.h>.
* score: Add commentSebastian Huber2015-07-241-0/+5
|
* score: Move wait flag update to tq extractSebastian Huber2015-07-231-1/+12
| | | | | | This makes it possible to use _Thread_queue_Extract_locked() for barrier operations which extract all threads on the queue in one critical section.
* score: Introduce Thread_queue_HeadsSebastian Huber2015-07-235-44/+61
| | | | | | | | | | | | | Move the storage for the thread queue heads to the threads. Each thread provides a set of thread queue heads allocated from a dedicated memory pool. In case a thread blocks on a queue, then it lends its heads to the queue. In case the thread unblocks, then it takes a free set of threads from the queue. Since a thread can block on at most one queue this works. This mechanism is used in FreeBSD. The motivation for this change is to reduce the memory demands of the synchronization objects. On a 32-bit uni-processor configuration the Thread_queue_Control size is now 8 bytes, compared to 64 bytes in RTEMS 4.10 (other changes reduced the size as well).
* score: Introduce Thread_queue_QueueSebastian Huber2015-07-236-80/+128
| | | | | | Separate the thread queue heads and lock from the operations. This enables the support for light weight objects which only support one queuing discipline.
* score: Simplify _Thread_Lock_set()Sebastian Huber2015-07-131-11/+56
| | | | | Exploit the fact that the current thread lock must be the default thread lock and interrupts are disabled if we call _Thread_Lock_set().
* score: TypoSebastian Huber2015-07-131-2/+2
|
* score: Simplify _SMP_ticket_lock_Release()Sebastian Huber2015-07-012-12/+13
| | | | | Add a SMP lock statistics pointer to SMP_lock_Stats_context and drop the SMP lock statistics parameter from _SMP_ticket_lock_Release().
* score: Accept NULL pointer in _Freechain_Put()Sebastian Huber2015-07-011-1/+2
| | | | With this a _Freechain_Put( _Freechain_Get() ) works always.