Здрвствуйте Сергей!
вот начало захвата мутекса:
void
mutex_lock (mutex_t *m)
{
arch_state_t x;
arch_intr_disable (&x);
assert (STACK_GUARD (task_current));
assert (task_current != m->master);
меня смущает последняя строчка - что она означает? что текущая задача не может захватывать захваченный ею же мутекс? рекурсивный захват мутекса - вызовет падение проги?
смущает потому что парой строк ниже вот это:
while (m->master && m->master != task_current) {
и вот это
#if RECURSIVE_LOCKS
assert (m->deep > 0);
#endif