LINUX.ORG.RU

Отложенное прерывание в userspace


0

0

Здравствуйте.
В ядре с сабжем проблем нет - там есть таймеры с калбаками. Как аналогичное поведение реализовать в userspace? Нужно, чтобы по определённому событию запускался/перезапускался таймер, если таймер истёк, то генерится другое событие. Ну и само собой, этот код будет выполнятся в режиме задачи, а не в режиме прерывания. И задержки на шедуллер здесь не критичны. Пока в голову приходит только pthread со слипом - но как-то это не очень красиво.

Спасибо.

★★

Ответ на: комментарий от true_admin

Хмм.. в принципе можно, но я ещё забыл добавить, что таких ожиданий событий может быть несколько, то есть в каллбак желательно передавать идентификатор того, кто это событие вызвал... если найду как это сделать, то может быть подойдёт - спасибо :)

lv ★★
() автор топика
Ответ на: комментарий от lv

если что-нить красивое придумаешь то напиши как сделал :).

Я пишу асинхронные проги. А если надо сделать что-нить долгое то тогда уже как внешний процесс запускается или в другом треде. Ну и отдельный тред который шедулингом занимается. Но я это не доделал, как оно в боевом режиме будет работать пока хз.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Да, собственно, сделал при помощи pthread - в каллбак передаю идентификатор запускающего, и жду там нужное время, по истечении этого времени - запускаю определённое событие. В основном потоке - каждый раз этот поток перезапускаю (cancel/create). В итоге получаю требуемый функционал - проверил - работает :) так что, скорее всего, так оно у меня и будет.

lv ★★
() автор топика
Ответ на: комментарий от const86

О! Спасибо - надо бы попробовать это :)

lv ★★
() автор топика
Ответ на: комментарий от lv

>сделал при помощи pthread
прочь руки от компа. навсегда!

в любой библиотеке есть нормальные таймеры. в чем проблема? в qt есть QTimer. вон, подсказали timer_create.
crond на худой конец, если это скрипты.

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

xydo ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.