Основные мотивы: разборки с целью понимания происходящяго
Попутно: оптимизация кодов по принципу: "
если нет разницы, то зачем платить больше" (ну, собственно, и снял около 1К из 2-2.5)
Естественно, проводилось устранение мелких и не значительных багов (например: "32-битное переполнение" на таймауте ожиданий, и при определении момента для "next_usage_update")
Поскольку, возникли проблемы с "правильным ожиданием" event-ов, пришлось попутно "изобрести" эту технологию правильного ожидания
На что, кстати говоря, и призываю коллег обратить внимание: ф-я
Wait_events_ex из event.inc предназначена (собственно, она для этого и задумана) для замены
всех call change_task в цикле. Да хоть бы и в том же
wait_mutex...
P.S. shed на предмет RT еще не правил. Это не сложно, НО, в моем понимании, для этого мне следует предварительно и серьезно разобраться с технологией прерываний и исключений.
Чем и занимаюсь...
P.P.S. Да вот, забыл... Изменения в
checkidle не связаны логически с рефракторингом event.inc+shed.inc
Они возникли как бы мимоходом, и сделаны "с листа". И впервые были предложены
здесь
P.P.P.S. Еще одна вещь...
Да, все это писалось по принципу: "
если нет разницы, то зачем платить больше"
Т.е., если в коды и закралась бага, то ее устранение восстанавливает функциональную эквивалентность с предыдущими версиями, и проблем с совместимостью быть просто не должно
Кроме одного момента
Последовательность приема событий в
f10 / f11 / f23 - изменена на обратную
Здесь, теоретически, возможны проблемы с совместимостью.
Мне такие вещи пока не попадались...
НО
если у коллег возникнут непонятки с приемом событий в некой проге, то -
от этого ли они возникли, можно легко проверить, вернув прямой порядок приема событий ((это достигается элементарной заменой
bsr на
bsf в event.inc#line=422))
И потом уже думать, чего делать дальше... Больно уж не правильным мне представляется "прямой порядок".
Опять же, события с "автосбросом" должны БЫ приниматься с более высоким приоритетом, чем требующие для этого сброса неких иных не тривиальных действий.
Для IRQ я это обязательно сделаю, но чуток по-позже... И нечто похожее на систему обрисуется: старшие биты маски - с автосбросом (они же и принимаются в первую очередь), младшие (которых сегодня 3) - нет, и требуют специальных мероприятий для сброса.
К этому моменту можно будет и sysfuncr.txt дополнить соответствующим образом...