Skip to content

Commit a851a92

Browse files
Merge latest FreeRTOS/SMP upstream branch (#1449)
Update to head of upstream FreeRTOS/SMP branch. Very minor changes. Remove the custom getreent implementation, use the one that was defined in the upstream FreeRTOS/smp branch (callback related vs. static vars).
1 parent 16c2e8e commit a851a92

File tree

5 files changed

+18
-5
lines changed

5 files changed

+18
-5
lines changed

cores/rp2040/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ extern "C" void __register_impure_ptr(struct _reent *p) {
162162
}
163163
}
164164

165+
extern "C" struct _reent *__wrap___getreent() __attribute__((weak));
165166
extern "C" struct _reent *__wrap___getreent() {
166167
if (get_core_num() == 0) {
167168
return _impure_ptr;

libraries/FreeRTOS/keywords.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ pcTaskGetName KEYWORD2
3636
ulTaskNotifyTake KEYWORD2
3737
vTaskNotifyGiveFromISR KEYWORD2
3838
taskYIELD KEYWORD2
39+
vTaskCoreAffinitySet KEYWORD2
3940
vTaskSuspend KEYWORD2
4041
vTaskResume KEYWORD2
4142
xTaskResumeFromISR KEYWORD2
4243
xTaskGetTickCount KEYWORD2
4344
xTaskGetTickCountFromISR KEYWORD2
4445
uxTaskGetNumberOfTasks KEYWORD2
4546
uxTaskGetStackHighWaterMark KEYWORD2
47+
uxTaskGetSystemState KEYWORD2
4648

4749
# Instances (KEYWORD2)
4850

libraries/FreeRTOS/src/FreeRTOSConfig.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,7 @@
2929
#define configUSE_TASK_PREEMPTION_DISABLE 1
3030

3131
#define configUSE_NEWLIB_REENTRANT 1
32-
#define configNEWLIB_REENTRANT_IS_DYNAMIC 0 /* Note that we have a different config option, portSET_IMPURE_PTR */
33-
#include <reent.h>
34-
extern void __register_impure_ptr(struct _reent *p);
35-
#define portSET_IMPURE_PTR(x) __register_impure_ptr(x)
32+
#define configNEWLIB_REENTRANT_IS_DYNAMIC 1
3633

3734
/* Run time stats related definitions. */
3835
void vMainConfigureTimerForRunTimeStats(void);

libraries/FreeRTOS/src/tasks.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,14 @@
11
#include "../lib/FreeRTOS-Kernel/tasks.c"
2+
3+
//See https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/496
4+
struct _reent* __wrap___getreent(void) {
5+
// No lock needed because if this changes, we won't be running anymore.
6+
TCB_t *pxCurTask = xTaskGetCurrentTaskHandle();
7+
if (pxCurTask == NULL) {
8+
// No task running. Return global struct.
9+
return _GLOBAL_REENT;
10+
} else {
11+
// We have a task; return its reentrant struct.
12+
return &pxCurTask->xNewLib_reent;
13+
}
14+
}

0 commit comments

Comments
 (0)