Добрый день, господа!
Я, так сказать, сразу к делу. Купил я, значит, UPS PowerMan, который с
интерфейсным кабелем для COM-порта. Хотел настроить nut на работу с ним. Как
известно, драйверов для PowerMan-а нету, поэтому использовал драйвер
genericups upstype=4. С обычным ядром Linux 2.6.18.2-34-default #1 SMP Mon
Nov 27 11:46:27 UTC 2006 i686 i686 i386 GNU/Linux все работает замечательно.
Однако хотелось бы настроить его еще и на работу с ядром Linux 2.6.18.2-34-xen
#1 SMP Mon Nov 27 11:46:27 UTC 2006 i686 i686 i386 GNU/Linux. Почему-то
драйвер genericups не желает запускаться - вылетает с ошибкой
ioctl TIOCMSET: Invalid parameter.
Смотрел исходники - проблема с функцией ioctl, которая работает с /dev/ttyS0:
upsfd=open("/dev/ttyS0");
if (ioctl(upsfd, TIOCMSET, TIOCM_RTS))
fatal_with_errno("ioctl TIOCMSET");
Пробовал загружать остальные драйвера - они запускаются, но, естественно, с
моим UPS-ом не работают. В коде этих драйверов нету вызовов ioctl с
request-ом TIOCMSET.
Складывая два факта вместе:
1. С обычным ядром все работает, с xen-ядром не работает;
2. Драйвера, не вызывающие ioctl с request-ом TIOCMSET работают, а которые
вызывают - не работают
делаем вывод, что наверно что-то не так с /dev/ttyS0 при ядре xen.
Отсюда вопрос более опытным товарищам - подскажите, что нужно подправить,
чтобы все-таки драйвера заработали. Любые идеи приветствуются.
С уважением,
carter.