pthread: fix the priority inheritance

When `pthread_mutex_destroy` is used to release mutex, `pthread_mutex_lock_internal` is used,
 which results in the increase of `uxmutexehold` and no recovery base priority
pull/6192/head
xutao 2020-08-19 17:42:49 +08:00 zatwierdzone przez bot
rodzic db0fec51e8
commit 28ca70cce5
1 zmienionych plików z 8 dodań i 0 usunięć

Wyświetl plik

@ -593,6 +593,14 @@ int pthread_mutex_destroy(pthread_mutex_t *mutex)
return EBUSY;
}
if (mux->type == PTHREAD_MUTEX_RECURSIVE) {
res = xSemaphoreGiveRecursive(mux->sem);
} else {
res = xSemaphoreGive(mux->sem);
}
if (res != pdTRUE) {
assert(false && "Failed to release mutex!");
}
vSemaphoreDelete(mux->sem);
free(mux);