Skip to content

Commit 5182180

Browse files
committed
Minor bugfixes
1 parent 69adc49 commit 5182180

1 file changed

Lines changed: 28 additions & 13 deletions

File tree

CMSIS/RTOS2/FreeRTOS/Source/cmsis_os2.c

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,15 @@ osStatus_t osKernelInitialize (void) {
100100
stat = osErrorISR;
101101
}
102102
else {
103-
#if defined(RTE_RTOS_FreeRTOS_HEAP_5)
104-
vPortDefineHeapRegions (xHeapRegions);
105-
#endif
106-
KernelState = osKernelReady;
107-
stat = osOK;
103+
if (KernelState == osKernelInactive) {
104+
#if defined(RTE_RTOS_FreeRTOS_HEAP_5)
105+
vPortDefineHeapRegions (xHeapRegions);
106+
#endif
107+
KernelState = osKernelReady;
108+
stat = osOK;
109+
} else {
110+
stat = osError;
111+
}
108112
}
109113

110114
return (stat);
@@ -170,9 +174,13 @@ osStatus_t osKernelStart (void) {
170174
stat = osErrorISR;
171175
}
172176
else {
173-
KernelState = osKernelRunning;
174-
vTaskStartScheduler();
175-
stat = osOK;
177+
if (KernelState == osKernelReady) {
178+
KernelState = osKernelRunning;
179+
vTaskStartScheduler();
180+
stat = osOK;
181+
} else {
182+
stat = osError;
183+
}
176184
}
177185

178186
return (stat);
@@ -214,10 +222,12 @@ int32_t osKernelUnlock (void) {
214222
else {
215223
switch (xTaskGetSchedulerState()) {
216224
case taskSCHEDULER_SUSPENDED:
217-
if (xTaskResumeAll() == pdTRUE) {
218-
lock = 1;
219-
} else {
220-
lock = (int32_t)osError;
225+
lock = 1;
226+
227+
if (xTaskResumeAll() != pdTRUE) {
228+
if (xTaskGetSchedulerState() == taskSCHEDULER_SUSPENDED) {
229+
lock = (int32_t)osError;
230+
}
221231
}
222232
break;
223233

@@ -248,9 +258,14 @@ int32_t osKernelRestoreLock (int32_t lock) {
248258
vTaskSuspendAll();
249259
}
250260
else {
251-
if ((lock != 0) || (xTaskResumeAll() != pdTRUE)) {
261+
if (lock != 0) {
252262
lock = (int32_t)osError;
253263
}
264+
else if (xTaskResumeAll() != pdTRUE) {
265+
if (xTaskGetSchedulerState() != taskSCHEDULER_RUNNING) {
266+
lock = (int32_t)osError;
267+
}
268+
}
254269
}
255270
break;
256271

0 commit comments

Comments
 (0)