星期五, 5月 15, 2009

[Linux]kernel 怎麼執行 hotplug?

因為只知道 hotplug 這關鍵字,直接以 hotplug 找,從 lib/kobject_uevent.c 裡可以看到放 "/sbin/hotplug" 的變數:uevent_helper。再往後找,可以看到 call_usermodehelper 使用了此變數。

call_usermodehelper 定義在 kmod.h 裡,是一個 static inline function。裡面則呼叫了 call_usermodehelper_setup 去設置環境,末了再呼叫 call_usermodehelper_exec 去執行。

p.s. 似乎不能在 IRQ 中斷處理常式裡去呼叫,會造成 kernel crash 掉,仔細想想,這樣有合理,因為 IRQ 中斷處理常式應該要盡早處理結束。如果是這樣,處理就比較麻煩了,可能就要利用 thread 跟 queue 來作。現階段,先不要作這個好了,雖然主動通知的功能很酷...

沒有留言: