Wie sendet udev eine Benachrichtigung über eine Änderung des Eingabegeräts an Xorg?


2

Ich möchte herausfinden, warum die Grafiktabellen nur aktiv sind, wenn sie beim Start von Xorg verbunden sind (und nicht mehr mit Spam arbeiten, Xorg.0.logwenn ich sie erneut verbinde).

Soweit ich weiß, funktioniert das udev-basierte Hotplugging von Xorg irgendwie, um nach dem Start mit udev in Verbindung zu bleiben.

  • Wo sind Details dazu? Welchen Mechanismus hat Xorg, um mit udev in Kontakt zu bleiben? Direkte Socket-Verbindung? D-Bus?
  • Welche Nachrichten müssen in udev- oder Xorg-Protokollen nach fehlender Verbindung zwischen udev und Xorg durchsucht werden?
  • Wie kann man die erneute Aufzählung von Eingabegeräten durch Xorg manuell auslösen?

Antworten:


2

Es nutzt Mechanismen, die von libudev aufgedeckt werden.

Wenn wir uns im Xorg-Quellcode umsehen , können wir in udev.c sehen, dass er aufruft udev_monitor_new_from_netlink.

Wenn wir uns dann den Quellcode von udev ansehen , können wir in libudev-monitor.c erkennen, dass diese Funktion schließlich einen Netlink-Socket erstellt .

Ich kenne keine einfache Möglichkeit, Netlink-Sockets zu "schnüffeln". In udev ist wahrscheinlich ein Beispielcode enthalten, den Sie kompilieren und ausführen können, um dieselbe Ereignisquelle zu abonnieren und einige ausführliche Informationen anzuzeigen.

In Ihrer Situation würde ich Folgendes versuchen:

  • kann ich andere Eingabegeräte trennen / wieder anschließen? (zB eine USB-Maus oder -Tastatur)
  • Was kann ich in udev-Protokollen sehen, wenn ich das Tablet ab- oder wieder anschließe?

Übrigens, welche Art von Nachrichten sind in X-Protokollen Spam?


Etwas über die Unzugänglichkeit des jeweiligen Eingabegeräts. Udev und Xorg wurden in separaten Netzwerknamespaces ausgeführt und nur pfadbasierte UNIX-Sockets durchdringen transparent den Netzwerknamespace.
Vi.

Gibt es ein Tool wie socat, aber für AF_NETLINK so Sockets? (Ich denke NETLINK ist für Kernel <-> Userspace, nicht für Userspace <-> Userspace ...)
Vi.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.