Page 1 of 1

События системы

Posted: Mon Mar 26, 2012 10:32 pm
by Mario
Во-первых, я тут обнаружил одну вещь.
SVN r. 1067 товарищ Galkov, давно не появляющийся на форуме, похерил пару pushfd/popfd изолирующих систему от последствий вызова CLI. Сопроводил он это броским комментарием "а нафига?", а в лог SVN гордо написал "event - small optimization, not more".

Действительно, нафига системе лишняя работа с прерываниями? Она может повернутся к ним нижней частью спины и остаться тет-а-тет с приложением, вызвавшим 72 функцию, еще немного времени. :lol:

Если у более опытных товарищей нет возражений, то я это изменение откачу назад.

Во-вторых
Меня всегда интересовало неуловимое событие:
5 = перерисовывается фон рабочего стола (сбрасывается автоматически после перерисовки, так что если во время перерисовки фона программа не ждёт и не проверяет события, то этого события она не заметит)
Неуловимое в общем то по двум причинам: потому что неуловимый Джо и потому что действительно трудно поймать.
Ценность для приложения по сути нулевая. Я не знаю приложений которые это используют. Я хочу сделать так, чтобы событие всегда возвращалось всем потокам (у которых установлен соответствующий бит чрез ф.40), когда закончится перерисовка фона. Если вы знаете такие приложения, то просьба сообщить, чтобы не сломать работающих механизмов.

Итак жду мнения товарищей разработчиков.

Re: События системы

Posted: Mon Mar 26, 2012 11:21 pm
by Mario
SVN r. 2508 Fix for. r. 1067. Using of the CLI command, without pushfd/popfd - It's a Mad, Mad, Mad, Mad World!

Рискнул поправить первую часть первого поста темы.

Варианты:
1) Я прав!
2) Я прав!
2) Я прав!
2) Я прав!
Выбирайте какой по душе.
:mrgreen:

Re: События системы

Posted: Tue Mar 27, 2012 1:48 pm
by Serge
Mario
1)Может заодно и /blkdev исправишь ? Там тебе код наверняка знаком :D
2)Поддерживаю. Событие специфическое и годится для десктоп приложения. А остальным без надобности.

Re: События системы

Posted: Tue Mar 27, 2012 1:53 pm
by Mario
Serge wrote:Mario
1)Может заодно и /blkdev исправишь ? Там тебе код наверняка знаком :D
Что же ты раньше молчал? Партизан! :lol:

Вообще то мысли были прошерстить ядро, но на все как всегда времени не хватает.

Re: События системы

Posted: Tue Mar 27, 2012 3:08 pm
by art_zh
Galkov ушел на Оберон и пользуется там баальшим аффтаритетом.
Здесь его оптимизаторство не оценили. :(
Суперкласс: выпнуть костыль "потомучтозачем?", даже не разобравшись что он что-то держал.

Re: События системы

Posted: Tue Mar 27, 2012 3:16 pm
by Mario
Я не утверждал что я сильно умнее - Сергей выше ткнул меня носом в мое творчество давностью в несколько лет. Однако у меня хотя бы разблокировка идет, парное CLI/STI.

Re: События системы

Posted: Tue Mar 27, 2012 11:17 pm
by Mario
Mario wrote:Я хочу сделать так, чтобы событие всегда возвращалось всем потокам (у которых установлен соответствующий бит чрез ф.40), когда закончится перерисовка фона.
Сделал в SVN r. 2513.

Re: События системы

Posted: Wed Mar 28, 2012 2:57 am
by Mario
Serge wrote:1)Может заодно и /blkdev исправишь ? Там тебе код наверняка знаком :D
Что то я передумал трогать этот устоявшийся код - он достаточно стабилен, а все мои попытки сделать лучшее (враг хорошего!) вылились в кучу глюков еще в Qemu. Так что ну нафик! Иногда стоит соблюдать принцип "Работает? Не рожь!"

Re: События системы

Posted: Wed Mar 28, 2012 7:36 pm
by Mario
SVN r. 2515 Function 15.8 - Get coordinates of last draw the background
Получение предельных координат последней восстановленной области фона. Для достоверности данных должно быть вызвано приложением сразу при получении события 5.
Описание читать в документационной части исходников ядра.

Re: События системы

Posted: Mon Apr 02, 2012 2:02 am
by Mario
SVN r. 2537 оптимизация ф.15.8. Теперь вероятность того что приложение успеет получить правильные данные, до следующей перерисовки фона, значительно возросла.