path: root/cpukit (unfollow)
Commit message (Collapse)AuthorFilesLines
16 hoursscore: Improve variable names in thread initHEADmasterSebastian Huber1-25/+25
16 hoursscore: Simplify _Thread_Try_initialize()Sebastian Huber1-72/+108
Move a code block to its own new function _Thread_Initialize_scheduler_and_wait_nodes(). Add comments.
42 hourscpukit: Add AArch64 SMP SupportKinsey Moore5-9/+160
This adds SMP support for AArch64 in cpukit and for the ZynqMP BSPs.
2 daysbuild: Remove old build systemSebastian Huber24-2957/+0
Close #3250. Close #4081.
2 dayslibtest: Improve T_now_tick()Sebastian Huber1-0/+45
The T_now_tick() is a fall back time measurement using the CPU counter in case no Clock Driver is configured. Some CPU counter may overflow during the test execution. Accumulate the elapsed time to reduce the chance of CPU counter overflows.
2 daysscore: Remove unused default scheduler opsSebastian Huber2-107/+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.
2 daysscore: Ensure only one CPU if requiredSebastian Huber3-1/+22
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.
2 daysscore: Provide two thread pin/unpin defaultsSebastian Huber7-17/+111
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.
2 daysscore: SCHEDULER_OPERATION_DEFAULT_ASK_FOR_HELPSebastian Huber5-6/+17
3 dayspxcdevctl: Adjust for standardRyan Long1-8/+72
psxdevctl is supposed to return the value in errno. Before, it was returning -1 and setting errno. Changed the tests to reflect these changes. Added code from RRADE's posix_devctl.c. Closes #4506
7 daysrtems: Fix message manager documentationSebastian Huber1-2/+2
Correct the description of the ``count`` parameter of rtems_message_queue_flush(). Update #4508.
8 daysrtems: Add header files to Doxygen groupsSebastian Huber7-0/+14
8 daysrtems: Move Doxygen group definitionSebastian Huber2-10/+8
Move the definition of the top-level Classic API implementation group to an implementation header file.
8 daysrtems: Improve Classic API group descriptionSebastian Huber1-1/+1
8 daysrtems: Fix message manager documentationSebastian Huber1-8/+10
Remove bogus return status from rtems_message_queue_receive(). Clarify rtems_message_queue_flush(). Update #4508.
8 daysrtems: Generate <rtems/extension.h>Sebastian Huber1-177/+588
Remove the duplicated description which is an out dated copy and paste from the Classic API Guide. Instead, thoroughly document the individual extensions. Change license to BSD-2-Clause according to file histories and documentation re-licensing agreement. Update #3899. Update #3993.
8 daysrtems: Generate <rtems/rtems/cache.h>Sebastian Huber1-150/+512
Change license to BSD-2-Clause according to file histories and documentation re-licensing agreement. Update #3899. Update #3993. Update #4513.
14 daysrtems: Initialize count of postponed jobsSebastian Huber1-0/+1
The rtems_rate_monotonic_get_status() directive returns an arbitrary number for the count of postponed jobs if it is called for a newly created period object. Set the count of postponed jobs to zero during object creation. Close #4511.
2021-09-06rtems: Document time of day constraintsSebastian Huber1-4/+13
Update #4338.
2021-09-06score: Split up rbtreenext.cSebastian Huber5-28/+180
Split up rbtreenext.c since only _RBTree_Minimum() is used by the operating system core services (thread queues and the EDF scheduler). Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
2021-09-06score: Change TOD_LATEST_YEAR to 2099Sebastian Huber4-41/+47
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.
2021-09-06score: Simplify _TOD_Validate()Sebastian Huber1-9/+25
Split up the multi line if statement into smaller parts.
2021-09-06score: Limit the CLOCK_REALTIME settingSebastian Huber2-1/+10
Limit the CLOCK_REALTIME setting to ensure that the CLOCK_REALTIME is defined for a system uptime of at least 114 years.
2021-09-06score: Add _TOD_Is_valid_new_time_of_day()Sebastian Huber6-22/+86
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.
2021-09-06score: Remove TOD_TICKS_PER_SECOND_method()Sebastian Huber3-49/+2
Use _Watchdog_Ticks_per_second instead.
2021-09-06score: Return status in _TOD_Adjust()Sebastian Huber3-4/+14
2021-09-03score: Move _Thread_Dispatch()Sebastian Huber3-20/+62
The _Thread_Dispatch() function was customized over time and now the work is done by _Thread_Do_dispatch() and specialized wrappers. The plain _Thread_Dispatch() is now only used in some CPU ports. Move it to a separate file to avoid dead code in the general. Change license to BSD-2-Clause according to file history and re-licensing agreement. Update #3053.
2021-09-03score: Document thread queue operationsSebastian Huber3-11/+63
2021-09-02libtest: Return fixture context in T_case_begin()Sebastian Huber2-2/+3
This makes it similar to T_push_fixture().
2021-09-01score: Update priority only if necessarySebastian Huber3-12/+16
In _Thread_queue_Flush_critical(), update the priority of the thread queue owner only if necessary. The scheduler update priority operation could be expensive.
2021-09-01score: Remove _Thread_queue_Unblock_critical()Sebastian Huber2-60/+12
This function was only used in one place. Replace it with a call to _Thread_queue_Resume().
2021-09-01score: Remove _Thread_queue_First_locked()Sebastian Huber2-29/+9
The _Thread_queue_First_locked() was only used in one place. Move the code of this inline function to this place.
2021-09-01score: Fix blocking message queue receiveSebastian Huber4-82/+62
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.
2021-09-01score: Fix priority discipline handlingSebastian Huber8-148/+196
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.
2021-09-01score: Document Futex HandlerSebastian Huber1-2/+40
The behaviour of the futex operations is defined by Linux: Use EAGIN instead of EWOULDBLOCK to be in line with the Linux man page. These error numbers have the same value in Newlib. Using the same error numbers helps to avoid confusion. When you look at the history of the Linux man page you see that they replaced EWOULDBLOCK with EAGAIN over time. At the time of the RTEMS futex implementation they used EWOULDBLOCK.
2021-08-31rtems: Fix partitions with RTEMS_MULIPROCESSINGSebastian Huber1-1/+1
Replace call to removed _Partition_Free() with a call to _Objects_Free().
2021-08-21libmisc/shell: Check the shell command pointers when adding a commandChris Johns1-0/+5
2021-08-21libmisc/fdt: fix node initialise error with RTEMS_DEBUGChris Johns1-0/+2
2021-08-19cpukit/mghttpd: Support all descriptors in selectChris Johns1-0/+31
- Support all possible descriptors in a select call. Borrowed from Christain and his mDNS change in LibBSD - If select (or poll) fails pause for a bit rather than locking up in a hard loop
2021-08-18confstr() support for RTEMSEshan dhawan2-0/+128
Closes #3373 confstr() style update Signed-off-by: Eshan Dhawan <>
2021-08-18score: Delete unused rtems_ada_selfSebastian Huber1-5/+0
2021-08-18score: Make zombie registry observableSebastian Huber2-16/+40
This helps to write tests for _Thread_Wait_for_execution_stop(). Rename Thread_Zombie_control in Thread_Zombie_registry.
2021-08-18score: Simplify _Thread_Kill_zombies()Sebastian Huber1-8/+11
2021-08-18score: Simplify _Per_CPU_Wait_for_job()Sebastian Huber1-1/+0
The _SMP_Fatal() is a no-return function, so the "break" statement is superfluous.
2021-08-18score: Simplify _Thread_Create_idle_for_CPU()Sebastian Huber1-7/+1
Online processors have a scheduler assigned.
2021-08-12score: Simplify _Scheduler_Tick()Sebastian Huber1-4/+22
The NULL pointer check for the executing thread was introduced by commit: commit be3c257286ad870d8d1a64941cde53fd2d33a633 Author: Sebastian Huber <> 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.
2021-08-12score: Replace the single use of a sequence lockSebastian Huber3-30/+65
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.
2021-08-12score: Replace priority prepend it with an enumSebastian Huber13-71/+108
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.
2021-08-12rtems: Fix rtems_partition_return_buffer()Sebastian Huber5-17/+30
The rtems_partition_return_buffer() wrongly accepted which were exactly at the buffer area end. Use the buffer area limit address for the range checking. Close #4490.