⚫ ueventd
⚬ ueventd creates and 'poll' netlink socket.
ueventd_main [init/ueventd.c]
⚬ read kernel event message -> parse -> handle
handle_device_event [init/devices.c]
-> device_changed [init/init.c]
-> queue_device_triggers [init/init_parser.c]
|
+---------------+
|
v
: search action list to know what to do for this event.
searching action which name is device-added/removed-[device node].
[device node] is from 'DEVPATH' variable of uevent message.
⚬ action list : list declared at [init_parser.c]
• builtin action (added by 'queue_builtin_action [init/init_parser.c]')
ex. property_init, wait_for_coldboot_done etc.
• from script (added by 'parse_action [init/init_parser.c]')
section "on device-added-[device path] / on device-removed-[device path]"
ex.
[init.rc]
on device-added-/dev/block/mmcblk0p18
exec /system/bin/sh /system/bin/hello_mmc.sh
⚫ other daemons (ex usbd)
⚬ create and 'poll' netlink socket.