Как udev отправляет уведомление об изменении устройства ввода в Xorg?

928
Vi.

Я хочу выяснить, почему графические таблицы активны, только если они подключены при запуске Xorg (и перестают работать со спамом, Xorg.0.logесли я его снова подключаю).

Насколько я знаю, работы Xorg по горячему подключению, основанные на udev, каким-то образом остаются связанными с udev после запуска.

  • Где детали этого? Какой механизм связи Xorg с udev? Прямое сокетное соединение? D-Bus?
  • Какие сообщения искать в журналах udev или Xorg на предмет отсутствия связи между udev и Xorg?
  • Как вручную запустить повторное перечисление Xorg устройств ввода?
2

1 ответ на вопрос

1
jpetazzo

Он использует механизмы, представленные libudev.

Копаясь в исходном коде Xorg, мы видим в udev.c, что он вызывает udev_monitor_new_from_netlink.

Затем, изучая исходный код udev, мы видим в libudev-monitor.c, что эта функция в конечном итоге создает сокет netlink .

Я не знаю простого способа «понюхать» сокеты netlink; но, вероятно, в udev есть пример кода, который вы можете скомпилировать и запустить, чтобы подписаться на один и тот же источник событий и отобразить подробную информацию.

В вашей ситуации я бы попробовал это:

  • я могу отключить / повторно подключить другие устройства ввода? (например, любая USB-мышь или клавиатура)
  • что я вижу в логах udev при отключении / повторном подключении планшета?

И, кстати, какие сообщения спамятся в журналах Х?

Что-то о недоступности соответствующего устройства ввода. Udev и Xorg работали в отдельных сетевых пространствах имен, и прозрачно проникают только сокеты UNIX на основе пути, хотя пространство сетевых имен прозрачно. Vi. 10 лет назад 0
Есть ли такой инструмент, как socat, но для AF_NETLINK так сокетов? (Хотя NETLINK предназначен для ядра <-> пользовательское пространство, а не для пользовательского пространства <-> пользовательское пространство ...) Vi. 10 лет назад 0

Похожие вопросы