Лады, как(если) доберусь до дела. Хотя кое-чего могу сказать
1 Sleep() можно вызвать только из процесса, из вложенной ф-ии только через гимор OS::TBaseProcess::Sleep()
Простой вынос описания этой ф-ии из TBaseProcess в пространство имён OS без(!) изменения её содержимого ликвидирует проблему накорню.
(уже сделал)
2. Ф-ии
void WakeUpProcess (TBaseProcess& p);
void ForceWakeUpProcess (TBaseProcess& p);
bool IsProcessSleeping (const TBaseProcess& p);
bool IsProcessSuspended (const TBaseProcess& p);
Наоборот сделаны в пространстве имён OS... зачем?
хотелось бы вызывать их так
procLedBlink.WakeUpProcess()
Изменений то - всего ничего.
3. Хочу таймауты для ВСЕХ системных вызовов
(добавил для мутексов)
4. Хочу "особые" таймауты
#define NONBLOCK -1U // неблокирующий вызов
#define BLOCK 0U // блокирующий вызов
(добавил)
PS логичнее былобы константы поменять местами - но тогда потеряется совместимость.
5. Нужен системный вызов с комбинированой функциональностью мутекса и флага с единым таймаутом.
Для разного рода очередей.
6. Идущая в комплекте очередь не предназначена для работы с ISR. :-((
(и к томуже не эффективна для байтовых объектов)
Это самая серьёзная претензия, пришлось городить свои реализации очередей.
...Было что-то ещё... уже забыл.
Я с автором списывался, но мои идеи не были восприняты
с восторгом. Автор пообещал некое АПИ для конструирования
системных вызовов, и на этом всё. А я переключился на параллельную
задачу и мне не до того.