diff options
Diffstat (limited to 'meta/recipes-core/udev/files/udevsynthesize.sh')
-rw-r--r-- | meta/recipes-core/udev/files/udevsynthesize.sh | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/meta/recipes-core/udev/files/udevsynthesize.sh b/meta/recipes-core/udev/files/udevsynthesize.sh new file mode 100644 index 0000000000..d58217c144 --- /dev/null +++ b/meta/recipes-core/udev/files/udevsynthesize.sh | |||
@@ -0,0 +1,51 @@ | |||
1 | #!/bin/sh -e | ||
2 | |||
3 | load_input_modules() { | ||
4 | for module in mousedev evdev joydev; do | ||
5 | modprobe -q $module || true | ||
6 | done | ||
7 | } | ||
8 | |||
9 | if [ ! -e /sys/class/mem/null/uevent ]; then # <= 2.6.14 | ||
10 | /lib/udev/udevsynthesize | ||
11 | load_input_modules | ||
12 | exit 0 | ||
13 | fi | ||
14 | |||
15 | # replace $IFS with something which is not likely to appear in a sysfs path, | ||
16 | # because some buggy drivers have spaces in their names | ||
17 | oldifs="$IFS" | ||
18 | IFS="|" | ||
19 | |||
20 | for file in /sys/bus/*/devices/*/uevent /sys/class/*/*/uevent \ | ||
21 | /sys/block/*/uevent /sys/block/*/*/uevent; do | ||
22 | case "$file" in | ||
23 | */device/uevent) ;; # skip followed device symlinks | ||
24 | */\*/*) ;; | ||
25 | |||
26 | */class/mem/*) # for /dev/null | ||
27 | first="$first${IFS}$file" ;; | ||
28 | |||
29 | */block/md[0-9]*) | ||
30 | last="$last${IFS}$file" ;; | ||
31 | |||
32 | *) | ||
33 | default="$default${IFS}$file" ;; | ||
34 | esac | ||
35 | done | ||
36 | |||
37 | for file in $first${IFS}$default${IFS}$last; do | ||
38 | [ "$file" ] || continue | ||
39 | echo 'add' > "$file" || true | ||
40 | done | ||
41 | |||
42 | IFS="$oldifs" | ||
43 | |||
44 | case "$(uname -r)" in | ||
45 | 2.6.1[0-5]|2.6.1[0-5][!0-9]*) # <= 2.6.15 | ||
46 | load_input_modules | ||
47 | ;; | ||
48 | esac | ||
49 | |||
50 | exit 0 | ||
51 | |||