-
Notifications
You must be signed in to change notification settings - Fork 0
[pull] main from FreeRTOS:main #70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Codecov Report
📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more @@ Coverage Diff @@
## main #70 +/- ##
==========================================
+ Coverage 94.30% 94.46% +0.16%
==========================================
Files 6 6
Lines 2370 2422 +52
Branches 579 594 +15
==========================================
+ Hits 2235 2288 +53
Misses 85 85
+ Partials 50 49 -1
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 4 files with indirect coverage changes 📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
Remove lint suppression comment
Update alignment in ARM_CA9 port.
Verify that the application has correctly installed PendSV and SVCall handlers. The application can choose to disable these checks by setting configCHECK_HANDLER_INSTALLATION to 0 in their FreeRTOSConfig.h.
This commit adds a portTASK_SWITCH_HOOK() macro which allows ports to inject behavior immediately after a context switch. For example, this macro could be used by ports that need to set an end of stack watchpoint after a context swtich. Co-authored-by: Rahul Kar <[email protected]> Co-authored-by: Soren Ptak <[email protected]> Co-authored-by: chinglee-iot <[email protected]> Co-authored-by: Tony Josi <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]>
* Remove the sample smp configuration folder
* Update sample configuration file in the examples folder * Add SMP Configuration definitions * Fix build issue in cmake example * Add CoRoutine Configuration definitions * Code review suggestions Signed-off-by: Gaurav Aggarwal <[email protected]> * Fix formatting Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Gaurav Aggarwal <[email protected]> Co-authored-by: Gaurav Aggarwal <[email protected]>
* Rename sample configuration to template configuration * Rename sample configuration to template configuration in cmake example file
* Update History.txt for v11.0.0
* Update History for V11.0.1
* GCC: MSP430F449: Add missing attributes Apparently at some point in the past, GCC (or TI's GCC) used to define these attributes. Define them ourselves so that we can compile the demo application. * GCC: MSP430F449: Make interrupts return void If a return type of a function is not specified, it defaults to int. Set the return type of interrupts to void to avoid warnings. * GCC: MSP430F449: Define portPOINTER_SIZE_TYPE portPOINTER_SIZE_TYPE defaults to uint32_t if undefined. Define it to uint16_t, which is correct for this port.
#934) Remove the idle_task_static_memory.c and use the new default implementations to allows for FreeRTOS-Kernel-Static to be used with configNUMBER_OF_CORES > 1
Export the PRIVILEGED_FUNCTION, PRIVILEGED_DATA, and FREERTOS_SYSTEM_CALL attributes to make it easier for end users to add their own privileged functions and system calls.
* fix whitespace in asm macros * Revert formatting ARM_CA5_No_GIC and ARM_CA9
Co-authored-by: Rahul Kar <[email protected]>
…940) * Introduce portHAS_NESTED_INTERRUPTS to identify if port has nested interrupt or not. * Update atomic.h to use portHAS_NESTED_INTERRUPTS instead of portSET_INTERRUPT_MASK_FROM_ISR definition. --------- Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]> Co-authored-by: ActoryOu <[email protected]>
* Added possibility to change notification index for streambuffers * Uncrustify: triggered by comment. * Minor code review suggestions. Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Gaurav Aggarwal <[email protected]> Co-authored-by: GitHub Action <[email protected]> Co-authored-by: Aniruddha Kanhere <[email protected]> Co-authored-by: Gaurav Aggarwal <[email protected]>
Co-authored-by: Rahul Kar <[email protected]>
…ling with non-FreeRTOS pthreads Improve upon the elegant approach of using signals to cause task/pthreads suspension and scheduler execution by using directed signals. This fixes: - Deadlocks in non-FreeRTOS pthreads - Multiple FreeRTOS tasks(pthreads) incorrectly running at the same time By directing the signals using pthread_kill() the signal handler in the presently running FreeRTOS task/pthread will be called, ensuring that the scheduler runs both in the context of a FreeRTOS task/pthread and from the presently executing FreeRTOS task/pthread. Details ============== The POSIX port uses signals to preempt FreeRTOS tasks (implemented as pthreads), a very neat and elegant approach to forcing tasks/pthreads to suspend and run the scheduler. Signal handlers are process global. Posix timers generate signals when the timer expires, and the signal is sent to the currently running pthread. In systems where there are pthreads that are NOT a result of creating FreeRTOS tasks, such as the entry point thread that calls main(), or user created pthreads, this poses a serious issue. While the POSIX port only allows a single FreeRTOS pthread to run at once, by causing all suspended threads to not be scheduled due to their waiting on a pthread condition variable, this isn't the case with non-FreeRTOS pthreads. Thus it is possible that a non-FreeRTOS pthread is running when the timer expires and the signal is generated. This results in the signal handler running in the non-FreeRTOS thread. The sequence of events results in these events from signal handler context: - vPortSystemTickHandler() being called - The scheduler running - Selecting another FreeRTOS task to run and switching the active task - The newly selected task released from suspension by pthread_cond_signal() - The presently active thread calling event_wait() - The pthread calling pthread_cond_wait(), suspending the thread and allowing the host OS scheduler to schedule another thread to run. If this occurs from a non-FreeRTOS thread this results in: - The active FreeRTOS pthread (Task A/Thread A) continuing to run (as the signal handler that calls event_wait() ran instead in a non-FreeRTOS pthread. - The pthread where the signal handler did run (Thread B) will call event_wait() and pthread_cond_wait(), but on the condition variable of the previously active FreeRTOS task, oops. This causes the non-FreeRTOS pthread to block unexpectedly relative to what the developer might have expected. - The newly selected FreeRTOS Task (Task C/Thread C) will resume and start running. At this point Task A/Thread A is running concurrently with Task C/Thread C. While this may not necessarily be an issue, it does not replicate the expected behavior of a single Task running at once. Note that Thread B will resume if/when Task A/ThreadA is switched to. However, this could be delayed by an arbitrary amount of time, or could never occur. Also note that if there are multiple non-FreeRTOS pthreads that Thread D, E, F...etc could suffer the same fate as Thread B, if the scheduler were to suspend Task C/Thread C and resume Task E/Thread E. Implementation ============== Timer details ------------- A standalone pthread for the signal generation thread was chosen, rather than using a posix timer_settime() handler function because the latter creates a temporary pthread for each handler callback. This makes debugging much more difficult due to gdb detecting the creation and destruction of these temporary threads. Signal delivery -------------- While signal handlers are per-thread, it is possible for pthreads to selectively block signals, rather than using thread directed signals. However, the approach of blocking signals in non-FreeRTOS pthreads adds complexity to each of these non-FreeRTOS pthreads including ensuring that these signals are blocked at thread creation, prior to the thread starting up. Directed signals removes the requirement for non-FreeRTOS pthreads to be aware of and take action to protect against these signals, reducing complexity.
For a clean shutdown where memory is freed, it is necessary for all pthreads to be joined at shutdown. Previously there was explicit cancellation of the idle task and timer daemon task, however there may be a number of other tasks in the system, both system created and user created, and those tasks/threads were being left at shutdown. This change calls pthread_cancel()/pthread_join() on all FreeRTOS managed pthreads upon shutdown.
Fix the context array size for MPU ports Ensure the saved context location falls within the reserved context area rather than overlapping with the next MPU_SETTINGS structure member. This never caused a problem because actual read/write operations start from one word before the saved context location. Signed-off-by: Gaurav Aggarwal <[email protected]>
…-Kernel#1220 (#1232) Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]>
Mark mutex as robust to prevent deadlocks Prevent application hangs that occur when a thread dies while holding a mutex, particularly during vTaskEndScheduler or exit calls. This is achieved by setting the PTHREAD_MUTEX_ROBUST attribute on the mutex. Fixes: - GitHub issue: #1217 - Forum thread: freertos.org/t/22287 Signed-off-by: Gaurav Aggarwal <[email protected]>
Reinstates PR #142 that was reverted in #143 Co-authored-by: Ben Nicholls <[email protected]>
On FreeBSD pthread_once_t is a struct and cast is required. Otherwise there's compilation error: ../../mocks/freertos/port.c:261:23: error: expected expression hSigSetupThread = PTHREAD_ONCE_INIT; ^ PTHREAD_ONCE_INIT is defined as: { PTHREAD_NEEDS_INIT, NULL } on FreeBSD Co-authored-by: Jakub Tymejczyk <[email protected]>
…n in Community-Supported-Ports (#1243) - The newer version looks in Community-Supported-Ports too Co-authored-by: graham sanderson <[email protected]>
…#1241) This commit updates the definition of taskRESERVED_TASK_NAME_LENGTH in tasks.c to fix an unreachable preprocessor condition. Signed-off-by: Sudeep Mohanty <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]>
While using the macOS default LLDB debugger, a call to vTaskEndScheduler results in an unhandled SIGUSR1 (aka SIGRESUME) when restoring the scheduler thread's signals with pthread_sigmask. This crashes the program. Added instructions in portable/ThirdParty/GCC/Posix/port.c to suppress SIGUSR1 to prevent LLDB debugger interference when exiting xPortStartScheduler Thanks to: @johnboiles for pointing it out in #1224
* Include current task runtime in ulTaskGetRunTimeCounter Update ulTaskGetRunTimeCounter to include elapsed time since the last context switch when called for the currently running task. Previously, this time was not included in the calculation. Fixes #1202. Signed-off-by: Gaurav Aggarwal <[email protected]>
Disable stack overflow check for MPU ports Stack overflow check is not straight forward to implement for MPU ports because of the following reasons: 1. The context is stroed in TCB and as a result, pxTopOfStack member points to the context location in TCB. 2. System calls are executed on a separate privileged only stack. It is still okay because an MPU region is used to protect task stack which means task stack overflow will trigger an MPU fault. Signed-off-by: Gaurav Aggarwal <[email protected]>
* Fix MISRA violations for Kernel release V11.2.0 * Fix formatting * Remove redundant configASSERT in timers.c
* Add history.txt for release V11.2.0 * Fix spelling Co-authored-by: Ahmed Ismail <[email protected]> --------- Co-authored-by: Ahmed Ismail <[email protected]>
Add an assert o catch overflow of recursive mutex counter.
* port: riscv: Split the number of registers and the size of the context * port: riscv: Create some macros for the FPU context * port: riscv: Add a couple of macros that store fpu context * port: riscv: Update the stack init function to include the fpu context size * port: riscv: Add a chip_specific_extensions file that includes the F extension * Update dictionary to include some risc-v instructions * port: riscv: Fix a few typos * port: riscv: Apply @aggarg's sugestions
Signed-off-by: wangfei_chen <[email protected]> Co-authored-by: wangfei_chen <[email protected]>
RISC-V: refine fpu reg context offset pxCode and mstatus stored at index 0 and 1 are based on XLEN. Therefore, the correct formula to calculate the FPU register index should be ( ( 2 * portWORD_SIZE ) + ( regIndex * portFPU_REG_SIZE ) ). Signed-off-by: wangfei_chen <[email protected]>
Use architecture-dependent UBaseType_t instead of fixed type for ullMachineTimerCompareRegisterBase. This type is defined to uint32_t or uint64_t based on XLEN, resolving warnings on 32-bit platforms. Reported by landretk@ on the PR #1176. Signed-off-by: Gaurav Aggarwal <[email protected]>
FreeRTOS MPU: Remove MPU region number check This change removes the assertion and runtime check that enforces matching between configTOTAL_MPU_REGIONS and physical MPU regions,. This allows applications running on devices with 16 MPU regions to manage 8 MPU regions while leaving the remaining 8 for the kernel. Signed-off-by: Erick Reyes <[email protected]>
port: riscv: Add vector context save support
* Fix race in POSIX port `vPortEndScheduler` The `vPortEndScheduler` checks whether it's a FreeRTOS thread after signalling the scheduler thread to stop. This creates a race between the check and the destruction of the thread key. By moving the signal to the scheduler thread after the check, the race is prevented. * Code review suggestions Signed-off-by: Gaurav Aggarwal <[email protected]> --------- Signed-off-by: Gaurav Aggarwal <[email protected]> Co-authored-by: Gaurav Aggarwal <[email protected]>
fix warnings from "gcc -Wconversion" Signed-off-by: Florian La Roche <[email protected]>
FreeRTOS SMP: direct access to current TCB inside stack macros
The indentation on ASM macro is not authorized by IAR compiler
See Commits and Changes for more details.
Created by
pull[bot]
Can you help keep this open source service alive? 💖 Please sponsor : )