The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"таймер для FreeBSD kernel"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"таймер для FreeBSD kernel"  
Сообщение от pvl email(ok) on 15-Фев-07, 10:15 
вопросик вот такой к многоуважаемым..

по ходу фунциклирования самодельного модуля ядра нужно реализовать опрос регистра на внешней шине, с таймаутом.
посему нужен таймер.. чета я запарился совсем его искать.. и гугля (выдавая 10^10 ссылок) молчит.
точности особой не нужно - таймаут в пределах 500-2500 us некритичен.
собственно решение приходит само и описывается при старте системы так
Timecounter "i8254" frequency 1193182 Hz quality 0
тока еще бы найти точку входа в литературу по ентому поводу.. ну или в исходники.

допоможите плз. чем сильны

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "таймер для FreeBSD kernel"  
Сообщение от BigHo on 17-Фев-07, 01:39 
>вопросик вот такой к многоуважаемым..
>
>по ходу фунциклирования самодельного модуля ядра нужно реализовать опрос регистра на внешней
>шине, с таймаутом.
>посему нужен таймер.. чета я запарился совсем его искать.. и гугля (выдавая
>10^10 ссылок) молчит.
>точности особой не нужно - таймаут в пределах 500-2500 us некритичен.
>собственно решение приходит само и описывается при старте системы так
>Timecounter "i8254" frequency 1193182 Hz quality 0
>тока еще бы найти точку входа в литературу по ентому поводу.. ну
>или в исходники.
>
>допоможите плз. чем сильны


возможно помогут функции из серии sleepq_* (например sleepq_set_timeout(9)), но не уверен. Что именно нужно от таймеров ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "таймер для FreeBSD kernel"  
Сообщение от pvl email(ok) on 19-Фев-07, 11:44 
>возможно помогут функции из серии sleepq_* (например sleepq_set_timeout(9)), но не
>уверен. Что именно нужно от таймеров ?

нужно опрашивать битик в регистре на PCI шине.
смысл такой что бит этот софтверно мною устанавливается (железяка ресеится) а потом хардверно сбрасывается через какое-то время. По докам время сброса не более 250us, но практика показывает что у инфинеонов все делается через жопу и при разных температурах этот бит ведет ся поразному.. а в некоторых девайсах ваще никада не снимается.

поэтому опрашивать его нужно с таймаутом и, если через 500-900us ничего не сбросилось, нахально его командой убирать.

короче хочется такого эффекта как в нижепреведенной абстракции

  for ( time0=timeT ;  ( timeT<(time0+10) ) && (conf1 & CONF1_IIP) ; )
  { /* Wait for IIP (or timeout) */
    conf1=m256[devID].regBase->conf1;
  }

тута timeT - какой-то freeruning таймер
(conf1 & CONF1_IIP) - как раз тот самый битик

вот так вобщем

а тупая задержка не подходит потому что факт "неопускания" бита нужно просигнализировать юзермоду

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "таймер для FreeBSD kernel"  
Сообщение от Michelnok (ok) on 19-Фев-07, 16:10 
>а тупая задержка не подходит потому что факт "неопускания" бита нужно просигнализировать
>юзермоду

Ничего не понял из обьяснения.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "таймер для FreeBSD kernel"  
Сообщение от pvl email(ok) on 19-Фев-07, 16:54 
>Ничего не понял из обьяснения.

а чтоже тут непонятного.

если бит не опустился сам, то инициализация не вылняется, а отлаживается до того времени когда юзерское приложение запустится и само, мануал так сказать, просмотрит все регистры и сконфижит их как нужно.

а сам факт "неопускания" бита нужно запомнить и потом выдать по соответствующему ioctl


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "таймер для FreeBSD kernel"  
Сообщение от Michelnok (ok) on 19-Фев-07, 17:37 
>а сам факт "неопускания" бита нужно запомнить и потом выдать по соответствующему
>ioctl

Все равно не понял, почему не подходит "тупая задержка". timeout вместо DELAY я не советовал, т.к. ты оперируешь микросекундами, а timeout оперирует тиками (1-10 миллисекунд, частота определяется константой HZ при компиляции ядра). Хотя, если речь идет всего лишь про инициализацию, то все равно каким способом делать задержку и сколько времени она продлится, не так ли?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "таймер для FreeBSD kernel"  
Сообщение от Michelnok (ok) on 17-Фев-07, 14:29 
>нужно реализовать опрос регистра на внешней шине, с таймаутом.

man 9 DELAY

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "таймер для FreeBSD kernel"  
Сообщение от timeout on 19-Фев-07, 17:01 
>вопросик вот такой к многоуважаемым..
>
>по ходу фунциклирования самодельного модуля ядра нужно реализовать опрос регистра на внешней
>шине, с таймаутом.
>посему нужен таймер.. чета я запарился совсем его искать.. и гугля (выдавая
>10^10 ссылок) молчит.
>точности особой не нужно - таймаут в пределах 500-2500 us некритичен.
>собственно решение приходит само и описывается при старте системы так
>Timecounter "i8254" frequency 1193182 Hz quality 0
>тока еще бы найти точку входа в литературу по ентому поводу.. ну
>или в исходники.
>
>допоможите плз. чем сильны


man 9 timeout

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "таймер для FreeBSD kernel"  
Сообщение от pvl email(ok) on 19-Фев-07, 17:21 

>man 9 timeout


премного дякую

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру