summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src (follow)
Commit message (Collapse)AuthorAgeFilesLines
* score: Remove SMP message multicast/broadcastSebastian Huber2021-07-281-39/+1
| | | | | Remove the unused _SMP_Send_message_multicast() and _SMP_Send_message_broadcast().
* score: Simplify SMP processor state handlingSebastian Huber2021-07-284-190/+143
| | | | | | | | 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-283-21/+17
| | | | | | 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-10/+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.
* cpukit: occured -> occurredSebastian Huber2021-07-161-1/+1
|
* Fix compiler warnings for schedulerstrongapa.cRichi Dubey2021-07-061-4/+20
|
* Update Strong APA SchedulerRichi Dubey2021-06-241-192/+789
| | | | | | | | | | 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: Move _ISR_Vector_table[] to separate fileSebastian Huber2021-06-242-8/+48
| | | | | | | | | | The _ISR_Handler_initialization() does not touch the _ISR_Vector_table[]. Move the definition of _ISR_Vector_table[] to a separate file. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
* score: Remove bogus _ISR_Nest_level settingSebastian Huber2021-06-241-4/+0
| | | | | | | This variable is actually contained in _Per_CPU_Information[] which is already zero initialized. Remove superfluous includes.
* score: Remove _CPU_Initialize_vectors()Sebastian Huber2021-06-241-4/+0
| | | | | | | This CPU port macro was not used. Since the _ISR_Vector_table[] is statically allocated, CPU ports could initialize this table in _CPU_Initialize() if necessary. Remove _CPU_Initialize_vectors() to simplify the CPU port interface.
* score: Comment _Thread_queue_Surrender_sticky()Sebastian Huber2021-06-151-1/+7
| | | | | The change also helps to avoid reports from static analysers since most callers of _Thread_queue_Make_ready_again() check the unblock status.
* score: Add PER_CPU_DATA_NEED_INITIALIZATION()Sebastian Huber2021-06-102-42/+98
| | | | | | | | | 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-2/+2
| | | | | | | Set Thread_queue_Context::timeout_absolute in _Thread_queue_Context_set_timeout_argument() to avoid using it uninitialized. The bug was introduced by a89ecaa1a94d49ddae7753d6b83923e9d2a00486.
* libcsupport: Added futimens() and utimensat()Ryan Long2021-05-281-0/+54
| | | | | | | | | | 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: Direct thread dispatch in a self restartSebastian Huber2021-05-261-5/+11
| | | | | | | | | | Commit 73ebf9a27ed5cd0fd3e0dc0da98345d7faa610a2 accidentally removed the direct thread dispatch in a self thread restart. In case of a self restart (always in task context) the directive shall not return. If this is not possible due to a bad thread dispatch disable level, then a fatal error shall occur. Update #4412.
* score: Fix _Thread_Cancel()Sebastian Huber2021-05-261-26/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The _Thread_Cancel() (in contrast to _Thread_Restart() which used a similar code block) may have produced ready threads with an active timer in case the thread to cancel had its thread life protection enabled. The problem was this code block: Priority_Control priority; _Thread_Add_life_change_request( the_thread ); if ( _Thread_Is_life_change_allowed( previous ) ) { _Thread_State_release( the_thread, &lock_context ); _Thread_queue_Extract_with_proxy( the_thread ); _Thread_Timer_remove( the_thread ); } else { _Thread_Clear_state_locked( the_thread, STATES_SUSPENDED ); _Thread_State_release( the_thread, &lock_context ); } priority = _Thread_Get_priority( executing ); _Thread_Raise_real_priority( the_thread, priority ); _Thread_Remove_life_change_request( the_thread ); The life change request should only be added/removed if a life change is allowed (see _Thread_Restart()). Add _Thread_Try_life_change_request() and use it in _Thread_Cancel() and _Thread_Restart(). Close #4435.
* score: Simplify calling _Thread_Exit()Sebastian Huber2021-05-261-5/+13
| | | | | Move common code into _Thread_Exit(). This enables a tail call optimization in most cases.
* score: Simplify thread queue timeout handlingSebastian Huber2021-05-182-4/+12
| | | | | | | 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 _CPU_Context_switch_no_return()Sebastian Huber2021-05-181-1/+1
| | | | | | | | | | | 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 _CPU_Context_switch() to avoid generation of dead code in _Thread_Start_multitasking() if RTEMS was built with SMP support enabled.
* score: Move _Thread_queue_Queue_get_name_and_id()Sebastian Huber2021-05-172-36/+76
| | | | | | | | | | Move this diagnostic function to a separate file since it does not provide a core function of the system. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
* score: Add and use _Per_CPU_Is_ISR_in_progress()Sebastian Huber2021-05-171-1/+1
| | | | | 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-12/+17
|
* rtems: Fix task restart within interrupt contextSebastian Huber2021-05-141-53/+15
| | | | | | | | | | | 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.
* rtems: Always set the real priority during restartSebastian Huber2021-05-141-26/+32
| | | | | | | Unconditionally set the real priority of the task to its initial priority during a task restart. Close #4411.
* score: Return status in _Thread_Restart_other()Sebastian Huber2021-05-141-3/+3
| | | | This simplifies rtems_task_restart().
* rtems: Use _Objects_Free_nothing() for msg queuesSebastian Huber2021-05-111-5/+3
| | | | | | | | Use _Objects_Free_nothing() for rtems_message_queue_construct() to avoid unreachable code in _CORE_message_queue_Close() in case only user-provided message buffers are used. Update #4007.
* score: Rename _Stack_Free_nothing()Sebastian Huber2021-05-111-5/+5
| | | | | | | 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/+16
| | | | These two functions are no longer used outside of _Once().
* score: Add _Thread_Dispatch_direct_no_return()Sebastian Huber2021-05-022-2/+5
| | | | | | | | | | 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.
* Use alias for rtems_task_self() and pthread_self()Sebastian Huber2021-04-301-0/+53
| | | | This may reduce the code size a bit.
* objectextendinformation.c: Ensure information->object_blocks is not NULLRyan Long2021-04-291-0/+11
| | | | | | CID 26033: Dereference after null check in _Objects_Extend_information(). Closes #4326
* Return status code for _Thread_Start()Sebastian Huber2021-04-271-3/+3
| | | | | This avoids having conditional statements to get the API-specific status code.
* Return status code for _Scheduler_Set_affinity()Sebastian Huber2021-04-274-18/+18
| | | | | This avoids having conditional statements to get the API-specific status code.
* rtems: Change rtems_task_get_affinity() statusSebastian Huber2021-04-271-1/+1
| | | | | | | | | 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.
* Return status code for _Scheduler_Get_affinity()Sebastian Huber2021-04-271-2/+7
| | | | | This avoids having conditional statements to get the API-specific status code.
* Remove superfluous <rtems/score/wkspace.h> includesSebastian Huber2021-04-207-7/+0
|
* score: Remove unused _Thread_queue_Dequeue()Sebastian Huber2021-04-201-32/+0
| | | | | | | | | | | | Last use was removed by: commit 54550e048d3a49435912797d2024f80671e93267 Author: Sebastian Huber <sebastian.huber@embedded-brains.de> Date: Fri May 13 08:16:30 2016 +0200 posix: Rework pthread_join() Rework pthread_join() to use _Thread_Join().
* score: Replace Objects_Name_or_id_lookup_errorsSebastian Huber2021-04-073-17/+17
| | | | | Replace Objects_Name_or_id_lookup_errors with new Status_Control codes. Get rid of the _Status_Object_name_errors_to_status lookup table.
* score: Add an assert to _Workspace_Free()Sebastian Huber2021-03-271-1/+5
|
* score: Fix task stack initializationSebastian Huber2021-03-271-1/+0
| | | | | | | | | Do not adjust the stack area begin address since this may confuse the stack allocator and result in failed stack frees. Account for the alignment overhead in the stack space size estimate. Check that the stack size is in the expected interval.
* score: Add Thread_Configuration::cpu_time_budgetSebastian Huber2021-03-161-17/+1
| | | | | Move the CPU time budget to the thread configuration. This simplifies _Thread_Initialize().
* score: Ensure stack alignment requirementSebastian Huber2021-03-052-11/+24
| | | | | | | | Make sure that a user-provided stack size is the minimum size allocated for the stack. Make sure we meet the stack alignment requirement also for CPU ports with CPU_STACK_ALIGNMENT > CPU_HEAP_ALIGNMENT.
* score: Enforce CPU_STACK_ALIGNMENT requirementsSebastian Huber2021-03-041-16/+14
| | | | | Clarify CPU_STACK_ALIGNMENT requirements in no_cpu port. Add static assertion to enforce CPU_STACK_ALIGNMENT requirements.
* score: Simplify _Objects_Name_to_id_u32()Sebastian Huber2021-03-011-20/+21
| | | | | | | Remove superfluous check for the objects maximum since the maximum is also used as a loop limit. Fix formatting.
* score: Fix thread initializationSebastian Huber2021-02-264-107/+125
| | | | | | | | Close the thread object if a thread create extension fails. Also call the delete extension to avoid resource leaks in early extensions if a late extension fails. Close #4270.
* score: Add Hash HandlerSebastian Huber2021-02-261-0/+76
| | | | Update #4267.
* score: Add _IO_Base64url()Sebastian Huber2021-02-251-18/+38
| | | | Update #4267.
* score: Remove _CORE_barrier_Do_flush()Sebastian Huber2021-02-241-37/+0
| | | | Call _Thread_queue_Flush_critical() directly.
* score: Simplify core barrierSebastian Huber2021-02-242-12/+12
| | | | | | Use the number of threads which must arrive at the barrier to trip the automatic release also to indicate if the barrier is a manual release barrier.
* score: Remove _Objects_Open()Sebastian Huber2021-02-243-6/+3
| | | | | Use the type safe _Objects_Open_u32() instead. Return the object identifier to enforce a common usage pattern.