Skip to content

Commit bc9302e

Browse files
committed
Add task stack high water mark feature
1 parent 0d383e5 commit bc9302e

File tree

11 files changed

+37
-34
lines changed

11 files changed

+37
-34
lines changed

freertos-cargo-build/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
license = "MIT"
77
name = "freertos-build"
88
readme = "README.md"
9-
version = "0.4.2"
9+
version = "0.4.3"
1010

1111
[lib]
1212

freertos-cargo-build/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@ fn add_include_with_rerun<P: AsRef<Path>>(build: &mut Build, dir: P) {
375375
fn setup_all_define(cc: &mut cc::Build) {
376376
sync_define(cc, "INCLUDE_vTaskDelete");
377377
sync_define(cc, "INCLUDE_vTaskDelayUntil");
378+
sync_define(cc, "INCLUDE_uxTaskGetStackHighWaterMark");
378379
cc.define("INCLUDE_vTaskDelay", "1");
379380
}
380381

freertos-rust-examples/examples/linux/FreeRTOSConfig.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ functions anyway. */
125125
#define INCLUDE_uxTaskPriorityGet 1
126126
#define INCLUDE_vTaskCleanUpResources 0
127127
#define INCLUDE_vTaskSuspend 1
128-
#define INCLUDE_uxTaskGetStackHighWaterMark 1
129128
#define INCLUDE_xTaskGetSchedulerState 1
130129
#define INCLUDE_xTimerGetTimerDaemonTaskHandle 1
131130
#define INCLUDE_xTaskGetIdleTaskHandle 1

freertos-rust-examples/examples/nrf9160/FreeRTOSConfig.h

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -133,18 +133,17 @@ extern void vAssertCalled(const char *file, int linenum);
133133
* to exclude the API function. NOTE: Setting an INCLUDE_ parameter to 0 is
134134
* only necessary if the linker does not automatically remove functions that are
135135
* not referenced anyway. */
136-
#define INCLUDE_vTaskPrioritySet 1
137-
#define INCLUDE_uxTaskPriorityGet 1
138-
#define INCLUDE_vTaskCleanUpResources 0
139-
#define INCLUDE_vTaskSuspend 1
140-
#define INCLUDE_uxTaskGetStackHighWaterMark 0
141-
#define INCLUDE_xTaskGetIdleTaskHandle 0
142-
#define INCLUDE_eTaskGetState 1
143-
#define INCLUDE_xTaskResumeFromISR 0
144-
#define INCLUDE_xTaskGetCurrentTaskHandle 1
145-
#define INCLUDE_xTaskGetSchedulerState 0
146-
#define INCLUDE_xSemaphoreGetMutexHolder 0
147-
#define INCLUDE_xTimerPendFunctionCall 1
136+
#define INCLUDE_vTaskPrioritySet 1
137+
#define INCLUDE_uxTaskPriorityGet 1
138+
#define INCLUDE_vTaskCleanUpResources 0
139+
#define INCLUDE_vTaskSuspend 1
140+
#define INCLUDE_xTaskGetIdleTaskHandle 0
141+
#define INCLUDE_eTaskGetState 1
142+
#define INCLUDE_xTaskResumeFromISR 0
143+
#define INCLUDE_xTaskGetCurrentTaskHandle 1
144+
#define INCLUDE_xTaskGetSchedulerState 0
145+
#define INCLUDE_xSemaphoreGetMutexHolder 0
146+
#define INCLUDE_xTimerPendFunctionCall 1
148147

149148
/* This demo makes use of one or more example stats formatting functions. These
150149
* format the raw data provided by the uxTaskGetSystemState() function in to

freertos-rust-examples/examples/stm32-cortex-m3/FreeRTOSConfig.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,11 @@ extern void set_PA0_dbgOut(bool onOff);
149149
/* Set the following definitions to 1 to include the API function, or zero
150150
to exclude the API function. */
151151

152-
#define INCLUDE_vTaskPrioritySet 1
153-
#define INCLUDE_uxTaskPriorityGet 1
154-
#define INCLUDE_vTaskCleanUpResources 0
155-
#define INCLUDE_vTaskSuspend 1
156-
#define INCLUDE_uxTaskGetStackHighWaterMark 1
157-
#define INCLUDE_eTaskGetState 1
152+
#define INCLUDE_vTaskPrioritySet 1
153+
#define INCLUDE_uxTaskPriorityGet 1
154+
#define INCLUDE_vTaskCleanUpResources 0
155+
#define INCLUDE_vTaskSuspend 1
156+
#define INCLUDE_eTaskGetState 1
158157

159158
/* Use the system definition, if there is one */
160159
// #ifdef __NVIC_PRIO_BITS

freertos-rust-examples/examples/stm32-cortex-m4-blackpill/FreeRTOSConfig.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,11 @@ extern void set_PA0_dbgOut(bool onOff);
149149
/* Set the following definitions to 1 to include the API function, or zero
150150
to exclude the API function. */
151151

152-
#define INCLUDE_vTaskPrioritySet 1
153-
#define INCLUDE_uxTaskPriorityGet 1
154-
#define INCLUDE_vTaskCleanUpResources 0
155-
#define INCLUDE_vTaskSuspend 1
156-
#define INCLUDE_uxTaskGetStackHighWaterMark 1
157-
#define INCLUDE_eTaskGetState 1
152+
#define INCLUDE_vTaskPrioritySet 1
153+
#define INCLUDE_uxTaskPriorityGet 1
154+
#define INCLUDE_vTaskCleanUpResources 0
155+
#define INCLUDE_vTaskSuspend 1
156+
#define INCLUDE_eTaskGetState 1
158157

159158
/* Use the system definition, if there is one */
160159
// #ifdef __NVIC_PRIO_BITS

freertos-rust-examples/examples/win/FreeRTOSConfig.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ functions anyway. */
101101
#define INCLUDE_uxTaskPriorityGet 1
102102
#define INCLUDE_vTaskCleanUpResources 0
103103
#define INCLUDE_vTaskSuspend 1
104-
#define INCLUDE_uxTaskGetStackHighWaterMark 1
105104
#define INCLUDE_xTaskGetSchedulerState 1
106105
#define INCLUDE_xTimerGetTimerDaemonTaskHandle 1
107106
#define INCLUDE_xTaskGetIdleTaskHandle 1

freertos-rust/Cargo.toml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ The freertos-build crate can be used to build and link FreeRTOS from source insi
1010
links = "freertos"
1111
name = "freertos-next"
1212
readme = "README.md"
13-
version = "0.7.3"
13+
version = "0.7.4"
1414

1515

1616
[lib]
@@ -21,7 +21,13 @@ The freertos-build crate can be used to build and link FreeRTOS from source insi
2121
default = ["minimum"]
2222

2323
minimum = ["allocator", "sync", "time"]
24-
standard = ["minimum", "hooks", "delete_task", "critical_section_impl"]
24+
standard = [
25+
"minimum",
26+
"hooks",
27+
"delete_task",
28+
"stack_high_water",
29+
"critical_section_impl",
30+
]
2531

2632
allocator = []
2733
cpu_clock = []
@@ -30,6 +36,7 @@ The freertos-build crate can be used to build and link FreeRTOS from source insi
3036
delete_task = []
3137
hooks = []
3238
interrupt = []
39+
stack_high_water = []
3340
sync = ["interrupt"]
3441
time = ["interrupt"]
3542

freertos-rust/build.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ fn main() {
2626
let feature_define_map = HashMap::from([
2727
("delete_task", "INCLUDE_vTaskDelete"),
2828
("delay_until", "INCLUDE_vTaskDelayUntil"),
29+
("stack_high_water", "INCLUDE_uxTaskGetStackHighWaterMark"),
2930
]);
3031

3132
for (ft, def) in feature_define_map.iter() {

freertos-rust/src/freertos/shim.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -236,14 +236,11 @@ void freertos_rs_suspend_task(TaskHandle_t task) {
236236
vTaskSuspend(task);
237237
}
238238

239-
UBaseType_t freertos_rs_get_stack_high_water_mark(TaskHandle_t task) {
240239
#if (INCLUDE_uxTaskGetStackHighWaterMark == 1)
240+
UBaseType_t freertos_rs_get_stack_high_water_mark(TaskHandle_t task) {
241241
return uxTaskGetStackHighWaterMark(task);
242-
#else
243-
(void)task;
244-
return 0;
245-
#endif
246242
}
243+
#endif
247244

248245
QueueHandle_t freertos_rs_queue_create(UBaseType_t queue_length, UBaseType_t item_size) {
249246
return xQueueCreate(queue_length, item_size);

0 commit comments

Comments
 (0)