Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

сигналы в unix (freeBSD)

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix
Предыдущая тема :: Следующая тема  
Автор Сообщение
alex_tr
Гость





СообщениеДобавлено: Пт Апр 09 2004 15:03    Заголовок сообщения: сигналы в unix (freeBSD) Ответить с цитатой

HELP
В чем может быть проблема:
Посылаю процессу сигнал из драйвера и...
Если процесс как бы активен ( не блокировван фукцией sleep() или getchar() или чем то подобным) , то сигнал принимается и все в порядке.
Если процесс заблокирован sleep() или вызовом какой то подобной функции, то, если в период спячки процесса ему посылается сигна из драйвера система критически падает и перезагружается.
Вернуться к началу
rtyuiop
Гость





СообщениеДобавлено: Пн Апр 12 2004 14:11    Заголовок сообщения: во бла Ответить с цитатой

В общем, опытным путем (в последствии достаточное, но не необходимое объяснение этого казуса нашлось в Бахе) выяснилось, что во freeBSD из драйвера послать сигнал процессу не так просто (точнее невозможно без критического сбоя), если последний в режиме ожидани (sleep, in/out и т.п.).
Выхож:
1) Драйвер перед посылкой сигнала ддолжен проверять в каком состоянии находится процесс, которому этот сигнал посылается.
2) Если в прикладной программе должен быть блокируемый диалог с пользователем и есть необходимость получать сигналы от драйвера, то прикладную прогу надо организовывать состоящую как минимум из двух процессов: один - диалог с пользователем (возможно блокируемый), второй - общение с драйвером через сигналы (желательно без блокироввания - продолжительного блокированя).
Бла - геморой однако со вторым пунктом получился.

Может кто знает опции или флаги, которыми можно устанавливать неблокируемый режим работы процесса без его swap на время блокировки (система падает имеенно из за swap)? Буду благодарен.
Вернуться к началу
совсем незнакомый



Зарегистрирован: 24.12.2003
Сообщения: 183
Откуда: Israel

СообщениеДобавлено: Вт Апр 13 2004 09:02    Заголовок сообщения: Ответить с цитатой

почему ты выбрал именно сигналы а не другой метод коммуникации ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
poioiujh
Гость





СообщениеДобавлено: Вт Апр 13 2004 11:19    Заголовок сообщения: какие, например Ответить с цитатой

А какой способ еще можно использовать для асинхронного общения драйвера режима ядра и прикладной программы в задачах когда драйвер должен сообщать программе о наступлении какого то события?
1) Общая память или ioctl - опять же это не совсем асинхронный способ (прикладная программа должна сама организовывать алгоритм опроса состояния драйвера, возможно в отдельном процессе)
2) Больше ни чего не придумывается...

Да, может я зря так о невозможности нормально посылать сигналы из ядра в freeBSD и unix в общем (в Linux такой проблемы возможно нет вовсе). У меня версия я дра, с которой приходится работать, довольно древняя, причем код еще и доводился какими то отечественными программерами, которые, по всей видимости, занимались доводкой между очередным и незапланировванным похмельем.
Вернуться к началу
совсем незнакомый



Зарегистрирован: 24.12.2003
Сообщения: 183
Откуда: Israel

СообщениеДобавлено: Вт Апр 13 2004 14:10    Заголовок сообщения: Re: какие, например Ответить с цитатой

poioiujh писал(а):

2) Больше ни чего не придумывается...

напр. kevent, kqueue

poioiujh писал(а):

Да, может я зря так о невозможности нормально посылать сигналы из ядра в freeBSD и unix в общем (в Linux такой проблемы возможно нет вовсе). У меня версия я дра, с которой приходится работать, довольно древняя, причем код еще и доводился какими то отечественными программерами, которые, по всей видимости, занимались доводкой между очередным и незапланировванным похмельем.

не могу сказать, но если нет нужды не работайте на старом ядре.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
alex_tr
Гость





СообщениеДобавлено: Вт Апр 13 2004 15:48    Заголовок сообщения: Ответить с цитатой

kevent и kqueue это что такое и как они в общем работают (внешне это напоминает работу с сигналами)? Посмотрю..
Но у меня такое чуство, что это Linuxовые вещи (по названию напоминает).
А вот со старым ядром работать приходится и необходимо, да еще модифицировать его нельзя.

Спасибо за совет
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Unix Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...