Skip to content

Commit 8a72204

Browse files
committed
Support nesting osKernelLock, osKernelUnlock and osKernelRestoreLock calls
1 parent 311a2eb commit 8a72204

1 file changed

Lines changed: 7 additions & 9 deletions

File tree

CMSIS/RTOS2/FreeRTOS/Source/cmsis_os2.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,8 @@ int32_t osKernelLock (void) {
329329
else {
330330
switch (xTaskGetSchedulerState()) {
331331
case taskSCHEDULER_SUSPENDED:
332+
/* Suspend scheduler or increment nesting level */
333+
vTaskSuspendAll();
332334
lock = 1;
333335
break;
334336

@@ -361,12 +363,8 @@ int32_t osKernelUnlock (void) {
361363
switch (xTaskGetSchedulerState()) {
362364
case taskSCHEDULER_SUSPENDED:
363365
lock = 1;
364-
365-
if (xTaskResumeAll() != pdTRUE) {
366-
if (xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED) {
367-
lock = (int32_t)osError;
368-
}
369-
}
366+
/* Resume scheduler or decrement nesting level */
367+
(void)xTaskResumeAll();
370368
break;
371369

372370
case taskSCHEDULER_RUNNING:
@@ -396,9 +394,8 @@ int32_t osKernelRestoreLock (int32_t lock) {
396394
switch (xTaskGetSchedulerState()) {
397395
case taskSCHEDULER_SUSPENDED:
398396
if (lock == 0) {
399-
if (xTaskResumeAll() != pdTRUE) {
400-
lock = (int32_t)osError;
401-
}
397+
/* Resume scheduler or decrement nesting level */
398+
(void)xTaskResumeAll();
402399
}
403400
else {
404401
if (lock != 1) {
@@ -409,6 +406,7 @@ int32_t osKernelRestoreLock (int32_t lock) {
409406

410407
case taskSCHEDULER_RUNNING:
411408
if (lock == 1) {
409+
/* Suspend scheduler or increment nesting level */
412410
vTaskSuspendAll();
413411
}
414412
else {

0 commit comments

Comments
 (0)