LINUX.ORG.RU

Модуль ядра COM port

 


0

1

Добрый день. Стоит такая задача: При загрузке/выгрузке модуля ядра запускать скрипты, которые соответственно загружают/выгружают java приложение. Приложение обрабатывает данные с COM порта, для этого использует jSSC. Если модуль загружен, а скрипты запускать ручками, то все работает на ура. Я написал udev, который при загрузке модуля должен запускать скрипты, так вот, когда загружаю модуль modprobe, то в логах вижу, что скрипт на загрузку выполнился и загрузил java (оно и через ps ax видно). В логе видно, что com port открывается корректно, но событие EventListener не срабатывает, хотя опять же повторюсь, что при ручной загрузке все ОК. В чем может быть дело?


Чаще всего разное поведение при «ручном» и «автоматическом» запуске получается из-за различий в установленных переменных и иногда полномочий.

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

Хмм, т.е. owner? Разрешения при загрузке модуля ставлю MODE=«0666».

Провел такой эксперимент, приложение загрузил вручную и проверяю создание соответствующего /dev/tty. Загружаю модуль ядра, который создает устройство. Когда оно появляется, то в коде создаю подключение. Поведение аналогичное, как при запуске через udev, т.е. не работает. Получается jre до загрузки модуля/после загрузки модуля имеет какие-то разные состояния?

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

Я подразумевал, например, что при запуске приложения вручную, используется $HOME/.java.policy, а из-под udev умолчательный.

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

Провел такой эксперимент, приложение загрузил вручную и проверяю создание соответствующего /dev/tty. Загружаю модуль ядра, который создает устройство. Когда оно появляется, то в коде создаю подключение.

А если вставить что-то вроде sleep() после обнаружения /dev/tty но до его открытия?

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

Понял в чем дело, т.к. хост у меня на VMWare, то после того как модуль и софтина загружались я не успевал (да и не предавал этому значения) принять новое устройство в Виртуальной машине. Все заработало. Спасибо большое.

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