Цитата(dxp @ Apr 6 2007, 17:49)

Мутексом надо обрамлять не вызов фунции, а обращение к совместно используемому ресурсу - к порту в данном случае.
Понимаю. Но внутри этой функции и идет собственно оьращение к ресурсу. А точнее обращение к регистру, которым включается/отключается UART.
Цитата(dxp @ Apr 6 2007, 17:49)

Внутри этого кода (защищаемого мутексом) Вы же не отдаете сами управление? Тогда как другой процесс будет что-то вызывать? А если там произойдет вытеснение и другой процесс попытается захватить мутекс, то он (процесс) наткнется на залоченное состояние и будет поставлен на ожидание анлока и управление снова вернется в наш процесс, откуда вытеснили. При выполнении анлока управление попадет в тот ожидающий более приоритетный процесс. Вот и разделение доступа к ресурсу.
А речь даже не о другом процессе пока. Пока рассматриваем только один единственный. В нем вызвалась первая функция, работающая с портом, мютекс залочился. И затем вызвалась вторая , в которой тоже лочится мютекс. Вот тут и проблема. Скажете, а зачем во второй функции лочить мютекс, если она уже вызывается из того места где он залочен? Потому что эта вторая функция может вызываться не тока оттуда.
Я понимаю, что тут скорее всего ошибка проектирования... или чето в этом духе. Но хочется понять как правильно в такой ситуации поступать.