⚫ 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.