summaryrefslogtreecommitdiffstats
path: root/cpukit/score/preinstall.am (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Add _IO_Printf() and _IO_Vprintf()Sebastian Huber2017-11-061-0/+4
| | | | | | | | | | | | | | The previous vprintk() implementation had a questionable licence header, lacks support for the 'z' and 'j' format specifiers, is not robust against invalid format specifiers, uses a global variable for output. Replace it with a stripped down version of the FreeBSD kernel kvprintf() function. The new implementation allows a low overhead rtems_snprintf() if necessary. Update #3199. Close #3216.
* score: Remove CPU_set_ControlSebastian Huber2017-10-111-8/+0
| | | | | | Use Processor_mask instead. Update #2514.
* posix: Implement self-contained POSIX mutexSebastian Huber2017-10-051-0/+4
| | | | | | | | POSIX mutexes are now available in all configurations and no longer depend on --enable-posix. Update #2514. Update #3112.
* posix: Implement self-contained POSIX rwlocksSebastian Huber2017-10-051-9/+4
| | | | | | | | POSIX rwlocks are now available in all configurations and no longer depend on --enable-posix. Update #2514. Update #3115.
* posix: Implement self-contained POSIX semaphoresSebastian Huber2017-10-051-0/+4
| | | | | | | | | | | | | | For semaphore object pointer and object validation see POSIX_SEMAPHORE_VALIDATE_OBJECT(). Destruction or close of a busy semaphore returns an error status. The object is not flushed. POSIX semaphores are now available in all configurations and no longer depend on --enable-posix. Update #2514. Update #3116.
* score: Add SMP EDF schedulerSebastian Huber2017-06-291-0/+4
| | | | Update #3056.
* posix: Add self-contained pthread spinlockSebastian Huber2016-11-231-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Turn pthread_spinlock_t into a self-contained object. On uni-processor configurations, interrupts are disabled in the lock/trylock operations and the previous interrupt status is restored in the corresponding unlock operations. On SMP configurations, a ticket lock is a acquired and released in addition. The self-contained pthread_spinlock_t object is defined by Newlib in <sys/_pthreadtypes.h>. typedef struct { struct _Ticket_lock_Control _lock; __uint32_t _interrupt_state; } pthread_spinlock_t; This implementation is simple and efficient. However, this test case of the Linux Test Project would fail due to call of printf() and sleep() during spin lock ownership: https://github.com/linux-test-project/ltp/blob/master/testcases/open_posix_testsuite/conformance/interfaces/pthread_spin_lock/1-2.c There is only limited support for profiling on SMP configurations. Delete CORE spinlock implementation. Update #2674.
* score: Delete Resource HandlerSebastian Huber2016-11-021-8/+0
| | | | Update #2556.
* score: Rework thread priority managementSebastian Huber2016-09-211-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | Add priority nodes which contribute to the overall thread priority. The actual priority of a thread is now an aggregation of priority nodes. The thread priority aggregation for the home scheduler instance of a thread consists of at least one priority node, which is normally the real priority of the thread. The locking protocols (e.g. priority ceiling and priority inheritance), rate-monotonic period objects and the POSIX sporadic server add, change and remove priority nodes. A thread changes its priority now immediately, e.g. priority changes are not deferred until the thread releases its last resource. Replace the _Thread_Change_priority() function with * _Thread_Priority_perform_actions(), * _Thread_Priority_add(), * _Thread_Priority_remove(), * _Thread_Priority_change(), and * _Thread_Priority_update(). Update #2412. Update #2556.
* score: Add scheduler node implementation headerSebastian Huber2016-09-081-0/+4
| | | | Update #2556.
* score: Move scheduler node to own header fileSebastian Huber2016-09-081-0/+4
| | | | | | | This makes it possible to add scheduler nodes to structures defined in <rtems/score/thread.h>. Update #2556.
* score: Add an SMP sequence lock implementationSebastian Huber2016-06-091-0/+4
|
* score: Add Status_Control for all APIsSebastian Huber2016-05-261-0/+4
| | | | | | | | | | | Unify the status codes of the Classic and POSIX API to use the new enum Status_Control. This eliminates the Thread_Control::Wait::timeout_code field and the timeout parameter of _Thread_queue_Enqueue_critical() and _MPCI_Send_request_packet(). It gets rid of the status code translation tables and instead uses simple bit operations to get the status for a particular API. This enables translation of status code constants at compile time. Add _Thread_Wait_get_status() to avoid direct access of thread internal data structures.
* SMP: Add Mellor-Crummey and Scott (MCS) lockSebastian Huber2016-05-191-0/+4
| | | | | | | | | | Added only for evaluation purposes. We have to compare the performance against the ticket lock on the interesting platforms via smptests/smplock01. The following GCC shortcoming affects the MCS lock: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66867
* SMP: Move ticket lock to separate header fileSebastian Huber2016-05-191-0/+4
|
* SMP: Move lock stats to separate header fileSebastian Huber2016-05-191-0/+4
|
* score: Add dummy Strong APA schedulerSebastian Huber2016-05-021-0/+4
| | | | | | Start with a copy of the Priority SMP scheduler implementation. Update #2510.
* score: Add Processor_mask, etc.Sebastian Huber2016-03-041-0/+4
|
* Delete unused API extensionsSebastian Huber2016-02-031-4/+0
|
* Use linker set for system initializationSebastian Huber2015-12-111-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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/+4
| | | | Update #2408.
* Remove <rtems/debug.h>Sebastian Huber2015-12-071-4/+0
| | | | Close #2477.
* timecounter: Use in RTEMSAlexander Krutwig2015-05-201-4/+0
| | | | | | | | Replace timestamp implementation with FreeBSD bintime and timecounters. New test sptests/sptimecounter02. Update #2271.
* timecounter: Port to RTEMSAlexander Krutwig2015-05-201-0/+33
| | | | | | New test sptests/timecounter01. Update #2271.
* score: New thread queue implementationSebastian Huber2015-05-191-4/+0
| | | | | | | | | Use thread wait flags for synchronization. The enqueue operation is now part of the initial critical section. This is the key change and enables fine grained locking on SMP for objects using a thread queue like semaphores and message queues. Update #2273.
* score: Make <rtems/score/atomic.h> availableSebastian Huber2015-02-191-8/+8
| | | | | | | | Make <rtems/score/atomic.h> available for all RTEMS configurations. Use inline functions instead of macros. Use ISR disable/enable on uni-processor configurations to ensure atomicity. Update #2273.
* Regenerate all preinstall.am files.Chris Johns2014-08-291-3/+3
| | | | | With this patch the preinstall.am files are in a set order and not dependent on now perl implements a hash.
* Regenerate all preinstall.am files.Joel Sherrill2014-08-281-3/+3
| | | | | Apparently, at some point automake output changed and these were not updated.
* Add SMP Priority Scheduler with AffinityJoel Sherrill2014-06-111-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This scheduler attempts to account for needed thread migrations caused as a side-effect of a thread state, affinity, or priority change operation. This scheduler has its own allocate_processor handler named _Scheduler_SMP_Allocate_processor_exact() because _Scheduler_SMP_Allocate_processor() attempts to prevent an executing thread from moving off its current CPU without considering affinity. Without this, the scheduler makes all the right decisions and then they are discarded at the end. ==Side Effects of Adding This Scheduler== Added Thread_Control * parameter to Scheduler_SMP_Get_highest_ready type so methods looking for the highest ready thread can filter by the processor on which the thread blocking resides. This allows affinity to be considered. Simple Priority SMP and Priority SMP ignore this parameter. + Added get_lowest_scheduled argument to _Scheduler_SMP_Enqueue_ordered(). + Added allocate_processor argument to the following methods: - _Scheduler_SMP_Block() - _Scheduler_SMP_Enqueue_scheduled_ordered() - _Scheduler_SMP_Enqueue_scheduled_ordered() + schedulerprioritysmpimpl.h is a new file with prototypes for methods which were formerly static in schedulerprioritysmp.c but now need to be public to be shared with this scheduler. NOTE: _Scheduler_SMP_Get_lowest_ready() appears to have a path which would allow it to return a NULL. Previously, _Scheduler_SMP_Enqueue_ordered() would have asserted on it. If it cannot return a NULL, _Scheduler_SMP_Get_lowest_ready() should have an assertions.
* score: Add Resource HandlerSebastian Huber2014-06-031-0/+8
| | | | | | | | | | A resource is something that has at most one owner at a time and may have multiple rivals in case an owner is present. The owner and rivals are impersonated via resource nodes. A resource is represented via the resource control structure. The resource controls and nodes are organized as trees. It is possible to detect deadlocks via such a resource tree. The _Resource_Iterate() function can be used to iterate through such a resource tree starting at a top node.
* score: Multiprocessor Resource Sharing ProtocolSebastian Huber2014-05-281-0/+8
| | | | | | | | | | | | | | | | | | | | | | Add basic support for the Multiprocessor Resource Sharing Protocol (MrsP). The Multiprocessor Resource Sharing Protocol (MrsP) is defined in A. Burns and A.J. Wellings, A Schedulability Compatible Multiprocessor Resource Sharing Protocol - MrsP, Proceedings of the 25th Euromicro Conference on Real-Time Systems (ECRTS 2013), July 2013. It is a generalization of the Priority Ceiling Protocol to SMP systems. Each MrsP semaphore uses a ceiling priority per scheduler instance. These ceiling priorities can be specified with rtems_semaphore_set_priority(). A task obtaining or owning a MrsP semaphore will execute with the ceiling priority for its scheduler instance as specified by the MrsP semaphore object. Tasks waiting to get ownership of a MrsP semaphore will not relinquish the processor voluntarily. In case the owner of a MrsP semaphore gets preempted it can ask all tasks waiting for this semaphore to help out and temporarily borrow the right to execute on one of their assigned processors. The help out feature is not implemented with this patch.
* score: Introduce scheduler nodesSebastian Huber2014-05-141-0/+4
| | | | | | | | | | | | Rename scheduler per-thread information into scheduler nodes using Scheduler_Node as the base type. Use inheritance for specialized schedulers. Move the scheduler specific states from the thread control block into the scheduler node structure. Validate the SMP scheduler node state transitions in case RTEMS_DEBUG is defined.
* score: Add priority affinity smp scheduler.Jennifer Averett2014-04-031-0/+4
|
* score: Unify pthread and gxx_wrapper once and move to score.Christian Mauderer2014-03-211-0/+4
|
* score: Add per-CPU profilingSebastian Huber2014-03-141-0/+4
| | | | | | | Add per-CPU profiling stats API. Implement the thread dispatch disable level profiling. The interrupt profiling must be implemented in CPU port specific parts (mostly assembler code). Add a support function _Profiling_Outer_most_interrupt_entry_and_exit() for this purpose.
* score: Add cpuset support to Score.Jennifer Averett2014-03-071-0/+8
| | | | | | 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: Rename rtems_smp_process_interrupt()Sebastian Huber2014-02-191-4/+0
| | | | | | Rename rtems_smp_process_interrupt() into _SMP_Inter_processor_interrupt_handler(). Delete unused header file <rtems/bspsmp.h>.
* score: Add and use <rtems/score/smpimpl.h>Sebastian Huber2014-02-191-0/+4
| | | | | Collect SMP implementation specific parts in the <rtems/score/smpimpl.h> header file.
* score: Add SMP barrierSebastian Huber2014-02-171-0/+4
|
* Require presence of <stdatomic.h> for SMP supportSebastian Huber2014-02-171-9/+8
|
* Add thread-local storage (TLS) supportSebastian Huber2014-02-041-0/+4
| | | | | Tested and implemented on ARM, m68k, PowerPC and SPARC. Other architectures need more work.
* smp: Add Deterministic Priority SMP SchedulerSebastian Huber2013-08-201-0/+4
|
* smp: Replace Scheduler_simple_smp_ControlSebastian Huber2013-08-201-0/+8
| | | | | Replace Scheduler_simple_smp_Control with Scheduler_SMP_Control. Rename _Scheduler_simple_smp_Instance() to _Scheduler_SMP_Instance().
* score: PR2136: Fix _Thread_Change_priority()Sebastian Huber2013-08-201-0/+4
| | | | | | | | | | | | | | | 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: Move nanoseconds since last tick supportSebastian Huber2013-08-011-0/+4
| | | | | | Move the nanoseconds since last tick support from the Watchdog to the TOD handler. Now the TOD managment is encapsulated in the TOD_Control structure.
* score: Rename tod.h to todimpl.hSebastian Huber2013-08-011-3/+3
|
* score: Add and use ISR locksSebastian Huber2013-07-311-0/+4
| | | | | | | | | | | | ISR locks are low-level locks to protect critical sections accessed by threads and interrupt service routines. On single processor configurations the ISR locks degrade to simple ISR disable/enable sequences. No additional storage or objects are required. This synchronization primitive is supported on SMP configurations. Here SMP locks are used.
* score: New header file <rtems/score/assert.h>Sebastian Huber2013-07-301-0/+4
|
* score: Merge tod implementation into one fileSebastian Huber2013-07-261-4/+0
| | | | | Delete TOD_MICROSECONDS_PER_SECOND, TOD_MICROSECONDS_TO_TICKS() and TOD_MILLISECONDS_TO_TICKS().
* score: Create object implementation headerSebastian Huber2013-07-261-4/+4
| | | | | | Move implementation specific parts of object.h and object.inl into new header file objectimpl.h. The object.h contains now only the application visible API.