summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* validation: Improve generated test codeSebastian Huber2021-09-0220-1331/+1679
| | | | | | | Move the transition map members of the test context to a dedicated structure. Move the transition variant pre-condition prepare, action, and post-condition checks to a separate function to reduce the indentation level and allow skipping of transition variants.
* libtest: Return fixture context in T_case_begin()Sebastian Huber2021-09-022-2/+3
| | | | This makes it similar to T_push_fixture().
* bsps/imxrt: Improve SPI driverChristian Mauderer2021-09-021-73/+124
| | | | | | | | It wasn't possible to keep the CS line low between multiple message descriptors in one transfer. This patch reworks the driver so that it is possible. Update #4180
* score: Update priority only if necessarySebastian Huber2021-09-013-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.
* score: Remove _Thread_queue_Unblock_critical()Sebastian Huber2021-09-012-60/+12
| | | | | 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-012-29/+9
| | | | | 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-014-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.
* score: Fix priority discipline handlingSebastian Huber2021-09-018-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.
* score: Document Futex HandlerSebastian Huber2021-09-011-2/+40
| | | | | | | | | | | | | | The behaviour of the futex operations is defined by Linux: https://man7.org/linux/man-pages/man2/futex.2.html 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.
* rtems: Fix partitions with RTEMS_MULIPROCESSINGSebastian Huber2021-08-311-1/+1
| | | | Replace call to removed _Partition_Free() with a call to _Objects_Free().
* psxtests/psxconfstr: Fix test caseSebastian Huber2021-08-301-13/+12
| | | | Update #3373.
* smpfatal01: Fix test time out on sparc/leon3Sebastian Huber2021-08-301-1/+1
| | | | | End the test on the processor which triggers the test condition. This avoids endless power down loops in the sparc/leon3 BSP.
* libmisc/shell: Check the shell command pointers when adding a commandChris Johns2021-08-211-0/+5
|
* libmisc/fdt: fix node initialise error with RTEMS_DEBUGChris Johns2021-08-211-0/+2
|
* cpukit/mghttpd: Support all descriptors in selectChris Johns2021-08-191-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
* aarch64/versal: Enable TX and RX FIFOsChris Johns2021-08-191-5/+8
| | | | - Wait for the tx holding register to empty in a tx flush
* bsps/raspberrypi: Add SEV Instruction for RPi SMP firmware changes.pranav2021-08-181-0/+1
| | | | | | The Pi firmware added a wfe(wait for event), the cores 1-3 wait for the start address being written to the mailbox register, followed by a SEV poke to the mailbox that acts as a wfe wake-up event.
* confstr() support for RTEMSEshan dhawan2021-08-1810-0/+277
| | | | | | | | Closes #3373 confstr() style update Signed-off-by: Eshan Dhawan <eshandhawan51@gmail.com>
* score: Delete unused rtems_ada_selfSebastian Huber2021-08-181-5/+0
|
* score: Make zombie registry observableSebastian Huber2021-08-182-16/+40
| | | | | | This helps to write tests for _Thread_Wait_for_execution_stop(). Rename Thread_Zombie_control in Thread_Zombie_registry.
* score: Simplify _Thread_Kill_zombies()Sebastian Huber2021-08-181-8/+11
|
* score: Simplify _Per_CPU_Wait_for_job()Sebastian Huber2021-08-181-1/+0
| | | | | The _SMP_Fatal() is a no-return function, so the "break" statement is superfluous.
* score: Simplify _Thread_Create_idle_for_CPU()Sebastian Huber2021-08-181-7/+1
| | | | Online processors have a scheduler assigned.
* build: Merge default-by-family into by-variantSebastian Huber2021-08-18762-768/+7
| | | | | | | Prefix the BSP family name with "bsps/" to make it distinct to the BSP variant names. Update #4468.
* bsp/leon3: Fix rtems_interrupt_is_pending()Sebastian Huber2021-08-121-6/+0
| | | | | | Take the interrupt force register into account in all configurations. Update #3269.
* 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-123-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.
* score: Replace priority prepend it with an enumSebastian Huber2021-08-1214-104/+144
| | | | | | | | 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.
* rtems: Fix rtems_partition_return_buffer()Sebastian Huber2021-08-125-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.
* bsps/arm: More robust SMP startSebastian Huber2021-08-123-11/+16
| | | | | Do not continue execution on processors which are not configured to prevent the use of arbitrary memory for the initialization stack.
* Test needed for timer_create with CLOCK_MONOTONCZacchaeus Leung2021-08-115-19/+64
| | | | | | | | the timer_create() method can use CLOCK_MONOTONIC but there was no test for this. Also it implements the functionality to create a CLOCK_MONOTONIC timer and gettime() . Closes #3888
* bsps: Move optfdt* files to shared parent directorypranav2021-08-0924-246/+26
|
* Turn off executable permissions for a number of source filesJoel Sherrill2021-08-09135-0/+0
| | | | | | | Cloning under Cygwin turned off executable permission on these files. This shows them as modified even though they have not explicitly been touched. Executable permission should not have been on for these files so this is just a minor clean up.
* score: Disable interrupts in SMP shutdownSebastian Huber2021-08-031-0/+5
|
* rtems: Generate <rtems/bspIo.h>Sebastian Huber2021-08-028-91/+324
| | | | | | | | | | | | Change license to BSD-2-Clause according to file histories and documentation re-licensing agreement. Place the group into the I/O Manager group. Add all source files to the group. Update #3899. Update #3993. Update #4482.
* sptests: CONFIGURE_MEMORY_PER_TASK_FOR_SCHEDULERSebastian Huber2021-07-302-4/+0
| | | | | | Remove obsolete CONFIGURE_MEMORY_PER_TASK_FOR_SCHEDULER application configuration option which is unsupported since commit 69aa33490b1cd357519ab70b15ad150e11bb752e.
* bsps/cache: Optimize smp_cache_broadcast()Sebastian Huber2021-07-291-1/+2
| | | | | Directly call the handler on the executing processor instead of doing this indirectly via a per-CPU job.
* score: Change _SMP_Send_message() parameter typeSebastian Huber2021-07-295-14/+19
| | | | | Use the processor control to specify the target processor since this is what the callers have available.
* score: Assert job properties in _Per_CPU_Add_job()Sebastian Huber2021-07-291-0/+2
|
* score: Add _Per_CPU_Submit_job()Sebastian Huber2021-07-297-22/+30
|
* score: Split SMP multicast action moduleSebastian Huber2021-07-296-32/+160
| | | | | Split up the SMP multicast action module since the use of the SMP multicast action variants depend on the architecture and BSP.
* score: Return value in _SMP_Process_message()Sebastian Huber2021-07-281-0/+2
|
* score: Canonicalize _CPU_Fatal_halt()Sebastian Huber2021-07-2856-322/+250
| | | | | | | | Move _CPU_Fatal_halt() declaration to <rtems/score/cpuimpl.h> and make sure it is a proper declaration of a function which does not return. Fix the type of the error code. If necessary, add the implementation to cpu.c. Implementing _CPU_Fatal_halt() as a function makes it possible to wrap this function for example to fully test _Terminate().
* score: Move per-CPU jobs supportSebastian Huber2021-07-284-88/+130
| | | | Add percpujobs.c to contain the per-CPU jobs implementation.
* score: Remove SMP message multicast/broadcastSebastian Huber2021-07-282-61/+1
| | | | | Remove the unused _SMP_Send_message_multicast() and _SMP_Send_message_broadcast().
* score: Simplify SMP processor state handlingSebastian Huber2021-07-2810-250/+270
| | | | | | | | 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-2817-137/+61
| | | | | | 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.
* libcsupport: Consistent rtems_putc() outputSebastian Huber2021-07-281-16/+34
| | | | | | | | | Use the same function to output the '\r\n' combination produced by rtems_putc(). Fix the format. Change licence according to file history. Update #3053.
* libcsupport: Fix TOCTOU in getchark()Sebastian Huber2021-07-281-8/+13
| | | | | | | Use the same function pointer value to check against NULL and call the function (if non-NULL). Fix format, add Doxygen comments, and reduce includes.
* score: Remove _Internal_errors_What_happenedSebastian Huber2021-07-283-29/+2
| | | | | | | | | | 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.