[轉載請註明出處] http://kezeodsnx.pixnet.net/blog

作者: kezeodsnx

udev 是一個好東西。

背景:

/dev下,有太多的device node,佔據了相當的資源,如disk/memory space, major/minor number。佔資源是其次,如果用的到。重點是許多的device根本不存在,為何需要預先建立這麼多可能永遠也用不到的東西呢?因此,dynamic allocate的觀念就浮現出來,即udev所做的事。

Target:

理想的情況下,當device插上,自動產生device node,掛上driver。device移除,device node自動消失,移除driver。且每個device是可區別的,亦即,不管插拔幾次,什麼時候插拔,對系統來說,都不應造成差別。

 

實作:

在2.6.15 以前,是用hotplug實現。之後,就由uevent取代。hal與udev是相輔相成的東西,hald掛在socket:/org/freedesktop/hal/udev_event等候udev的event。因此,整個scenario就會更清楚了。比如說,插上mp3 player後,udev create device node (sdb),掛上driver,發送uevent給hal。hal收到後,再merge fdi所提供的資訊,有需要的話,再執行callout/addon/method,將此mp3 player mount起來,user即可清楚的知道這是一個mp3 player,及其相關資訊。

附註1: 其IPC是透過DBUS。

附註2: udev的rule在 /etc/hal/rules.d/

kezeodsnx 發表在 痞客邦 PIXNET 留言(0) 人氣()