From a38e4d91cf435d73997ddcb9cc41e934d3cef9a6 Mon Sep 17 00:00:00 2001 From: Jesse Zhang Date: Sat, 26 Jan 2013 17:16:26 +0800 Subject: udev: Add start/stop/status/restart support to init script [ CQID: WIND00388860 ] Add the ability to use "stop", "start", "restart" and "status" with the udev initscript. (From OE-Core rev: bc6193824ec3eb1f3c590a93ccb79c8588b74412) Signed-off-by: Jesse Zhang Signed-off-by: Mark Hatle Signed-off-by: Saul Wold Signed-off-by: Richard Purdie --- meta/recipes-core/udev/udev/init | 113 ++++++++++++++++++++++----------------- 1 file changed, 64 insertions(+), 49 deletions(-) (limited to 'meta/recipes-core/udev/udev/init') diff --git a/meta/recipes-core/udev/udev/init b/meta/recipes-core/udev/udev/init index 1934d11e49..8ac1ff7b9c 100644 --- a/meta/recipes-core/udev/udev/init +++ b/meta/recipes-core/udev/udev/init @@ -9,6 +9,8 @@ # Short-Description: Start udevd, populate /dev and load drivers. ### END INIT INFO +. /etc/init.d/functions + export TZ=/etc/localtime [ -d /sys/class ] || exit 1 @@ -27,60 +29,73 @@ readfile () { fi } -kill_udevd() { - pid=`pidof -x udevd` - [ -n "$pid" ] && kill $pid -} - -export ACTION=add -# propagate /dev from /sys -echo "Starting udev" - -# mount the tmpfs on /dev, if not already done -LANG=C awk '$2 == "/dev" && ($3 == "tmpfs" || $3 == "devtmpfs") { exit 1 }' /proc/mounts && { - mount -n -o mode=0755 -t tmpfs none "/dev" -} -[ -e /dev/pts ] || mkdir -m 0755 /dev/pts -[ -e /dev/shm ] || mkdir -m 1777 /dev/shm -mount -a -t tmpfs 2>/dev/null -mkdir -p /var/volatile/run +case "$1" in + start) + export ACTION=add + # propagate /dev from /sys + echo "Starting udev" -# cache handling -if [ "$DEVCACHE" != "" ]; then - readfile /proc/version - VERSION="$READDATA" - readfile /proc/cmdline - CMDLINE="$READDATA" - readfile /proc/devices - DEVICES="$READDATA" - readfile /proc/atags - ATAGS="$READDATA" + # mount the tmpfs on /dev, if not already done + LANG=C awk '$2 == "/dev" && ($3 == "tmpfs" || $3 == "devtmpfs") { exit 1 }' /proc/mounts && { + mount -n -o mode=0755 -t tmpfs none "/dev" + } + [ -e /dev/pts ] || mkdir -m 0755 /dev/pts + [ -e /dev/shm ] || mkdir -m 1777 /dev/shm + mount -a -t tmpfs 2>/dev/null + mkdir -p /var/volatile/run - if [ -e $DEVCACHE ]; then - readfile /etc/udev/cache.data - if [ "$READDATA" = "$VERSION$CMDLINE$DEVICES$ATAGS" ]; then - (cd /; tar xf $DEVCACHE > /dev/null 2>&1) - not_first_boot=1 - fi + # cache handling + if [ "$DEVCACHE" != "" ]; then + readfile /proc/version + VERSION="$READDATA" + readfile /proc/cmdline + CMDLINE="$READDATA" + readfile /proc/devices + DEVICES="$READDATA" + readfile /proc/atags + ATAGS="$READDATA" - echo "$VERSION$CMDLINE$DEVICES$ATAGS" > /dev/shm/udev.cache - fi -fi + if [ -e $DEVCACHE ]; then + readfile /etc/udev/cache.data + if [ "$READDATA" = "$VERSION$CMDLINE$DEVICES$ATAGS" ]; then + (cd /; tar xf $DEVCACHE > /dev/null 2>&1) + not_first_boot=1 + fi -# make_extra_nodes -kill_udevd > "/dev/null" 2>&1 + echo "$VERSION$CMDLINE$DEVICES$ATAGS" > /dev/shm/udev.cache + fi + fi -# trigger the sorted events -echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug -/lib/udev/udevd -d + # make_extra_nodes + killproc udevd > "/dev/null" 2>&1 -/usr/bin/udevadm control --env=STARTUP=1 -if [ "$not_first_boot" != "" ];then - /usr/bin/udevadm trigger --action=add --subsystem-nomatch=tty --subsystem-nomatch=mem --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus --subsystem-nomatch=graphics --subsystem-nomatch=backlight --subsystem-nomatch=video4linux --subsystem-nomatch=platform - (/usr/bin/udevadm settle --timeout=3; /usr/bin/udevadm control --env=STARTUP=)& -else - /usr/bin/udevadm trigger --action=add - /usr/bin/udevadm settle -fi + # trigger the sorted events + echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug + /lib/udev/udevd -d + /usr/sbin/udevadm control --env=STARTUP=1 + if [ "$not_first_boot" != "" ];then + /usr/sbin/udevadm trigger --action=add --subsystem-nomatch=tty --subsystem-nomatch=mem --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus --subsystem-nomatch=graphics --subsystem-nomatch=backlight --subsystem-nomatch=video4linux --subsystem-nomatch=platform + (/usr/sbin/udevadm settle --timeout=3; /sbin/udevadm control --env=STARTUP=)& + else + /usr/sbin/udevadm trigger --action=add + /usr/sbin/udevadm settle + fi + ;; + stop) + echo "Stopping udevd" + start-stop-daemon --stop --name udevd --quiet + ;; + restart) + $0 stop + sleep 1 + $0 start + ;; + status) + status udevd + ;; + *) + echo "Usage: $0 {start|stop|status|restart}" + exit 1 +esac exit 0 -- cgit v1.2.3-54-g00ecf