ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年10月29日 星期一

netlink -- event interface between userland & kernel

這是 imx3 的 source code。
-- 只在 mc13783 這個 driver 有用到,和 battery, power 相關的 code。

為了一些 hardware 的 event 寫了一個 driver (mxc_hw_event),提供一個 netlink 的 interface,讓 kernel event 可以傳送到 user program。

mxc_hw_evnet 只在 /sys/..../ 下開一個 mxc_hw_event 的 netlink nod。

然後 export 一個 hw_event_send 給其他 kernel module 用。

其他 driver 的使用方法是..(以 pmic_battery 來看.):

當偵測到 充電器插入時...
t_sensor_bits sensor; struct mxc_hw_event event = { HWE_BAT_CHARGER_PLUG, 0 }; pr_debug("In callback_chg_detect\n"); /* get sensor values */ pmic_get_sensors(&sensor); pr_debug("Callback, charger detect:%d\n", sensor.sense_chgdets); if (sensor.sense_chgdets) event.args = 1; else event.args = 0; /* send hardware event */ hw_event_send(HWE_DEF_PRIORITY, &event); 經由 mxc_hw_event 這個 netlink node 送出訊息。

這樣 user program 可以monitor mx_hw_event,得到 charger plug event。
不必一直polling,或是像以前一樣,經過 /dev 的 ioctrl 送自己的 pid,作 signal handler。

沒有留言:

標籤

網誌存檔