udev ส่งการแจ้งเตือนการเปลี่ยนแปลงอุปกรณ์อินพุตไปยัง Xorg อย่างไร


2

ฉันต้องการแก้ไขสาเหตุที่ตารางกราฟิกใช้งานได้เฉพาะเมื่อมีการเชื่อมต่อเมื่อ Xorg เริ่มทำงาน (และหยุดทำงานกับสแปมXorg.0.logหากฉันเชื่อมต่อใหม่)

เท่าที่ฉันทราบ udev hotplugging ที่ทำงานโดย Xorg ยังคงเชื่อมต่อกับ udev หลังจากเริ่มต้น

  • รายละเอียดของสิ่งนี้อยู่ที่ไหน กลไกใดของ Xorg ที่ติดต่อกับ udev การเชื่อมต่อซ็อกเก็ตโดยตรง? D-Bus?
  • มีข้อความอะไรให้ค้นหาใน udev หรือ Xorg log สำหรับการขาดการเชื่อมต่อระหว่าง udev และ Xorg
  • วิธีการกระตุ้นการป้อนค่าอุปกรณ์อินพุตของ Xorg ด้วยตนเองอีกครั้ง

คำตอบ:


2

มันใช้กลไกที่เปิดเผยโดย libudev

โดยการขุดลงในซอร์สโค้ด Xorg เราสามารถมองเห็นในudev.cudev_monitor_new_from_netlinkว่ามันเรียกร้อง

จากนั้นโดยดูที่ซอร์สโค้ด udev เราสามารถเห็นในlibudev-monitor.cว่าฟังก์ชันนี้สร้างซ็อกเก็ต netlink ในที่สุด

ฉันไม่รู้วิธีง่าย ๆ ในการ "ดมกลิ่น" ซ็อกเก็ต netlink แต่อาจมีโค้ดตัวอย่างใน udev ที่คุณสามารถคอมไพล์และรันเพื่อสมัครสมาชิกแหล่งที่มาของเหตุการณ์เดียวกันและแสดงข้อมูล verbose บางอย่าง

ในสถานการณ์ของคุณฉันจะลอง:

  • ฉันจะยกเลิกการเชื่อมต่อ / เชื่อมต่ออุปกรณ์อินพุตอื่นได้อย่างไร (เช่นเมาส์หรือคีย์บอร์ด USB)
  • ฉันเห็นสิ่งใดในบันทึก udev เมื่อฉันตัดการเชื่อมต่อ / เชื่อมต่อแท็บเล็ตอีกครั้ง

และยังไงก็ตามข้อความประเภทใดที่ถูกสแปมในบันทึก X


มีบางอย่างเกี่ยวกับการเข้าไม่ถึงของอุปกรณ์อินพุตที่เกี่ยวข้อง Udev และ Xorg กำลังทำงานในเนมสเปซเครือข่ายที่แยกจากกันและมีเพียงซ็อกเก็ต UNIX ที่อิงพา ธ เท่านั้นแม้ว่าจะมีช่องว่างเครือข่ายเนมสเปซโปร่งใส
วิ

มีเครื่องมือเช่น socat แต่สำหรับ AF_NETLINK ซ็อกเก็ตเหรอ? (ฉันว่า NETLINK สำหรับเคอร์เนล <-> userspace ไม่ใช่สำหรับ userspace <-> userspace ... )
Vi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.