diff options
author | Sebastian | 2010-02-10 22:05:24 +0100 |
---|---|---|
committer | Sebastian | 2010-02-10 22:05:24 +0100 |
commit | d5ee712ea0a8e8c782ee50c7a8f7e51448173aab (patch) | |
tree | d68b18484462499862ffe9a0aa5402a33e9f8b98 /boot-env | |
parent | hack to enable loading of virtio_net after virtio_pci, maybe nex time via mod... (diff) | |
download | core-d5ee712ea0a8e8c782ee50c7a8f7e51448173aab.tar.gz core-d5ee712ea0a8e8c782ee50c7a8f7e51448173aab.tar.xz core-d5ee712ea0a8e8c782ee50c7a8f7e51448173aab.zip |
initial import of event based bbinit script (still not included in the real init)
Diffstat (limited to 'boot-env')
-rwxr-xr-x | boot-env/pbs/uclib-rootfs/bin/bbinit | 17 | ||||
-rwxr-xr-x | boot-env/pbs/uclib-rootfs/bin/handleEvents | 38 | ||||
-rw-r--r-- | boot-env/pbs/uclib-rootfs/etc/bbinit.d/example | 18 | ||||
-rw-r--r-- | boot-env/pbs/uclib-rootfs/etc/events/example | 2 |
4 files changed, 75 insertions, 0 deletions
diff --git a/boot-env/pbs/uclib-rootfs/bin/bbinit b/boot-env/pbs/uclib-rootfs/bin/bbinit new file mode 100755 index 00000000..6edb69aa --- /dev/null +++ b/boot-env/pbs/uclib-rootfs/bin/bbinit @@ -0,0 +1,17 @@ +#!/bin/hush + +# create clean setup +rm /etc/events.d/* +for f in $(ls -1 /etc/events) +do + ln -sf /etc/events/$f /etc/events.d/$f +done + +mkdir -p /tmp/event +rm /tmp/event/* +rm /tmp/events + +# start bbinit +inotifyd /bin/handleEvents /tmp/event/:n & +# initial call (executing all zero dependent scipts) +handleEvents diff --git a/boot-env/pbs/uclib-rootfs/bin/handleEvents b/boot-env/pbs/uclib-rootfs/bin/handleEvents new file mode 100755 index 00000000..9bb78951 --- /dev/null +++ b/boot-env/pbs/uclib-rootfs/bin/handleEvents @@ -0,0 +1,38 @@ +#!/bin/hush + +# wait for lock +while [ -f /tmp/bbinit.lock ] +do + sleep 0.1 +done + +# lock eventhandler +touch /tmp/bbinit.lock + +# source list of finished events +[ -f /tmp/events ] && . /tmp/events + +# go through all unhandled events +for f in $( ls -1 /etc/events.d/ ) +do + . /etc/events.d/$f + + # check dependencies + eval dep=\$${f}_depends + havealldeps=1 + for d in $dep + do + eval havedep=\$have${d} + [ "x$havedep" == "x1" ] || havealldeps=0 + done + + # if nothing is missing execute script + if [ "x$havealldeps" == "x1" ]; then + echo executing $f + /etc/bbinit.d/$f & + rm /etc/events.d/$f + fi +done + +# unlock eventhandler +rm /tmp/bbinit.lock diff --git a/boot-env/pbs/uclib-rootfs/etc/bbinit.d/example b/boot-env/pbs/uclib-rootfs/etc/bbinit.d/example new file mode 100644 index 00000000..245ca530 --- /dev/null +++ b/boot-env/pbs/uclib-rootfs/etc/bbinit.d/example @@ -0,0 +1,18 @@ +#!/bin/hush + +me=$(basename $0) + +. /etc/events/$me + +echo "[$me] starting .." +for i in 1 2 3 4 5 6 +do + echo "[$me] $i" + sleep 1 +done +echo "[$me] finished .." +touch /tmp/event/$me +eval have=${me}_provides +echo "have${have}=1" >> /tmp/events + + diff --git a/boot-env/pbs/uclib-rootfs/etc/events/example b/boot-env/pbs/uclib-rootfs/etc/events/example new file mode 100644 index 00000000..a09326e2 --- /dev/null +++ b/boot-env/pbs/uclib-rootfs/etc/events/example @@ -0,0 +1,2 @@ +example_depends="" +example_privides="example" |