3 ms·
Love it. Since I am a visual learner, here is a sequence diagram that helped me follow it a bit cleaner. (yes, I used the gAI dark magic) ``` sequenceDiagr
by WaitWaitWha 7mo ago
Love it.
Since I am a visual learner, here is a sequence diagram that helped me follow it a bit cleaner. (yes, I used the gAI dark magic)
```
sequenceDiagram
participant HW as Hardware
participant Kernel as Linux Kernel<br>(USB / driver core / kobject)
participant NetlinkK as Netlink<br>(NETLINK_KOBJECT_UEVENT<br>group 1 = MONITOR_GROUP_KERNEL)
participant Udevd as udevd<br>(systemd-udevd)
participant NetlinkU as Netlink<br>(NETLINK_KOBJECT_UEVENT<br>group 2 = MONITOR_GROUP_UDEV)
participant App as Userspace Application<br>(libudev or direct netlink listener)
participant Sysd as systemd<br>(device units, services)
participant DevFS as /dev<br>(device nodes + symlinks)
HW->>Kernel: Physical insertion (USB plug-in)
Kernel->>Kernel: Detect change via bus/driver<br>(e.g. xhci-hcd → usbcore)
Kernel->>Kernel: Register new device in device model<br>(kobject_add / device_add)
Kernel->>NetlinkK: kobject_uevent_env(ACTION=add, ...)<br>multicast to group 1<br>(raw uevent: null-terminated key=value strings)
NetlinkK->>Udevd: Receive kernel uevent<br>(ACTION=add, SUBSYSTEM=..., DEVPATH=..., etc.)
Note over Udevd: udevd parses uevent
Udevd->>Udevd: Match & apply udev rules<br>(/lib/udev/rules.d/, /etc/udev/rules.d/)
Udevd->>Udevd: Perform actions:<br>• Load firmware<br>• usb_modeswitch<br>• Set permissions<br>• Run programs/scripts
Udevd->>Udevd: Create device node(s)<br>e.g. /dev/bus/usb/001/002
Udevd->>Udevd: Create symlinks<br>e.g. /dev/ttyACM0, /dev/disk/by-id/...
alt Optional: triggers systemd .device unit
Udevd->>Sysd: Triggers / influences device unit activation
Sysd->>Sysd: May start dependent services / scopes
end
Udevd->>Udevd: Build enhanced udev packet:<br>• libudev header ("libudev\0", magic 0xfeedcafe, ...)<br>• MurmurHash2 subsystem/devtype<br>• 64-bit tag Bloom filter<br>• Original + added properties
Udevd->>NetlinkU: Broadcast processed event<br>multicast to group 2<br>(binary format with header + properties)
NetlinkU->>App: Receive udev event packet<br>(via libudev_monitor or raw netlink socket)
App->>App: Parse header, validate magic/credentials<br>Extract properties
App->>App: React to device<br>(open /dev/..., query sysfs, etc.)
Note over DevFS: Device now usable via stable names / permissions
```
- znpy 7mo agosorry for the dumb question, but what language is this? dotty? mermaid? what tool can i feed that code into ? EDIT: chatgpt correctly identified it as mermaid. live link: https://mermaid.live/edit#pako:eNqVVu1u6kYQfZWRf1SJLmAgJASriZQP2qRJIApwr1ohocVezDb22nd3TUKjSP3VB-gj9NHuk3RmbROjUqoikLzrPWdmZ8-c5c3xk4A7nqP514xLn18LFioWTyXYT8qUEb5ImTRw8wWYhhumghem-K4Vd1xJHtGqeyGz12L8_VydH0xGl-BCoMSKK_ATxXH0nMx_5b453EU14CYS8vmOyIpnyzPoj-9vB3ezu-HlT_2r8WzS_9wfjOlVqJIshRacwcNwcDsePs1-fBpOHmd3_adB_35nkEnAVwFFyOjB8uu1NjwO6nZmX2aT_5tZ-x-ZTa77n3eGuEhTYp9ornTKfE4TkfCZEYm0sSIxpwQhURAIhTUEmWcCkcD8JVc7eUdrbbdbbNJSIY3ACJkURtcAI9JQ74Rf89UPI8K7CKqCJWpIwyfkjSmJHF0y3Hypn5_nSvDgcbnWuJEIhMRQtB-w0kijLKwLuQXMMRXwNTe0VX_JZMhhJRjMM-3mmrLp8EbYgNelL-pLP4Bvf_wJmZ6T2PbzPvGQqqawiC9QbEnI8inGzeUaLvQ6Y0FAWravabCbvVSwV-p8lvEVl2bG5erg4mp8OxycIbgGjUbjkPjjLMJSM23AJFCo2cZV7AVyrAcyi6I65hoLyQwP4Jmvz1Ysyjhoo4QMt2tf5oDpWK3TXn2O9UKcbdWc1kappjSaXI5-Ho37D2eYXA1Qp48X45t8wI3f2A6SGA4J9XURw_YOKUejKvII1fV21UdGD8z4S_gOGGp8bbGgsohrm5SLSndpzrVzjcCtgYsZbM8d7qF_5GqRqBiYT2rTHtF--_0vuE9YAAuhYjKzchLlMqPz1i8CkypnR9xASiXXmijK6adMQqoSskvtal-J1Og9iVwpjicGlZY50PbcrWqppVySM6bgNpst_LX_m6xsuG0aY9YXVw_NWj4KhH525-u6CFw8vyoniwwMUyoLwy5A-YQhGk7pDtCoWEMJqaZCbuLBuIS52DOLyF4iGipQW_mV9a4qC6E3JA9sjfpFq0FgymWAitlYERJrP0m5LtH4fk9lLjMRBbgGTcLH_rB6Qg995mZz9KV7LjkLULUHU6eYmU6bU6cGMQuFD83XBeeBzxb8o0UJ_ZCpOFM3TC_boLN5Xi2qtFmnGyEBnHTqc9y8YSFcRkkSo9Yik_sULRhi2bCFI3RN7DhMFJWUkiPynRoqLx3cn0LhWpdABJZHI3bTxDsspG37aI6x1BqoE5gBVPey3P2nSuRd3jHB6Hj9fDiHLZ2NWNTVBiA3LqqIHYTHjlcTfsm6yqtJJ7R6KwYSl_SPZBdFUjVASxMBKdyehesrTpoQLLJS778ahar6l5pVSJ84LcNa5Hq0mSJE5p1h7Qz_9mBh8BQXeq-32cuP7qCifdGSNZtH-T2E2qVHyWKr14pZODUnVCJwPKMyXnNifMNo6LzZMI5Z8phPHQ8fA6aep85UviMG79tfUDQlDE8yXDreAvePoyyl0hT_1DazivpGXSWZNI7XblkOx3tzXh3vqHfSaHWPWqfd9vHx6XGvU3PWjnfaapx2O71e-6jbPGked7rvNec3G7SZv-j1up2jTu-k3Tl-_xsqsmRU https://mermaid.live/edit#pako:eNqVVu1u6kYQfZWRf1SJLmAgJASri...
- WaitWaitWha 7mo agoapologies. Yes it is for mermaid.live