Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Чт апр 27, 2017 3:54 pm

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 67 сообщений ]  На страницу Пред. 1 2 3 4 5 След.
Автор Сообщение
СообщениеДобавлено: Пт сен 02, 2011 3:46 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
CleverMouse,
Огромная просьба (пока еще не поздно) определять интервал в миллисекундах, а не в сотых долях секунды.

Код:
void* TimerHS(unsigned int deltaStart, unsigned int interval,
              void* timerFunc, void* userData);
; Registers a timer which is activated in (deltaStart == 0 ? deltaStart :
; interval) 1/100ths


SII писал(а):
Пользователю обычно удобней иметь единообразные имена независимо от реального типа устройства

Еще пара шагов в этом направлении - и придем к UNIXовской максиме "все устройства суть файлы, а стало быть все драйверы - часть файловой системы".
Пользователю не надо потакать, он должен иметь хотя бы минимальное представление о структуре и составных частях собственной системы. Иначе ядро превратится в KOLIBRIX.


Последний раз редактировалось art_zh Пт сен 02, 2011 3:58 pm, всего редактировалось 1 раз.

Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 3:53 pm 
Не в сети

Зарегистрирован: Ср дек 26, 2007 5:09 am
Сообщения: 214
art_zh писал(а):
Огромная просьба (пока еще не поздно) определять интервал в миллисекундах, а не в сотых долях секунды.


Учитывая производительность процессоров ПК, может, ещё меньше единицы? Задавать, например, в микросекундах, ну а уж с какой точностью реально поддерживается -- пускай определяется реализацией. В конце концов, на ПК, даже промышленных, не решают задачи, где нужно действительно "с точностью до такта" времена выдерживать, поскольку там это попросту невозможно (это не AVRка какая-нибудь), а поэтому, ИМХО, достаточно, чтобы при установке таймера до его срабатывания проходило времени не меньше, чем задано.


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 4:33 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1591
art_zh, если это пожелание к реализации, то высокоточные таймеры в принципе должны быть отдельным API с другим принципом работы. Например, Delay имеет миллисекундную точность. Если реализация устраивает, но самые исходные данные в миллисекундах, то кто-то должен перегонять их в тики таймера, и неясно, почему этим должно заниматься ядро, а не вызывающий код.

_________________
Сделаем мир лучше!


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 4:38 pm 
Не в сети

Зарегистрирован: Ср дек 26, 2007 5:09 am
Сообщения: 214
CleverMouse писал(а):
Если реализация устраивает, но самые исходные данные в миллисекундах, то кто-то должен перегонять их в тики таймера, и неясно, почему этим должно заниматься ядро, а не вызывающий код.


Ядро знает, чему равны тики таймера (оно ж настраивает железо), а вот вызывающий код прикладного уровня (и даже драйверы) этого может и не знать (да и не должен знать то, что прямо к нему не относится). В противном случае при внесении изменений в ядро, связанные с увеличением точности таймера, придётся ещё и прикладной код весь переделывать...


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 4:42 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1591
Насчёт длительности тиков таймера можно не волноваться - она из стольких мест торчит, что её всё равно невозможно изменить. Если не считать трюка "повышаем точность до 1мс, но всю старую обработку вызываем не всегда, а каждый 10-й раз", который фактически сохраняет старую частоту для основной части кода.

_________________
Сделаем мир лучше!


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 5:02 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
CleverMouse
В таком случае это не timer, а counter.
И интервал тогда надо жестко привязывать не к секундам, а к квантам системного таймера. Однажды их длительность таки-может измениться.


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 5:09 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Чт сен 03, 2009 1:52 pm
Сообщения: 1591
...в результате чего начнут глючить все программы, использующие любую из сисфункций 5, 23, 26.9, то есть практически все хоть сколько-нибудь существенные. Ну ладно SII, но ты-то должен быть знаком со списком сисфункций?
Короче, функции TimerHS и CancelTimerHS изменению не подлежат. Не нравятся - не используйте, пишите свои. Тема посвящена дисковым устройствам.

_________________
Сделаем мир лучше!


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 5:32 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
SII прекрасно указал проблемы с именованием устройств из драйвера.
По таймерам. Драйверу достаточно одного ядерного таймера. Дополнительные таймеры реализуются силами самого драйвера. То есть драйвер поддерживает свой упорядоченный список таймеров, и устанавливает таймер ядра на минимальный интервал.
Предложение отсчитывать время таймеров и миллисекундах тоже считаю правильным.


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 5:37 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
Частоту системного таймера давно пора поднять до 250-500 Гц. И счетчик тиков делать дополнительный на 64 бита. Переключать потоки на каждом тике тоже не айс. Нужны кванты 20-50 миллисекунд.


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 5:40 pm 
Не в сети

Зарегистрирован: Ср дек 26, 2007 5:09 am
Сообщения: 214
Serge писал(а):
Драйверу достаточно одного ядерного таймера. Дополнительные таймеры реализуются силами самого драйвера. То есть драйвер поддерживает свой упорядоченный список таймеров, и устанавливает таймер ядра на минимальный интервал.


А зачем сваливать на потенциально каждый драйвер несвойственные для него функции, которые элементарно поддаются обобщению и централизованной реализации? Зачем дублировать, по сути, один и тот же код в куче драйверов, если можно реализовать его один раз?

Цитата:
Предложение отсчитывать время таймеров и миллисекундах тоже считаю правильным.


А лучше всё ж в микросекундах -- чтоб запас на будущее был...


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 5:41 pm 
Не в сети

Зарегистрирован: Ср дек 26, 2007 5:09 am
Сообщения: 214
Serge писал(а):
Частоту системного таймера давно пора поднять до 250-500 Гц. И счетчик тиков делать дополнительный на 64 бита. Переключать потоки на каждом тике тоже не айс. Нужны кванты 20-50 миллисекунд.


Причём размер кванта потенциально должен устанавливаться для каждого потока индивидуально (на основе приоритетов или ещё чего -- это уж неважно в данном случае).


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 5:47 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3925
SII

Код может быть и в ядре. По такому принципу работают таймеры в Minix.


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 5:47 pm 
Не в сети
Kernel Developer
Аватара пользователя

Зарегистрирован: Пт авг 14, 2009 1:46 am
Сообщения: 1291
CleverMouse

[corrected] прошу забыть этот пост. Тут я был сильно неправ.


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 7:22 pm 
Не в сети

Зарегистрирован: Вт июл 26, 2011 11:03 pm
Сообщения: 62
Однако как хорошо когда все начинают думать вслух наконец.
А знаете у всех современых устройств есть прерывания, таймауты ваще не должны использоватся

Цитата:
одному драйверу может оказаться полезным устанавливать несколько таймеров - например, к компьютеру запросто могут быть подключены две USB-клавиатуры, для каждой из которых нужен отдельный таймер автоповтора.
2 клавы - 2 драйвера клавы


Вернуться к началу
СообщениеДобавлено: Пт сен 02, 2011 7:27 pm 
Не в сети

Зарегистрирован: Ср дек 26, 2007 5:09 am
Сообщения: 214
ilya писал(а):
А знаете у всех современых устройств есть прерывания, таймауты ваще не должны использоватся


Как ни странно, не все устройства являются современными. И даже не всё зависит от их современности.

ilya писал(а):
2 клавы - 2 драйвера клавы


Ага, и дважды в памяти дублировать один и тот же код, а не только данные, связанные с управлением конкретным экземпляром устройства.


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 67 сообщений ]  На страницу Пред. 1 2 3 4 5 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB