summaryrefslogtreecommitdiffstats
path: root/cpukit/include/rtems/score (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Regenerate <rtems/score/basedefs.h>Sebastian Huber2021-09-301-1/+1
| | | | Reflect renamed specification item.
* score: Remove unused default scheduler opsSebastian Huber2021-09-211-46/+13
| | | | | | | | | | If SMP support is enabled and the system has exactly one processor, then it may use an uniprocessor scheduler. The ask for help, reconsider help request, and withdraw node operations can be NULL in this case, since they are only used if a thread has at least one helping scheduler node. At least two schedulers are required to get a helping node and each scheduler involved must own at least one processor. This is not possible on a system with exactly one processor.
* score: Ensure only one CPU if requiredSebastian Huber2021-09-211-1/+2
| | | | | | | Issue the new fatal SMP error SMP_FATAL_SCHEDULER_REQUIRES_EXACTLY_ONE_PROCESSOR if the system starts with not exactly one processor and an uniprocessor scheduler is configured.
* score: Provide two thread pin/unpin defaultsSebastian Huber2021-09-215-11/+32
| | | | | | | | | | | | | | The uniprocessor schedulers do not support systems with more than more processors. So they rivially support thread pinning and thus the SMP_FATAL_SCHEDULER_PIN_OR_UNPIN_NOT_SUPPORTED cannot happen. Add a second default implementation for SMP schedulers which do not support thread pinning. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
* score: SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITYSebastian Huber2021-09-217-8/+20
| | | | | Rename SCHEDULER_OPERATION_DEFAULT_GET_SET_AFFINITY in SCHEDULER_DEFAULT_SET_AFFINITY_OPERATION. Add Doxygen comment.
* score: SCHEDULER_OPERATION_DEFAULT_ASK_FOR_HELPSebastian Huber2021-09-215-6/+17
| | | | | Rename SCHEDULER_OPERATION_DEFAULT_ASK_FOR_HELP in SCHEDULER_DEFAULT_SMP_OPERATIONS. Add a Doxygen comment.
* score: Change TOD_LATEST_YEAR to 2099Sebastian Huber2021-09-061-2/+29
| | | | | | | | This simplifies the implementation a bit. Declare _TOD_Days_to_date[] in <rtems/score/todimpl.h>. Make _TOD_Days_per_month[] and _TOD_Days_since_last_leap_year[] static. Update #4338.
* score: Limit the CLOCK_REALTIME settingSebastian Huber2021-09-061-0/+9
| | | | | Limit the CLOCK_REALTIME setting to ensure that the CLOCK_REALTIME is defined for a system uptime of at least 114 years.
* score: Add _TOD_Is_valid_new_time_of_day()Sebastian Huber2021-09-061-1/+13
| | | | | | Move the TOD validation to the callers of _TOD_Set(). This avoids dead code in case only rtems_clock_set() is used in an application because rtems_clock_set() always calls _TOD_Set() with a valid time of day.
* score: Remove TOD_TICKS_PER_SECOND_method()Sebastian Huber2021-09-061-18/+2
| | | | Use _Watchdog_Ticks_per_second instead.
* score: Return status in _TOD_Adjust()Sebastian Huber2021-09-061-1/+4
|
* score: Document thread queue operationsSebastian Huber2021-09-032-9/+61
|
* score: Update priority only if necessarySebastian Huber2021-09-011-2/+2
| | | | | | In _Thread_queue_Flush_critical(), update the priority of the thread queue owner only if necessary. The scheduler update priority operation could be expensive.
* score: Remove _Thread_queue_Unblock_critical()Sebastian Huber2021-09-011-28/+6
| | | | | This function was only used in one place. Replace it with a call to _Thread_queue_Resume().
* score: Remove _Thread_queue_First_locked()Sebastian Huber2021-09-011-28/+0
| | | | | The _Thread_queue_First_locked() was only used in one place. Move the code of this inline function to this place.
* score: Fix blocking message queue receiveSebastian Huber2021-09-012-54/+25
| | | | | | | | | | | | | In order to ensure FIFO fairness across schedulers, the thread queue surrender operation must be used to dequeue a thread from the thread queue. The thread queue extract operation is intended for timeouts. Add _Thread_queue_Resume() which may be used to make extracted or surrendered threads ready again. Remove the now unused _Thread_queue_Extract_critical() function. Close #4509.
* score: Fix priority discipline handlingSebastian Huber2021-09-013-58/+56
| | | | | | | | | | | The priority queues in clustered scheduling configurations use a per scheduler priority queue rotation to ensure FIFO fairness across schedulers. This mechanism is implemented in the thread queue surrender operation. Unfortunately some semaphore and message queue directives used wrongly the thread queue extract operation. Fix this through the use of _Thread_queue_Surrender(). Update #4358.
* score: Delete unused rtems_ada_selfSebastian Huber2021-08-181-5/+0
|
* score: Make zombie registry observableSebastian Huber2021-08-181-0/+27
| | | | | | This helps to write tests for _Thread_Wait_for_execution_stop(). Rename Thread_Zombie_control in Thread_Zombie_registry.
* score: Simplify _Scheduler_Tick()Sebastian Huber2021-08-121-4/+22
| | | | | | | | | | | | | | | | | | The NULL pointer check for the executing thread was introduced by commit: commit be3c257286ad870d8d1a64941cde53fd2d33a633 Author: Sebastian Huber <sebastian.huber@embedded-brains.de> Date: Thu Jun 5 11:17:26 2014 +0200 score: Avoid NULL pointer access Check that the executing thread is not NULL in _Scheduler_Tick(). It may be NULL in case the processor has an optional scheduler assigned and the system was not able to start the processor. However, it is no longer necessary since now the clock interrupt is distributed to the online processors.
* score: Replace the single use of a sequence lockSebastian Huber2021-08-122-28/+63
| | | | | | | | | In SMP configurations, on 64-bit architectures use plain atomic operations to set/get the priority value of a scheduler node. On 32-bit architectures use an ISR lock. Using a sequence lock has no real benefit since it uses atomic read-modify-write operations for both the read and the write lock. Simply use a ticket lock instead so that only one SMP synchronization primitive is used for everything.
* score: Replace priority prepend it with an enumSebastian Huber2021-08-125-40/+68
| | | | | | | | Use the new Priority_Group_order enum instead of a boolean to indicated if a priority should be inserted as the first or last node into its priority group. This makes the code more expressive. It is also a bit more efficient since a branch in _Scheduler_Node_set_priority() is avoided and a simple bitwise or operation can be used.
* score: Change _SMP_Send_message() parameter typeSebastian Huber2021-07-291-4/+5
| | | | | Use the processor control to specify the target processor since this is what the callers have available.
* score: Add _Per_CPU_Submit_job()Sebastian Huber2021-07-291-4/+16
|
* score: Remove SMP message multicast/broadcastSebastian Huber2021-07-281-22/+0
| | | | | Remove the unused _SMP_Send_message_multicast() and _SMP_Send_message_broadcast().
* score: Simplify SMP processor state handlingSebastian Huber2021-07-282-37/+66
| | | | | | | | The per-CPU states which control the SMP system initialization were added quite early during the SMP support development. Replace this initial implementation with a simplified one. There is no longer a global SMP lock required which serialized the state changes of all processors. The new implementation better integrates with the per-CPU jobs.
* score: Remove processor event broadcast/receiveSebastian Huber2021-07-281-1/+34
| | | | | | Remove _CPU_SMP_Processor_event_broadcast() and _CPU_SMP_Processor_event_receive(). These functions are hard to use since they are subject to the lost wake up problem.
* score: Remove _Internal_errors_What_happenedSebastian Huber2021-07-281-17/+1
| | | | | | | | | | Users have access to the fatal error source and code though the fatal error extension. The user-specific fatal error handling should be done in statically initialized fatal error handlers. The _Internal_errors_What_happened was updated after the fatal error extension. In addition, there was no API to get the information stored in _Internal_errors_What_happened. In SMP configurations, this object could contain a mix of different fatal errors. Remove this object to save some bytes of storage.
* rtems: Add RTEMS_FATAL_SOURCE_SPURIOUS_INTERRUPTSebastian Huber2021-07-261-0/+7
| | | | | | | | Add RTEMS_FATAL_SOURCE_SPURIOUS_INTERRUPT as the fatal source for spurious interrupts. Use the interrupt vector number of the spurious interrupt for the fatal code. Update #3269.
* cpukit: occured -> occurredSebastian Huber2021-07-168-15/+15
|
* Update Strong APA SchedulerRichi Dubey2021-06-241-33/+129
| | | | | | | | | | This change allows for the migration of higher priority tasks on the arrival of a lower priority task limited by affinity constraints. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
* score: Add PER_CPU_DATA_NEED_INITIALIZATION()Sebastian Huber2021-06-101-0/+14
| | | | | | | | | Make the initialization of the per-CPU data optional. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
* score: Fix initialization of thread queue contextSebastian Huber2021-06-101-3/+9
| | | | | | | Set Thread_queue_Context::timeout_absolute in _Thread_queue_Context_set_timeout_argument() to avoid using it uninitialized. The bug was introduced by a89ecaa1a94d49ddae7753d6b83923e9d2a00486.
* score: Remove unused _Per_CPU_Initialize() declSebastian Huber2021-06-081-7/+0
|
* libcsupport: Added futimens() and utimensat()Ryan Long2021-05-281-7/+37
| | | | | | | | | | Created futimens.c and utimensat.c to add support for the POSIX methods futimens() and utimensat(). utime() and utimes() are considered obsolote by POSIX, but RTEMS will continue to support them. Closes #4396
* score: Add RTEMS_UNREACHABLE() to a groupSebastian Huber2021-05-281-0/+2
|
* score: Simplify calling _Thread_Exit()Sebastian Huber2021-05-261-7/+6
| | | | | Move common code into _Thread_Exit(). This enables a tail call optimization in most cases.
* score: Simplify thread queue timeout handlingSebastian Huber2021-05-183-13/+48
| | | | | | | Add Thread_queue_Context::timeout_absolute to specify an absolute or relative timeout. This avoid having to get the current time twice for timeouts relative to the current time. It moves also functionality to common code.
* score: Add and use _Per_CPU_Is_ISR_in_progress()Sebastian Huber2021-05-173-12/+21
| | | | | Add _Per_CPU_Is_ISR_in_progress() as an optimized version of _ISR_Is_in_progress().
* score: Improve parameters in _Thread_Change_life()Sebastian Huber2021-05-171-10/+12
|
* rtems: Fix task restart within interrupt contextSebastian Huber2021-05-141-14/+1
| | | | | | | | | | | rtems_task_restart() may be called from within interrupt context. So checking only that the thread to restart is equal to the executing thread is insufficient to determine a self restart. We have to also check that no ISR is in progress. Merge _Thread_Restart_other() and _Thread_Restart_self() into one _Thread_Restart() since they share a lot of common code. Close #4412.
* score: Return status in _Thread_Restart_other()Sebastian Huber2021-05-141-6/+9
| | | | This simplifies rtems_task_restart().
* score: Rename _Stack_Free_nothing()Sebastian Huber2021-05-113-8/+8
| | | | | | | Rename _Stack_Free_nothing() in _Objects_Free_nothing() to make it reusable for the message queue buffers. Update #4007.
* score: Make _Once_Lock() and _Once_Unlock() staticSebastian Huber2021-05-041-16/+0
| | | | These two functions are no longer used outside of _Once().
* score: Add _Thread_Dispatch_direct_no_return()Sebastian Huber2021-05-021-0/+11
| | | | | | | | | | The __builtin_unreachable() cannot be used with current GCC versions to tell the compiler that a function does not return to the caller, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99151 Add a no return variant of _Thread_Dispatch_direct() to avoid generation of dead code.
* basedefs: Add RTEMS_NOINITSebastian Huber2021-04-301-16/+26
| | | | Update #3866.
* Use alias for rtems_task_self() and pthread_self()Sebastian Huber2021-04-301-0/+7
| | | | This may reduce the code size a bit.
* Return status code for _Thread_Start()Sebastian Huber2021-04-271-4/+3
| | | | | This avoids having conditional statements to get the API-specific status code.
* Return status code for _Scheduler_Set_affinity()Sebastian Huber2021-04-274-19/+35
| | | | | This avoids having conditional statements to get the API-specific status code.
* rtems: Change rtems_task_get_affinity() statusSebastian Huber2021-04-272-1/+3
| | | | | | | | | In case the processor set is not large enough to contain the processor affinity set of the task return RTEMS_INVALID_SIZE instead of RTEMS_INVALID_NUMBER. This is more in line with other directives since the issue is related to the size of an object. Close #4393.