summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/udev
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:14:24 +0100
committerRichard Purdie <rpurdie@linux.intel.com>2010-08-27 15:29:45 +0100
commit29d6678fd546377459ef75cf54abeef5b969b5cf (patch)
tree8edd65790e37a00d01c3f203f773fe4b5012db18 /meta/recipes-core/udev
parentda49de6885ee1bc424e70bc02f21f6ab920efb55 (diff)
downloadpoky-29d6678fd546377459ef75cf54abeef5b969b5cf.tar.gz
Major layout change to the packages directory
Having one monolithic packages directory makes it hard to find things and is generally overwhelming. This commit splits it into several logical sections roughly based on function, recipes.txt gives more information about the classifications used. The opportunity is also used to switch from "packages" to "recipes" as used in OpenEmbedded as the term "packages" can be confusing to people and has many different meanings. Not all recipes have been classified yet, this is just a first pass at separating things out. Some packages are moved to meta-extras as they're no longer actively used or maintained. Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/recipes-core/udev')
-rw-r--r--meta/recipes-core/udev/files/50-hostap_cs.rules4
-rw-r--r--meta/recipes-core/udev/files/akita/mount.blacklist3
-rw-r--r--meta/recipes-core/udev/files/c7x0/mount.blacklist3
-rw-r--r--meta/recipes-core/udev/files/devfs-udev.rules108
-rw-r--r--meta/recipes-core/udev/files/fix-alignment.patch24
-rwxr-xr-xmeta/recipes-core/udev/files/init212
-rw-r--r--meta/recipes-core/udev/files/links.conf21
-rw-r--r--meta/recipes-core/udev/files/local.rules22
-rw-r--r--meta/recipes-core/udev/files/mount.blacklist3
-rw-r--r--meta/recipes-core/udev/files/mount.sh68
-rw-r--r--meta/recipes-core/udev/files/network.sh55
-rw-r--r--meta/recipes-core/udev/files/noasmlinkage.patch38
-rw-r--r--meta/recipes-core/udev/files/permissions.rules81
-rw-r--r--meta/recipes-core/udev/files/slugos/mount.blacklist4
-rw-r--r--meta/recipes-core/udev/files/spitz/mount.blacklist4
-rw-r--r--meta/recipes-core/udev/files/tmpfs.patch16
-rw-r--r--meta/recipes-core/udev/files/tosa/mount.blacklist3
-rw-r--r--meta/recipes-core/udev/files/udev-cache20
-rw-r--r--meta/recipes-core/udev/files/udev.rules98
-rw-r--r--meta/recipes-core/udev/files/udev_network_queue.sh35
-rw-r--r--meta/recipes-core/udev/files/udevsynthesize.patch776
-rw-r--r--meta/recipes-core/udev/files/udevsynthesize.sh51
-rw-r--r--meta/recipes-core/udev/udev-092/arm_inotify_fix.patch17
-rw-r--r--meta/recipes-core/udev/udev-092/flags.patch51
-rw-r--r--meta/recipes-core/udev/udev-092/init227
-rw-r--r--meta/recipes-core/udev/udev-092/local.rules31
-rw-r--r--meta/recipes-core/udev/udev-092/permissions.rules109
-rw-r--r--meta/recipes-core/udev/udev-092/udev.rules102
-rw-r--r--meta/recipes-core/udev/udev-115/flags.patch56
-rw-r--r--meta/recipes-core/udev/udev-115/init48
-rw-r--r--meta/recipes-core/udev/udev-115/local.rules31
-rw-r--r--meta/recipes-core/udev/udev-115/noasmlinkage.patch36
-rw-r--r--meta/recipes-core/udev/udev-115/permissions.rules101
-rw-r--r--meta/recipes-core/udev/udev-115/udev.rules105
-rw-r--r--meta/recipes-core/udev/udev-115/udevtrigger_add_devname_filtering.patch104
-rw-r--r--meta/recipes-core/udev/udev-115/vol_id_ld.patch17
-rw-r--r--meta/recipes-core/udev/udev-124/flags.patch56
-rw-r--r--meta/recipes-core/udev/udev-124/init59
-rw-r--r--meta/recipes-core/udev/udev-124/local.rules31
-rw-r--r--meta/recipes-core/udev/udev-124/noasmlinkage.patch45
-rw-r--r--meta/recipes-core/udev/udev-124/permissions.rules131
-rw-r--r--meta/recipes-core/udev/udev-124/run.rules14
-rw-r--r--meta/recipes-core/udev/udev-124/udev.rules116
-rw-r--r--meta/recipes-core/udev/udev-124/udevtrigger_add_devname_filtering.patch99
-rw-r--r--meta/recipes-core/udev/udev-124/vol_id_ld.patch17
-rw-r--r--meta/recipes-core/udev/udev-141/igep0020/local.rules34
-rw-r--r--meta/recipes-core/udev/udev-141/init59
-rw-r--r--meta/recipes-core/udev/udev-141/local.rules33
-rw-r--r--meta/recipes-core/udev/udev-141/noasmlinkage.patch48
-rw-r--r--meta/recipes-core/udev/udev-141/permissions.rules131
-rw-r--r--meta/recipes-core/udev/udev-141/run.rules14
-rw-r--r--meta/recipes-core/udev/udev-141/udev.rules116
-rw-r--r--meta/recipes-core/udev/udev-141/unbreak.patch24
-rw-r--r--meta/recipes-core/udev/udev-145/enable-gudev.patch48
-rw-r--r--meta/recipes-core/udev/udev-145/init59
-rw-r--r--meta/recipes-core/udev/udev-145/local.rules33
-rw-r--r--meta/recipes-core/udev/udev-145/noasmlinkage.patch48
-rw-r--r--meta/recipes-core/udev/udev-145/permissions.rules131
-rw-r--r--meta/recipes-core/udev/udev-145/run.rules14
-rw-r--r--meta/recipes-core/udev/udev-145/udev.rules116
-rw-r--r--meta/recipes-core/udev/udev-145/unbreak.patch24
-rw-r--r--meta/recipes-core/udev/udev-158/init59
-rw-r--r--meta/recipes-core/udev/udev-158/local.rules33
-rw-r--r--meta/recipes-core/udev/udev-158/permissions.rules131
-rw-r--r--meta/recipes-core/udev/udev-158/run.rules14
-rw-r--r--meta/recipes-core/udev/udev-158/udev.rules116
-rw-r--r--meta/recipes-core/udev/udev-extraconf_0.0.bb12
-rw-r--r--meta/recipes-core/udev/udev-new.inc92
-rw-r--r--meta/recipes-core/udev/udev.inc71
-rw-r--r--meta/recipes-core/udev/udev_092.bb58
-rw-r--r--meta/recipes-core/udev/udev_115.bb55
-rw-r--r--meta/recipes-core/udev/udev_124.bb62
-rw-r--r--meta/recipes-core/udev/udev_141.bb65
-rw-r--r--meta/recipes-core/udev/udev_145.bb65
-rw-r--r--meta/recipes-core/udev/udev_158.bb3
75 files changed, 5020 insertions, 0 deletions
diff --git a/meta/recipes-core/udev/files/50-hostap_cs.rules b/meta/recipes-core/udev/files/50-hostap_cs.rules
new file mode 100644
index 0000000000..efefdc58fc
--- /dev/null
+++ b/meta/recipes-core/udev/files/50-hostap_cs.rules
@@ -0,0 +1,4 @@
1# hostap_cs needs ignore_cis_vcc=1 set - this should handle all cards
2#
3ACTION=="add", DEVICE=="hostap_cs", \
4 SYSFS{func_id}=="0x06", RUN+="/sbin/modprobe hostap_cs ignore_cis_vcc=1"
diff --git a/meta/recipes-core/udev/files/akita/mount.blacklist b/meta/recipes-core/udev/files/akita/mount.blacklist
new file mode 100644
index 0000000000..c15b582298
--- /dev/null
+++ b/meta/recipes-core/udev/files/akita/mount.blacklist
@@ -0,0 +1,3 @@
1/dev/mtdblock
2/dev/loop
3/dev/ram
diff --git a/meta/recipes-core/udev/files/c7x0/mount.blacklist b/meta/recipes-core/udev/files/c7x0/mount.blacklist
new file mode 100644
index 0000000000..c15b582298
--- /dev/null
+++ b/meta/recipes-core/udev/files/c7x0/mount.blacklist
@@ -0,0 +1,3 @@
1/dev/mtdblock
2/dev/loop
3/dev/ram
diff --git a/meta/recipes-core/udev/files/devfs-udev.rules b/meta/recipes-core/udev/files/devfs-udev.rules
new file mode 100644
index 0000000000..0ba1ad4e7f
--- /dev/null
+++ b/meta/recipes-core/udev/files/devfs-udev.rules
@@ -0,0 +1,108 @@
1# The use of these rules is not recommended or supported.
2# In a world where devices can come and go at any time, the devfs scheme
3# of simple device enumeration does not help _anything_. Just forget about
4# it. Use custom rules to name your device or look at the persistent device
5# naming scheme, which is implemented for disks and add your subsystem.
6
7# ide block devices
8BUS="ide", KERNEL="hd*", PROGRAM="/etc/udev/ide-devfs.sh %k %b %n", NAME="%k", SYMLINK="%c{1} %c{2}"
9
10# md block devices
11KERNEL="md[0-9]*", NAME="md/%n"
12
13# floppy devices
14KERNEL="fd[0-9]*", NAME="floppy/%n"
15
16# tty devices
17KERNEL="tty[0-9]*", NAME="vc/%n", SYMLINK="%k"
18KERNEL="ttyS[0-9]*", NAME="tts/%n", SYMLINK="%k"
19KERNEL="ttyUSB[0-9]*", NAME="tts/USB%n"
20
21# vc devices
22KERNEL="vcs", NAME="vcc/0"
23KERNEL="vcs[0-9]*", NAME="vcc/%n"
24KERNEL="vcsa", NAME="vcc/a0"
25KERNEL="vcsa[0-9]*", NAME="vcc/a%n"
26
27# v4l devices
28KERNEL="video[0-9]*", NAME="v4l/video%n"
29KERNEL="radio[0-9]*", NAME="v4l/radio%n"
30KERNEL="vbi[0-9]*", NAME="v4l/vbi%n"
31KERNEL="vtx[0-9]*", NAME="v4l/vtx%n"
32
33# dm devices (ignore them)
34KERNEL="dm-[0-9]*", NAME=""
35
36# i2c devices
37KERNEL="i2c-[0-9]*", NAME="i2c/%n", SYMLINK="%k"
38
39# loop devices
40KERNEL="loop[0-9]*", NAME="loop/%n", SYMLINK="%k"
41
42# ramdisks
43KERNEL="ram[0-9]*", NAME="rd/%n", SYMLINK="%k"
44
45# framebuffer devices
46KERNEL="fb[0-9]*", NAME="fb/%n", SYMLINK="%k"
47
48# misc
49KERNEL="rtc", NAME="misc/%k", SYMLINK="%k"
50KERNEL="psaux", NAME="misc/%k", SYMLINK="%k"
51KERNEL="agpgart", NAME="misc/%k", SYMLINK="%k"
52KERNEL="rtc", NAME="misc/%k", SYMLINK="%k"
53KERNEL="psaux", NAME="misc/%k", SYMLINK="%k"
54KERNEL="uinput", NAME="misc/%k", SYMLINK="%k"
55
56# alsa devices
57KERNEL="controlC[0-9]*", NAME="snd/%k"
58KERNEL="hw[CD0-9]*", NAME="snd/%k"
59KERNEL="pcm[CD0-9cp]*", NAME="snd/%k"
60KERNEL="midi[CD0-9]*", NAME="snd/%k"
61KERNEL="timer", NAME="snd/%k"
62KERNEL="seq", NAME="snd/%k"
63
64# oss devices
65KERNEL="audio*", NAME="sound/%k", SYMLINK="%k"
66KERNEL="dmmidi", NAME="sound/%k", SYMLINK="%k"
67KERNEL="dsp*", NAME="sound/%k", SYMLINK="%k"
68KERNEL="midi*", NAME="sound/%k", SYMLINK="%k"
69KERNEL="mixer*", NAME="sound/%k", SYMLINK="%k"
70KERNEL="sequencer*", NAME="sound/%k", SYMLINK="%k"
71
72# input devices
73KERNEL="mice", NAME="input/%k"
74KERNEL="mouse*", NAME="input/%k"
75KERNEL="event*", NAME="input/%k"
76KERNEL="js*", NAME="input/%k"
77KERNEL="ts*", NAME="input/%k"
78
79# USB devices
80KERNEL="hiddev*", NAME="usb/%k"
81KERNEL="auer*", NAME="usb/%k"
82KERNEL="legousbtower*", NAME="usb/%k"
83KERNEL="dabusb*", NAME="usb/%k"
84BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k"
85
86# netlink devices
87KERNEL="route", NAME="netlink/%k"
88KERNEL="skip", NAME="netlink/%k"
89KERNEL="usersock", NAME="netlink/%k"
90KERNEL="fwmonitor", NAME="netlink/%k"
91KERNEL="tcpdiag", NAME="netlink/%k"
92KERNEL="nflog", NAME="netlink/%k"
93KERNEL="xfrm", NAME="netlink/%k"
94KERNEL="arpd", NAME="netlink/%k"
95KERNEL="route6", NAME="netlink/%k"
96KERNEL="ip6_fw", NAME="netlink/%k"
97KERNEL="dnrtmsg", NAME="netlink/%k"
98KERNEL="tap*", NAME="netlink/%k"
99
100# CAPI devices
101KERNEL="capi", NAME="capi20", SYMLINK="isdn/capi20"
102KERNEL="capi*", NAME="capi/%n"
103
104# Network devices
105KERNEL="tun", NAME="net/%k"
106
107# raw devices
108KERNEL="raw[0-9]*", NAME="raw/%k"
diff --git a/meta/recipes-core/udev/files/fix-alignment.patch b/meta/recipes-core/udev/files/fix-alignment.patch
new file mode 100644
index 0000000000..8c7b8b5ac5
--- /dev/null
+++ b/meta/recipes-core/udev/files/fix-alignment.patch
@@ -0,0 +1,24 @@
1diff --git a/udev_rules_parse.c b/udev_rules_parse.c
2--- a/udev_rules_parse.c
3+++ b/udev_rules_parse.c
4@@ -241,6 +241,7 @@ static int add_to_rules(struct udev_rule
5 int valid;
6 char *linepos;
7 char *attr;
8+ size_t padding;
9 int retval;
10
11 /* get all the keys */
12@@ -506,6 +507,11 @@ static int add_to_rules(struct udev_rule
13
14 /* grow buffer and add rule */
15 rule_size = sizeof(struct udev_rule) + rule->bufsize;
16+ padding = (sizeof(size_t) - rule_size % sizeof(size_t)) % sizeof(size_t);
17+ dbg("add %zi padding bytes", padding);
18+ rule_size += padding;
19+ rule->bufsize += padding;
20+
21 rules->buf = realloc(rules->buf, rules->bufsize + rule_size);
22 if (!rules->buf) {
23 err("realloc failed");
24
diff --git a/meta/recipes-core/udev/files/init b/meta/recipes-core/udev/files/init
new file mode 100755
index 0000000000..8cbab188f0
--- /dev/null
+++ b/meta/recipes-core/udev/files/init
@@ -0,0 +1,212 @@
1#!/bin/sh -e
2
3UDEVSTART=/sbin/udevstart
4
5# defaults
6tmpfs_size="10M"
7udev_root="/dev"
8
9[ -x $UDEVSTART ] || exit 0
10
11. /etc/udev/udev.conf
12
13##############################################################################
14
15# we need to unmount /dev/pts/ and remount it later over the tmpfs
16unmount_devpts() {
17 if mountpoint -q /dev/pts/; then
18 umount -l /dev/pts/
19 fi
20
21 if mountpoint -q /dev/shm/; then
22 umount -l /dev/shm/
23 fi
24}
25
26# mount a tmpfs over /dev, if somebody did not already do it
27mount_tmpfs() {
28 if grep -E -q "^[^[:space:]]+ /dev tmpfs" /proc/mounts; then
29 return 0
30 fi
31
32 # /dev/.static/dev/ is used by MAKEDEV to access the real /dev/ directory.
33 # /etc/udev/ is recycled as a temporary mount point because it's the only
34 # directory which is guaranteed to be available.
35 mount -n -o bind /dev /etc/udev
36
37 if ! mount -n -o size=$tmpfs_size,mode=0755 -t tmpfs tmpfs /dev; then
38 umount /etc/udev
39 echo "udev requires tmpfs support, not started."
40 exit 1
41 fi
42
43 # using ln to test if /dev works, because touch is in /usr/bin/
44 if ln -s test /dev/test-file; then
45 rm /dev/test-file
46 else
47 echo "udev requires tmpfs support, not started."
48 umount /etc/udev
49 umount /dev
50 exit 1
51 fi
52
53 mkdir -p /dev/.static/dev
54 chmod 700 /dev/.static/
55 # The mount options in busybox are non-standard...
56 if test -x /bin/mount.util-linux
57 then
58 /bin/mount.util-linux --move /etc/udev /dev/.static/dev
59 elif test -x /bin/busybox
60 then
61 busybox mount -n -o move /etc/udev /dev/.static/dev
62 else
63 echo "udev requires an identifiable mount command, not started."
64 umount /etc/udev
65 umount /dev
66 exit 1
67 fi
68}
69
70# I hate this hack. -- Md
71make_extra_nodes() {
72 [ -e /etc/udev/links.conf ] || return 0
73 grep '^[^#]' /etc/udev/links.conf | \
74 while read type name arg1; do
75 [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] ||continue
76 case "$type" in
77 L) ln -s $arg1 /dev/$name ;;
78 D) mkdir -p /dev/$name ;;
79 M) mknod -m 600 /dev/$name $arg1 ;;
80 *) echo "links.conf: unparseable line ($type $name $arg1)" ;;
81 esac
82 done
83}
84
85# this function is duplicated in preinst, postinst and d-i
86supported_kernel() {
87 case "$(uname -r)" in
88 2.[012345].*|2.6.[0-9]|2.6.[0-9][!0-9]*) return 1 ;;
89 2.6.1[01]|2.6.1[01][!0-9]*) return 1 ;;
90 esac
91 return 0
92}
93
94# shell version of /usr/bin/tty
95my_tty() {
96 [ -x /bin/readlink ] || return 0
97 [ -e /proc/self/fd/0 ] || return 0
98 readlink --silent /proc/self/fd/0 || true
99}
100
101warn_if_interactive() {
102 if [ "$RUNLEVEL" = "S" -a "$PREVLEVEL" = "N" ]; then
103 return 0
104 fi
105
106 TTY=$(my_tty)
107 if [ -z "$TTY" -o "$TTY" = "/dev/console" ]; then
108 return 0
109 fi
110
111 printf "\n\n\nIt has been detected that the command\n\n\t$0 $*\n\n"
112 printf "has been run from an interactive shell.\n"
113 printf "It will probably not do what you expect, so this script will wait\n"
114 printf "60 seconds before continuing. Press ^C to stop it.\n"
115 printf "RUNNING THIS COMMAND IS HIGHLY DISCOURAGED!\n\n\n\n"
116 sleep 60
117}
118
119##############################################################################
120
121if ! supported_kernel; then
122 echo "udev requires a kernel >= 2.6.12, not started."
123 exit 1
124fi
125
126if [ ! -e /proc/filesystems ]; then
127 echo "udev requires a mounted procfs, not started."
128 exit 1
129fi
130
131if ! grep -q '[[:space:]]tmpfs$' /proc/filesystems; then
132 echo "udev requires tmpfs support, not started."
133 exit 1
134fi
135
136if [ ! -d /sys/class/ ]; then
137 echo "udev requires a mounted sysfs, not started."
138 exit 1
139fi
140
141if [ ! -e /proc/sys/kernel/hotplug ] && [ ! -e /sys/kernel/uevent_helper ]; then
142 echo "udev requires hotplug support, not started."
143 exit 1
144fi
145
146##############################################################################
147
148# When modifying this script, do not forget that between the time that
149# the new /dev has been mounted and udevstart has been run there will be
150# no /dev/null. This also means that you cannot use the "&" shell command.
151
152case "$1" in
153 start)
154 if [ -e "$udev_root/.udevdb" ]; then
155 if mountpoint -q /dev/; then
156 TMPFS_MOUNTED=1
157 else
158 echo ".udevdb already exists on the old $udev_root!"
159 fi
160 fi
161 warn_if_interactive
162
163 #echo /sbin/udevsend > /proc/sys/kernel/hotplug
164 if [ -e /sys/kernel/uevent_helper ] ; then
165 echo "" > /sys/kernel/uevent_helper
166 else
167 echo "" > /proc/sys/kernel/hotplug
168 fi
169 udevsend
170 if [ "$UDEV_DISABLED" = "yes" ]; then
171 echo "udev disabled on the kernel command line, not started."
172 exit 0
173 fi
174
175 if [ ! "$TMPFS_MOUNTED" ]; then
176 unmount_devpts
177 mount_tmpfs
178 [ -d /proc/1 ] || mount -n /proc
179 # if this directory is not present /dev will not be updated by udev
180 mkdir /dev/.udevdb/
181 echo "Creating initial device nodes..."
182 udevstart
183 fi
184 make_extra_nodes
185 ;;
186 stop)
187 warn_if_interactive
188 start-stop-daemon --stop --exec /sbin/udevd --quiet
189 unmount_devpts
190 if [ -d /dev/.static/dev/ ]; then
191 umount -l /dev/.static/dev/ || true
192 fi
193 echo "Unmounting /dev..."
194 # unmounting with -l should never fail
195 if ! umount -l /dev; then
196 exit 1
197 fi
198 ;;
199 restart|force-reload)
200 start-stop-daemon --stop --exec /sbin/udevd --quiet
201 log_begin_msg "Recreating device nodes..."
202 udevstart
203 make_extra_nodes
204 log_end_msg 0
205 ;;
206 *)
207 echo "Usage: /etc/init.d/udev {start|stop|restart|force-reload}"
208 exit 1
209 ;;
210esac
211
212exit 0
diff --git a/meta/recipes-core/udev/files/links.conf b/meta/recipes-core/udev/files/links.conf
new file mode 100644
index 0000000000..8fff922db6
--- /dev/null
+++ b/meta/recipes-core/udev/files/links.conf
@@ -0,0 +1,21 @@
1# This file does not exist. Please do not ask the debian maintainer about it.
2# You may use it to do strange and wonderful things, at your risk.
3
4L fd /proc/self/fd
5L stdin /proc/self/fd/0
6L stdout /proc/self/fd/1
7L stderr /proc/self/fd/2
8L core /proc/kcore
9L sndstat /proc/asound/oss/sndstat
10L MAKEDEV /sbin/MAKEDEV
11
12D pts
13D shm
14
15# Hic sunt leones.
16M ppp c 108 0
17D loop
18M loop/0 b 7 0
19D net
20M net/tun c 10 200
21
diff --git a/meta/recipes-core/udev/files/local.rules b/meta/recipes-core/udev/files/local.rules
new file mode 100644
index 0000000000..5f2efbeb0c
--- /dev/null
+++ b/meta/recipes-core/udev/files/local.rules
@@ -0,0 +1,22 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# Media automounting
17SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
18SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
19
20# Handle network interface setup
21SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
22SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
diff --git a/meta/recipes-core/udev/files/mount.blacklist b/meta/recipes-core/udev/files/mount.blacklist
new file mode 100644
index 0000000000..d3ebb17176
--- /dev/null
+++ b/meta/recipes-core/udev/files/mount.blacklist
@@ -0,0 +1,3 @@
1/dev/loop
2/dev/ram
3/dev/mtdblock
diff --git a/meta/recipes-core/udev/files/mount.sh b/meta/recipes-core/udev/files/mount.sh
new file mode 100644
index 0000000000..53fefa3681
--- /dev/null
+++ b/meta/recipes-core/udev/files/mount.sh
@@ -0,0 +1,68 @@
1#!/bin/sh
2#
3# Called from udev
4#
5# Attempt to mount any added block devices and umount any removed devices
6
7
8MOUNT="/bin/mount"
9PMOUNT="/usr/bin/pmount"
10UMOUNT="/bin/umount"
11
12for line in `cat /etc/udev/mount.blacklist`
13do
14 if [ ` expr match "$DEVNAME" "$line" ` -gt 0 ];
15 then
16 logger "udev/mount.sh" "[$DEVNAME] is blacklisted, ignoring"
17 exit 0
18 fi
19done
20
21automount() {
22 name="`basename "$DEVNAME"`"
23
24 ! test -d "/media/$name" && mkdir -p "/media/$name"
25
26 if ! $MOUNT -t auto -o sync $DEVNAME "/media/$name"
27 then
28 #logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/media/$name\" failed!"
29 rm_dir "/media/$name"
30 else
31 logger "mount.sh/automount" "Auto-mount of [/media/$name] successful"
32 touch "/tmp/.automount-$name"
33 fi
34}
35
36rm_dir() {
37 # We do not want to rm -r populated directories
38 if test "`find "$1" | wc -l | tr -d " "`" -lt 2 -a -d "$1"
39 then
40 ! test -z "$1" && rm -r "$1"
41 else
42 logger "mount.sh/automount" "Not removing non-empty directory [$1]"
43 fi
44}
45
46if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ]; then
47 if [ -x "$PMOUNT" ]; then
48 $PMOUNT $DEVNAME 2> /dev/null
49 elif [ -x $MOUNT ]; then
50 $MOUNT $DEVNAME 2> /dev/null
51 fi
52
53 # If the device isn't mounted at this point, it isn't configured in fstab
54 grep -q "^$DEVNAME " /proc/mounts || automount
55fi
56
57
58
59if [ "$ACTION" = "remove" ] && [ -x "$UMOUNT" ] && [ -n "$DEVNAME" ]; then
60 for mnt in `cat /proc/mounts | grep "$DEVNAME" | cut -f 2 -d " " `
61 do
62 $UMOUNT $mnt
63 done
64
65 # Remove empty directories from auto-mounter
66 name="`basename "$DEVNAME"`"
67 test -e "/tmp/.automount-$name" && rm_dir "/media/$name"
68fi
diff --git a/meta/recipes-core/udev/files/network.sh b/meta/recipes-core/udev/files/network.sh
new file mode 100644
index 0000000000..5016328df4
--- /dev/null
+++ b/meta/recipes-core/udev/files/network.sh
@@ -0,0 +1,55 @@
1#!/bin/sh
2
3# Do not run when pcmcia-cs is installed
4test -x /sbin/cardctl && exit 0
5
6# We get two "add" events for hostap cards due to wifi0
7echo "$INTERFACE" | grep -q wifi && exit 0
8
9
10# Check if /etc/init.d/network has been run yet to see if we are
11# called by starting /etc/rcS.d/S03udev and not by hotplugging a device
12#
13# At this stage, network interfaces should not be brought up
14# automatically because:
15# a) /etc/init.d/network has not been run yet (security issue)
16# b) /var has not been populated yet so /etc/resolv,conf points to
17# oblivion, making the network unusable
18#
19
20spoofp="`grep ^spoofprotect /etc/network/options`"
21if test -z "$spoofp"
22then
23 # This is the default from /etc/init.d/network
24 spoofp_val=yes
25else
26 spoofp_val=${spoofp#spoofprotect=}
27fi
28
29test "$spoofp_val" = yes && spoofp_val=1 || spoofp_val=0
30
31# I think it is safe to assume that "lo" will always be there ;)
32if test "`cat /proc/sys/net/ipv4/conf/lo/rp_filter`" != "$spoofp_val" -a -n "$spoofp_val"
33then
34 echo "$INTERFACE" >> /dev/udev_network_queue
35 exit 0
36fi
37
38#
39# Code taken from pcmcia-cs:/etc/pcmcia/network
40#
41
42# if this interface has an entry in /etc/network/interfaces, let ifupdown
43# handle it
44if grep -q "iface \+$INTERFACE" /etc/network/interfaces; then
45 case $ACTION in
46 add)
47 ifconfig | grep -q "^$INTERFACE" || ifup $INTERFACE
48 ;;
49 remove)
50 ifdown $INTERFACE
51 ;;
52 esac
53
54 exit 0
55fi
diff --git a/meta/recipes-core/udev/files/noasmlinkage.patch b/meta/recipes-core/udev/files/noasmlinkage.patch
new file mode 100644
index 0000000000..0d8e854c0e
--- /dev/null
+++ b/meta/recipes-core/udev/files/noasmlinkage.patch
@@ -0,0 +1,38 @@
1
2#
3# Patch managed by http://www.holgerschurig.de/patcher.html
4#
5
6--- udev-062/udev.c~noasmlinkage.patch
7+++ udev-062/udev.c
8@@ -54,7 +54,7 @@
9 }
10 #endif
11
12-static void asmlinkage sig_handler(int signum)
13+static void sig_handler(int signum)
14 {
15 switch (signum) {
16 case SIGALRM:
17--- udev-062/udevd.c~noasmlinkage.patch
18+++ udev-062/udevd.c
19@@ -639,7 +639,7 @@
20 return msg;
21 }
22
23-static void asmlinkage sig_handler(int signum)
24+static void sig_handler(int signum)
25 {
26 int rc;
27
28--- udev-062/udevstart.c~noasmlinkage.patch
29+++ udev-062/udevstart.c
30@@ -323,7 +323,7 @@
31 exec_list(&device_list);
32 }
33
34-static void asmlinkage sig_handler(int signum)
35+static void sig_handler(int signum)
36 {
37 switch (signum) {
38 case SIGALRM:
diff --git a/meta/recipes-core/udev/files/permissions.rules b/meta/recipes-core/udev/files/permissions.rules
new file mode 100644
index 0000000000..86d771276b
--- /dev/null
+++ b/meta/recipes-core/udev/files/permissions.rules
@@ -0,0 +1,81 @@
1# default permissions for block devices
2SUBSYSTEM=="block", GROUP="disk"
3SUBSYSTEM=="block", SYSFS{removable}=="1", GROUP="floppy"
4
5# IDE devices
6BUS=="ide", KERNEL=="hd[a-z]", SYSFS{removable}="1", \
7 PROGRAM="/bin/cat /proc/ide/%k/media", RESULT=="cdrom*", GROUP="cdrom"
8BUS=="ide", KERNEL=="ht[0-9]*", GROUP="tape"
9BUS=="ide", KERNEL=="nht[0-9]*", GROUP="tape"
10
11# SCSI devices
12BUS=="scsi", SYSFS{type}=="1", GROUP="tape"
13BUS=="scsi", SYSFS{type}=="5", GROUP="cdrom"
14BUS=="scsi", SYSFS{type}=="6", GROUP="scanner"
15
16# USB devices
17BUS=="usb", KERNEL=="legousbtower*", MODE="0666"
18BUS=="usb", KERNEL=="lp[0-9]*", GROUP="lp"
19
20# serial devices
21SUBSYSTEM=="tty", GROUP="dialout"
22SUBSYSTEM=="capi", GROUP="dialout"
23SUBSYSTEM=="slamr", GROUP="dialout"
24
25# vc devices (all members of the tty subsystem)
26KERNEL=="ptmx", MODE="0666", GROUP="root"
27KERNEL=="console", MODE="0600", GROUP="root"
28KERNEL=="tty", MODE="0666", GROUP="root"
29KERNEL=="tty[0-9]*", GROUP="root"
30KERNEL=="pty*", MODE="0666", GROUP="tty"
31
32# video devices
33SUBSYSTEM=="video4linux", GROUP="video"
34SUBSYSTEM=="drm", GROUP="video"
35SUBSYSTEM=="dvb", GROUP="video"
36SUBSYSTEM=="em8300", GROUP="video"
37SUBSYSTEM=="graphics", GROUP="video"
38SUBSYSTEM=="nvidia", GROUP="video"
39
40# misc devices
41KERNEL=="random", MODE="0666"
42KERNEL=="urandom", MODE="0444"
43KERNEL=="mem", MODE="0640", GROUP="kmem"
44KERNEL=="kmem", MODE="0640", GROUP="kmem"
45KERNEL=="port", MODE="0640", GROUP="kmem"
46KERNEL=="full", MODE="0666"
47KERNEL=="null", MODE="0666"
48KERNEL=="zero", MODE="0666"
49KERNEL=="inotify", MODE="0666"
50KERNEL=="sgi_fetchop", MODE="0666"
51KERNEL=="sonypi", MODE="0666"
52KERNEL=="agpgart", GROUP="video"
53KERNEL=="nvram", GROUP="nvram"
54KERNEL=="rtc", MODE="0660", GROUP="audio"
55
56KERNEL=="cdemu[0-9]*", GROUP="cdrom"
57KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
58KERNEL=="pktcdvd", MODE="0644"
59
60# printers and parallel devices
61SUBSYSTEM=="printer", GROUP="lp"
62SUBSYSTEM=="ppdev", GROUP="lp"
63KERNEL=="pt[0-9]*", GROUP="tape"
64KERNEL=="pht[0-9]*", GROUP="tape"
65
66# sound devices
67SUBSYSTEM=="sound", GROUP="audio"
68
69# ieee1394 devices
70KERNEL=="raw1394", GROUP="disk"
71KERNEL=="dv1394*", GROUP="video"
72KERNEL=="video1394*", GROUP="video"
73
74# input devices
75KERNEL=="event[0-9]*", MODE="0664"
76KERNEL=="js[0-9]*", MODE="0664"
77
78# AOE character devices
79SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
80SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
81
diff --git a/meta/recipes-core/udev/files/slugos/mount.blacklist b/meta/recipes-core/udev/files/slugos/mount.blacklist
new file mode 100644
index 0000000000..210702f837
--- /dev/null
+++ b/meta/recipes-core/udev/files/slugos/mount.blacklist
@@ -0,0 +1,4 @@
1ram[0-9]$
2mtdblock[0-9]$
3hd[a-z]$
4sd[a-z]$
diff --git a/meta/recipes-core/udev/files/spitz/mount.blacklist b/meta/recipes-core/udev/files/spitz/mount.blacklist
new file mode 100644
index 0000000000..aee308f9b8
--- /dev/null
+++ b/meta/recipes-core/udev/files/spitz/mount.blacklist
@@ -0,0 +1,4 @@
1/dev/mtdblock
2/dev/hda
3/dev/loop
4/dev/ram
diff --git a/meta/recipes-core/udev/files/tmpfs.patch b/meta/recipes-core/udev/files/tmpfs.patch
new file mode 100644
index 0000000000..9d0d8b4515
--- /dev/null
+++ b/meta/recipes-core/udev/files/tmpfs.patch
@@ -0,0 +1,16 @@
1
2#
3# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
4#
5
6--- udev-031/extras/start_udev~tmpfs 2004-09-10 17:10:03.000000000 -0400
7+++ udev-031/extras/start_udev 2004-09-11 15:18:15.560789160 -0400
8@@ -85,7 +85,7 @@
9 fi
10
11 echo "mounting... ramfs at $udev_root"
12-mount -n -t ramfs none $udev_root
13+mount -n -t ramfs none $udev_root || mount -n -t tmpfs none $udev_root
14
15 # propogate /udev from /sys
16 echo "Creating initial udev device nodes:"
diff --git a/meta/recipes-core/udev/files/tosa/mount.blacklist b/meta/recipes-core/udev/files/tosa/mount.blacklist
new file mode 100644
index 0000000000..c15b582298
--- /dev/null
+++ b/meta/recipes-core/udev/files/tosa/mount.blacklist
@@ -0,0 +1,3 @@
1/dev/mtdblock
2/dev/loop
3/dev/ram
diff --git a/meta/recipes-core/udev/files/udev-cache b/meta/recipes-core/udev/files/udev-cache
new file mode 100644
index 0000000000..77bbda6f1b
--- /dev/null
+++ b/meta/recipes-core/udev/files/udev-cache
@@ -0,0 +1,20 @@
1#!/bin/sh -e
2
3### BEGIN INIT INFO
4# Provides: udev-cache
5# Required-Start: mountall
6# Required-Stop:
7# Default-Start: S
8# Default-Stop:
9# Short-Description: cache /dev to speedup the udev next boot
10### END INIT INFO
11
12[ -d /sys/class ] || exit 1
13[ -r /proc/mounts ] || exit 1
14[ -x /sbin/udevd ] || exit 1
15
16if [ ! -e /etc/dev.tar ]; then
17 (cd /; tar cf /etc/dev.tar dev)
18fi
19
20exit 0
diff --git a/meta/recipes-core/udev/files/udev.rules b/meta/recipes-core/udev/files/udev.rules
new file mode 100644
index 0000000000..5c566f6cef
--- /dev/null
+++ b/meta/recipes-core/udev/files/udev.rules
@@ -0,0 +1,98 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# SCSI devices
17BUS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
18
19# USB devices
20BUS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
21BUS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
22BUS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
23BUS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
24BUS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
25BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
26BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}=="Palm Handheld*", \
27 SYMLINK+="pilot"
28
29# usbfs-like devices
30SUBSYSTEM=="usb_device", \
31 PROGRAM="/bin/sh -c 'export X=%k; export X=$${X#usbdev}; export B=$${X%%%%.*}; export D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c"
32
33# serial devices
34KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
35KERNEL=="capi[0-9]*", NAME="capi/%n"
36
37# video devices
38KERNEL=="card[0-9]*", NAME="dri/%k"
39
40# misc devices
41KERNEL=="hw_random", NAME="hwrng"
42KERNEL=="tun", NAME="net/%k"
43
44KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
45KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
46KERNEL=="pktcdvd", NAME="pktcdvd/control"
47
48KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
49KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
50KERNEL=="microcode", NAME="cpu/microcode"
51
52KERNEL=="umad*", NAME="infiniband/%k"
53KERNEL=="issm*", NAME="infiniband/%k"
54KERNEL=="uverbs*", NAME="infiniband/%k"
55KERNEL=="ucm", NAME="infiniband/%k"
56
57KERNEL=="buzzer", NAME="misc/buzzer"
58
59# ALSA devices
60KERNEL=="controlC[0-9]*", NAME="snd/%k"
61KERNEL=="hwC[D0-9]*", NAME="snd/%k"
62KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
63KERNEL=="midiC[D0-9]*", NAME="snd/%k"
64KERNEL=="timer", NAME="snd/%k"
65KERNEL=="seq", NAME="snd/%k"
66
67# ieee1394 devices
68KERNEL=="dv1394*", NAME="dv1394/%n"
69KERNEL=="video1394*", NAME="video1394/%n"
70
71# input devices
72KERNEL=="mice", NAME="input/%k"
73KERNEL=="mouse[0-9]*", NAME="input/%k"
74KERNEL=="event[0-9]*", NAME="input/%k"
75KERNEL=="js[0-9]*", NAME="input/%k"
76KERNEL=="ts[0-9]*", NAME="input/%k"
77KERNEL=="uinput", NAME="input/%k"
78
79# Zaptel
80KERNEL=="zapctl", NAME="zap/ctl"
81KERNEL=="zaptimer", NAME="zap/timer"
82KERNEL=="zapchannel", NAME="zap/channel"
83KERNEL=="zappseudo", NAME="zap/pseudo"
84KERNEL=="zap[0-9]*", NAME="zap/%n"
85
86# AOE character devices
87SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
88SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
89SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
90
91# device mapper creates its own device nodes, so ignore these
92KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
93KERNEL=="device-mapper", NAME="mapper/control"
94
95KERNEL="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
96
97# Firmware Helper
98ACTION=="add", SUBSYSTEM=="firmware", RUN+="/sbin/firmware_helper"
diff --git a/meta/recipes-core/udev/files/udev_network_queue.sh b/meta/recipes-core/udev/files/udev_network_queue.sh
new file mode 100644
index 0000000000..05e08e9d1b
--- /dev/null
+++ b/meta/recipes-core/udev/files/udev_network_queue.sh
@@ -0,0 +1,35 @@
1#! /bin/sh
2#
3# Copyright Matthias Hentges <devel@hentges.net> (c) 2006
4# License: GPL (see http://www.gnu.org/licenses/gpl.txt for a copy of the license)
5#
6# Filename: udev_network_queue.sh
7# Date: 03-May-06
8
9do_start() {
10 if test -e /dev/udev_network_queue
11 then
12 echo "Activating queued NICs..."
13 for NIC in `cat /dev/udev_network_queue`
14 do
15 export INTERFACE="$NIC" ; export ACTION=add
16 /etc/udev/scripts/network.sh
17 done
18 echo ""
19 else
20 echo "No NICs queued"
21 fi
22}
23
24do_stop() {
25 /bin/true
26}
27
28case "$1" in
29start) do_start;;
30stop) do_stop;;
31restart) do_stop
32 do_start;;
33*) echo "Usage: `basename $0` [ start | stop | restart ]"
34 exit 0;;
35esac
diff --git a/meta/recipes-core/udev/files/udevsynthesize.patch b/meta/recipes-core/udev/files/udevsynthesize.patch
new file mode 100644
index 0000000000..7811188485
--- /dev/null
+++ b/meta/recipes-core/udev/files/udevsynthesize.patch
@@ -0,0 +1,776 @@
1--- udev-081/udevsynthesize.c.orig 2006-01-29 12:22:45.000000000 +0100
2+++ udev-081/udevsynthesize.c 2006-01-29 12:22:40.000000000 +0100
3@@ -0,0 +1,763 @@
4+/*
5+ * udevcoldplug.c
6+ *
7+ * Copyright (C) 2005 SUSE Linux Products GmbH
8+ *
9+ * Author:
10+ * Kay Sievers <kay.sievers@vrfy.org>
11+ *
12+ * Synthesize kernel events from sysfs information and pass them
13+ * to the udevd daemon.
14+ *
15+ * This program is free software; you can redistribute it and/or modify it
16+ * under the terms of the GNU General Public License as published by the
17+ * Free Software Foundation version 2 of the License.
18+ *
19+ * This program is distributed in the hope that it will be useful, but
20+ * WITHOUT ANY WARRANTY; without even the implied warranty of
21+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22+ * General Public License for more details.
23+ *
24+ * You should have received a copy of the GNU General Public License along
25+ * with this program; if not, write to the Free Software Foundation, Inc.,
26+ * 675 Mass Ave, Cambridge, MA 02139, USA.
27+ *
28+ */
29+
30+#include <stdlib.h>
31+#include <stddef.h>
32+#include <string.h>
33+#include <stdio.h>
34+#include <unistd.h>
35+#include <errno.h>
36+#include <ctype.h>
37+#include <fcntl.h>
38+#include <dirent.h>
39+#include <signal.h>
40+#include <syslog.h>
41+#include <sys/socket.h>
42+#include <sys/un.h>
43+#include <sys/wait.h>
44+#include <sys/stat.h>
45+#include <sys/types.h>
46+
47+#include "udev_libc_wrapper.h"
48+#include "udev.h"
49+#include "udevd.h"
50+#include "udev_version.h"
51+#include "logging.h"
52+
53+#include "list.h"
54+
55+#ifndef DT_DIR
56+#define DT_DIR 4
57+#endif
58+
59+static const char *udev_log_str;
60+static int udevd_sock = -1;
61+
62+#ifdef USE_LOG
63+void log_message(int priority, const char *format, ...)
64+{
65+ va_list args;
66+
67+ if (priority > udev_log_priority)
68+ return;
69+
70+ va_start(args, format);
71+ vsyslog(priority, format, args);
72+ va_end(args);
73+}
74+#endif
75+
76+struct device {
77+ struct list_head node;
78+ struct udevd_msg msg;
79+ size_t bufpos;
80+ char *path;
81+};
82+
83+static dev_t read_devt(const char *path)
84+{
85+ char filename[PATH_SIZE];
86+ char majorminor[64];
87+ unsigned int major, minor;
88+ ssize_t count;
89+ int fd;
90+
91+ snprintf(filename, sizeof(filename), "%s/%s", path, "dev");
92+ filename[sizeof(filename)-1] = '\0';
93+
94+ fd = open(filename, O_RDONLY);
95+ if (fd < 0)
96+ return 0;
97+
98+ count = read(fd, majorminor, sizeof(majorminor));
99+ close(fd);
100+ majorminor[count] = '\0';
101+ if (sscanf(majorminor, "%u:%u", &major, &minor) != 2)
102+ return 0;
103+ dbg("found major=%d, minor=%d", major, minor);
104+
105+ return makedev(major, minor);
106+}
107+
108+static ssize_t read_file(const char *directory, const char *file, char *str, size_t len)
109+{
110+ char filename[PATH_SIZE];
111+ ssize_t count;
112+ int fd;
113+
114+ memset(filename, 0, sizeof(filename));
115+ snprintf(filename, sizeof(filename), "%s/%s", directory, file);
116+ filename[sizeof(filename)-1] = '\0';
117+
118+ fd = open(filename, O_RDONLY);
119+ if (fd < 0)
120+ return -1;
121+
122+ count = read(fd, str, len-1);
123+ close(fd);
124+
125+ if (count > (ssize_t)len)
126+ count = len;
127+ str[count-1] = '\0';
128+
129+ return count;
130+}
131+
132+static ssize_t read_link(const char *directory, const char *file, char *str, size_t size)
133+{
134+ char filename[PATH_SIZE];
135+ char target[PATH_SIZE];
136+ int len;
137+ char *back;
138+ char *strip;
139+ int level = 1;
140+
141+ snprintf(filename, sizeof(filename), "%s/%s", directory, file);
142+ filename[sizeof(filename)-1] = '\0';
143+
144+ len = readlink(filename, target, sizeof(target)-1);
145+ if (len < 0)
146+ return -1;
147+ target[len] = '\0';
148+
149+ back = target;
150+ while (strncmp(back, "../", 3) == 0) {
151+ back += 3;
152+ level++;
153+ }
154+ while(level--) {
155+ strip = strrchr(filename, '/');
156+ if (!strip)
157+ return -1;
158+ strip[0] = '\0';
159+ }
160+
161+ snprintf(str, size, "%s/%s", filename, back);
162+ str[size-1] = '\0';
163+
164+ return len;
165+}
166+
167+static char *add_env_key(struct device *device, const char *key, const char *value)
168+{
169+ size_t pos = device->bufpos;
170+ device->bufpos += sprintf(&device->msg.envbuf[device->bufpos], "%s=%s", key, value)+1;
171+ return &device->msg.envbuf[pos];
172+}
173+
174+static struct device *device_create(const char *path, const char *subsystem, dev_t devt)
175+{
176+ struct device *device;
177+ const char *devpath = &path[strlen(sysfs_path)];
178+ char target[PATH_SIZE];
179+
180+ device = malloc(sizeof(struct device));
181+ if (device == NULL) {
182+ dbg("error malloc");
183+ return NULL;
184+ }
185+ memset(device, 0x00, sizeof(struct device));
186+
187+ device->path = add_env_key(device, "DEVPATH", devpath);
188+ device->path += strlen("DEVPATH=");
189+ add_env_key(device, "SUBSYSTEM", subsystem);
190+ add_env_key(device, "ACTION", "add");
191+ add_env_key(device, "UDEV_COLDPLUG", "1");
192+
193+ if (major(devt)) {
194+ char number[32];
195+ sprintf(number, "%u", major(devt));
196+ add_env_key(device, "MAJOR", number);
197+ sprintf(number, "%u", minor(devt));
198+ add_env_key(device, "MINOR", number);
199+ }
200+
201+ if (strncmp(devpath, "/block/", strlen("/block/")) == 0 ||
202+ strncmp(devpath, "/class/", strlen("/class/")) == 0) {
203+ char physpath[PATH_SIZE];
204+
205+ if (read_link(path, "device", physpath, sizeof(physpath)) > (ssize_t)strlen(sysfs_path)) {
206+ add_env_key(device, "PHYSDEVPATH", &physpath[strlen(sysfs_path)]);
207+ if (read_link(physpath, "driver", target, sizeof(target)) > (ssize_t)strlen(sysfs_path)) {
208+ char *pos = strrchr(target, '/');
209+ if (pos)
210+ add_env_key(device, "PHYSDEVDRIVER", &pos[1]);
211+ }
212+ if (read_link(physpath, "bus", target, sizeof(target)) > (ssize_t)strlen(sysfs_path)) {
213+ char *pos = strrchr(target, '/');
214+ if (pos)
215+ add_env_key(device, "PHYSDEVBUS", &pos[1]);
216+ }
217+ }
218+ } else if (strncmp(devpath, "/devices/", strlen("/devices/")) == 0) {
219+ if (read_link(path, "driver", target, sizeof(target)) > (ssize_t)strlen(sysfs_path)) {
220+ char *pos = strrchr(target, '/');
221+ if (pos)
222+ add_env_key(device, "PHYSDEVDRIVER", &pos[1]);
223+ }
224+ if (read_link(path, "bus", target, sizeof(target)) > (ssize_t)strlen(sysfs_path)) {
225+ char *pos = strrchr(target, '/');
226+ if (pos)
227+ add_env_key(device, "PHYSDEVBUS", &pos[1]);
228+ }
229+ }
230+
231+ return device;
232+}
233+
234+static int device_list_insert(struct list_head *device_list, struct device *device)
235+{
236+ struct device *loop_device;
237+
238+ dbg("insert: '%s'", device->path);
239+
240+ /* sort files in lexical order */
241+ list_for_each_entry(loop_device, device_list, node)
242+ if (strcmp(loop_device->path, device->path) > 0)
243+ break;
244+
245+ list_add_tail(&device->node, &loop_device->node);
246+
247+ return 0;
248+}
249+
250+static int add_device_udevd(struct device *device)
251+{
252+ size_t msg_len;
253+ struct sockaddr_un saddr;
254+ socklen_t addrlen;
255+ int retval;
256+
257+ memset(&saddr, 0x00, sizeof(struct sockaddr_un));
258+ saddr.sun_family = AF_LOCAL;
259+ /* use abstract namespace for socket path */
260+ strcpy(&saddr.sun_path[1], UDEVD_SOCK_PATH);
261+ addrlen = offsetof(struct sockaddr_un, sun_path) + strlen(saddr.sun_path+1) + 1;
262+
263+ strcpy(device->msg.magic, UDEV_MAGIC);
264+ device->msg.type = UDEVD_UEVENT_UDEVSEND;
265+
266+ msg_len = offsetof(struct udevd_msg, envbuf) + device->bufpos;
267+ dbg("msg_len=%i", msg_len);
268+
269+ retval = sendto(udevd_sock, &device->msg, msg_len, 0, (struct sockaddr *)&saddr, addrlen);
270+ if (retval < 0)
271+ return -1;
272+
273+ return 0;
274+}
275+
276+static void exec_list(struct list_head *device_list, const char *first[], const char *last[])
277+{
278+ struct device *loop_device;
279+ struct device *tmp_device;
280+ int i;
281+
282+ /* handle the "first" type devices first */
283+ if (first)
284+ list_for_each_entry_safe(loop_device, tmp_device, device_list, node) {
285+ for (i = 0; first[i] != NULL; i++) {
286+ if (strncmp(loop_device->path, first[i], strlen(first[i])) == 0) {
287+ add_device_udevd(loop_device);
288+ list_del(&loop_device->node);
289+ free(loop_device);
290+ break;
291+ }
292+ }
293+ }
294+
295+ /* handle the devices we are allowed to, excluding the "last" type devices */
296+ if (last)
297+ list_for_each_entry_safe(loop_device, tmp_device, device_list, node) {
298+ int found = 0;
299+ for (i = 0; last[i] != NULL; i++) {
300+ if (strncmp(loop_device->path, last[i], strlen(last[i])) == 0) {
301+ found = 1;
302+ break;
303+ }
304+ }
305+ if (found)
306+ continue;
307+
308+ add_device_udevd(loop_device);
309+ list_del(&loop_device->node);
310+ free(loop_device);
311+ }
312+
313+ /* handle the rest of the devices */
314+ list_for_each_entry_safe(loop_device, tmp_device, device_list, node) {
315+ add_device_udevd(loop_device);
316+ list_del(&loop_device->node);
317+ free(loop_device);
318+ }
319+}
320+
321+static int udev_scan_class(void)
322+{
323+ char base[PATH_SIZE];
324+ DIR *dir;
325+ struct dirent *dent;
326+ LIST_HEAD(device_list);
327+
328+ /* we want /dev/null and /dev/console first */
329+ const char *first[] = {
330+ "/class/mem",
331+ "/class/tty",
332+ NULL,
333+ };
334+
335+ snprintf(base, sizeof(base), "%s/class", sysfs_path);
336+ base[sizeof(base)-1] = '\0';
337+
338+ dir = opendir(base);
339+ if (!dir)
340+ return -1;
341+
342+ for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
343+ char dirname[PATH_SIZE];
344+ DIR *dir2;
345+ struct dirent *dent2;
346+
347+ if (dent->d_name[0] == '.')
348+ continue;
349+
350+ snprintf(dirname, sizeof(dirname), "%s/%s", base, dent->d_name);
351+ dirname[sizeof(dirname)-1] = '\0';
352+
353+ dir2 = opendir(dirname);
354+ if (!dir2)
355+ continue;
356+ for (dent2 = readdir(dir2); dent2 != NULL; dent2 = readdir(dir2)) {
357+ char dirname2[PATH_SIZE];
358+ struct device *device;
359+ dev_t devt;
360+
361+ if (dent2->d_name[0] == '.')
362+ continue;
363+ if (dent2->d_type != DT_DIR)
364+ continue;
365+
366+ snprintf(dirname2, sizeof(dirname2), "%s/%s", dirname, dent2->d_name);
367+ dirname2[sizeof(dirname2)-1] = '\0';
368+ devt = read_devt(dirname2);
369+ device = device_create(dirname2, dent->d_name, devt);
370+
371+ if (strcmp(dent->d_name, "net") == 0 ||
372+ strcmp(dent->d_name, "bluetooth") == 0) {
373+ add_env_key(device, "INTERFACE", dent2->d_name);
374+ } else if (strcmp(dent->d_name, "pcmcia_socket") == 0 &&
375+ strlen(dent->d_name) > 14) {
376+ add_env_key(device, "SOCKET_NO",
377+ dent2->d_name + 14);
378+ }
379+
380+ device_list_insert(&device_list, device);
381+ }
382+ closedir(dir2);
383+ }
384+ closedir(dir);
385+ exec_list(&device_list, first, NULL);
386+
387+ return 0;
388+}
389+
390+static int udev_scan_block(void)
391+{
392+ char base[PATH_SIZE];
393+ DIR *dir;
394+ struct dirent *dent;
395+ LIST_HEAD(device_list);
396+
397+ /* dm wants to have the block devices around before it */
398+ const char *last[] = {
399+ "/block/dm",
400+ NULL,
401+ };
402+
403+ snprintf(base, sizeof(base), "%s/block", sysfs_path);
404+ base[sizeof(base)-1] = '\0';
405+
406+ dir = opendir(base);
407+ if (!dir)
408+ return -1;
409+
410+ for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
411+ char dirname[PATH_SIZE];
412+ struct device *device;
413+ struct dirent *dent2;
414+ DIR *dir2;
415+ dev_t devt;
416+
417+ if (dent->d_name[0] == '.')
418+ continue;
419+ if (dent->d_type != DT_DIR)
420+ continue;
421+
422+ snprintf(dirname, sizeof(dirname), "%s/%s", base, dent->d_name);
423+ dirname[sizeof(dirname)-1] = '\0';
424+ devt = read_devt(dirname);
425+ if (major(devt)) {
426+ device = device_create(dirname, "block", devt);
427+ device_list_insert(&device_list, device);
428+ }
429+
430+ /* look for partitions */
431+ dir2 = opendir(dirname);
432+ if (!dir2)
433+ continue;
434+ for (dent2 = readdir(dir2); dent2 != NULL; dent2 = readdir(dir2)) {
435+ char dirname2[PATH_SIZE];
436+
437+ if (dent2->d_name[0] == '.')
438+ continue;
439+ if (dent2->d_type != DT_DIR)
440+ continue;
441+
442+ snprintf(dirname2, sizeof(dirname2), "%s/%s", dirname, dent2->d_name);
443+ dirname2[sizeof(dirname2)-1] = '\0';
444+ devt = read_devt(dirname2);
445+ if (major(devt)) {
446+ device = device_create(dirname2, "block", devt);
447+ device_list_insert(&device_list, device);
448+ continue;
449+ }
450+ }
451+ closedir(dir2);
452+ }
453+ closedir(dir);
454+ exec_list(&device_list, NULL, last);
455+
456+ return 0;
457+}
458+
459+static int pci_handler(struct device *device)
460+{
461+ char path[PATH_SIZE];
462+ char value[PATH_SIZE];
463+ char vendor[PATH_SIZE];
464+ char product[PATH_SIZE];
465+ const char *name;
466+
467+ snprintf(path, sizeof(path), "%s%s", sysfs_path, device->path);
468+ path[sizeof(path)-1] = '\0';
469+
470+ if (read_file(path, "modalias", value, sizeof(value)) > 0)
471+ add_env_key(device, "MODALIAS", value);
472+
473+ name = strrchr(device->path, '/');
474+ if (name)
475+ add_env_key(device, "PCI_SLOT_NAME", &name[1]);
476+
477+ if (read_file(path, "class", value, sizeof(value)) > 0)
478+ add_env_key(device, "PCI_CLASS", &value[2]);
479+
480+ if (read_file(path, "vendor", vendor, sizeof(vendor)) > 0 &&
481+ read_file(path, "device", product, sizeof(product)) > 0) {
482+ snprintf(value, sizeof(value), "%s:%s", &vendor[2], &product[2]);
483+ path[sizeof(value)-1] = '\0';
484+ add_env_key(device, "PCI_ID", value);
485+ }
486+
487+ if (read_file(path, "subsystem_vendor", vendor, sizeof(vendor)) > 0 &&
488+ read_file(path, "subsystem_device", product, sizeof(product)) > 0) {
489+ snprintf(value, sizeof(value), "%s:%s", &vendor[2], &product[2]);
490+ path[sizeof(value)-1] = '\0';
491+ add_env_key(device, "PCI_SUBSYS_ID", value);
492+ }
493+
494+ return 0;
495+}
496+
497+static int usb_handler(struct device *device)
498+{
499+ char path[PATH_SIZE];
500+ char value[PATH_SIZE];
501+ char str1[PATH_SIZE];
502+ char str2[PATH_SIZE];
503+ char str3[PATH_SIZE];
504+ unsigned int int1;
505+ unsigned int int2;
506+ unsigned int int3;
507+ char *pos;
508+
509+ snprintf(path, sizeof(path), "%s%s", sysfs_path, device->path);
510+ path[sizeof(path)-1] = '\0';
511+
512+ /* device events have : in their directory name */
513+ pos = strrchr(path, '/');
514+ if (!strchr(pos, ':'))
515+ return 0; /* and do not have other variables */
516+
517+ if (read_file(path, "modalias", value, sizeof(value)) > 0)
518+ add_env_key(device, "MODALIAS", value);
519+
520+ if (read_file(path, "bInterfaceClass", str1, sizeof(str1)) > 0 &&
521+ read_file(path, "bInterfaceSubClass", str2, sizeof(str2)) > 0 &&
522+ read_file(path, "bInterfaceProtocol", str3, sizeof(str3)) > 0) {
523+ int1 = (int) strtol(str1, NULL, 16);
524+ int2 = (int) strtol(str2, NULL, 16);
525+ int3 = (int) strtol(str3, NULL, 16);
526+ snprintf(value, sizeof(value), "%u/%u/%u", int1, int2, int3);
527+ path[sizeof(value)-1] = '\0';
528+ add_env_key(device, "INTERFACE", value);
529+ }
530+
531+ /* move to the parent directory */
532+ pos[0] = '\0';
533+
534+ if (read_file(path, "idVendor", str1, sizeof(str1)) > 0 &&
535+ read_file(path, "idProduct", str2, sizeof(str2)) > 0 &&
536+ read_file(path, "bcdDevice", str3, sizeof(str3)) > 0) {
537+ int1 = (int) strtol(str1, NULL, 16);
538+ int2 = (int) strtol(str2, NULL, 16);
539+ int3 = (int) strtol(str3, NULL, 16);
540+ snprintf(value, sizeof(value), "%x/%x/%x", int1, int2, int3);
541+ path[sizeof(value)-1] = '\0';
542+ add_env_key(device, "PRODUCT", value);
543+ }
544+
545+ if (read_file(path, "bDeviceClass", str1, sizeof(str1)) > 0 &&
546+ read_file(path, "bDeviceSubClass", str2, sizeof(str2)) > 0 &&
547+ read_file(path, "bDeviceProtocol", str3, sizeof(str3)) > 0) {
548+ int1 = (int) strtol(str1, NULL, 16);
549+ int2 = (int) strtol(str2, NULL, 16);
550+ int3 = (int) strtol(str3, NULL, 16);
551+ snprintf(value, sizeof(value), "%u/%u/%u", int1, int2, int3);
552+ path[sizeof(value)-1] = '\0';
553+ add_env_key(device, "TYPE", value);
554+ }
555+
556+ if (read_file(path, "devnum", str2, sizeof(str2)) > 0) {
557+ pos = strrchr(path, 'b');
558+ int1 = (int) strtol(pos + 1, NULL, 16);
559+ int2 = (int) strtol(str2, NULL, 16);
560+ snprintf(value, sizeof(value),
561+ "/proc/bus/usb/%03d/%03d", int1, int2);
562+ path[sizeof(value)-1] = '\0';
563+ add_env_key(device, "DEVICE", value);
564+ }
565+
566+ return 0;
567+}
568+
569+static int serio_handler(struct device *device)
570+{
571+ char path[PATH_SIZE];
572+ char value[PATH_SIZE];
573+
574+ snprintf(path, sizeof(path), "%s%s", sysfs_path, device->path);
575+ path[sizeof(path)-1] = '\0';
576+
577+ if (read_file(path, "modalias", value, sizeof(value)) > 0)
578+ add_env_key(device, "MODALIAS", value);
579+
580+ if (read_file(path, "id/type", value, sizeof(value)) > 0)
581+ add_env_key(device, "SERIO_TYPE", value);
582+
583+ if (read_file(path, "id/proto", value, sizeof(value)) > 0)
584+ add_env_key(device, "SERIO_PROTO", value);
585+
586+ if (read_file(path, "id/id", value, sizeof(value)) > 0)
587+ add_env_key(device, "SERIO_ID", value);
588+
589+ if (read_file(path, "id/extra", value, sizeof(value)) > 0)
590+ add_env_key(device, "SERIO_EXTRA", value);
591+
592+ return 0;
593+}
594+
595+static int ccw_handler(struct device *device)
596+{
597+ char path[PATH_SIZE];
598+ char value[PATH_SIZE], *tmp;
599+
600+ snprintf(path, sizeof(path), "%s%s", sysfs_path, device->path);
601+ path[sizeof(path)-1] = '\0';
602+
603+ if (read_file(path, "modalias", value, sizeof(value)) > 0)
604+ add_env_key(device, "MODALIAS", value);
605+
606+ if (read_file(path, "cutype", value, sizeof(value)) > 0) {
607+ value[4] = 0;
608+ tmp = &value[5];
609+ add_env_key(device, "CU_TYPE", value);
610+ add_env_key(device, "CU_MODEL", tmp);
611+ }
612+
613+ if (read_file(path, "devtype", value, sizeof(value)) > 0) {
614+ if (value[0] == 'n') {
615+ add_env_key(device, "DEV_TYPE", "0000");
616+ add_env_key(device, "DEV_MODEL", "00");
617+ }
618+ else {
619+ value[4] = 0;
620+ tmp = &value[5];
621+ add_env_key(device, "DEV_TYPE", value);
622+ add_env_key(device, "DEV_MODEL", tmp);
623+ }
624+ }
625+
626+ return 0;
627+}
628+
629+static int modalias_handler(struct device *device)
630+{
631+ char path[PATH_SIZE];
632+ char value[PATH_SIZE];
633+
634+ snprintf(path, sizeof(path), "%s%s", sysfs_path, device->path);
635+ path[sizeof(path)-1] = '\0';
636+
637+ if (read_file(path, "modalias", value, sizeof(value)) > 0)
638+ add_env_key(device, "MODALIAS", value);
639+
640+ return 0;
641+}
642+
643+static int udev_scan_bus(const char *bus, int bus_handler(struct device *device))
644+{
645+ char base[PATH_SIZE];
646+ DIR *dir;
647+ struct dirent *dent;
648+ LIST_HEAD(device_list);
649+
650+ snprintf(base, sizeof(base), "%s/bus/%s/devices", sysfs_path, bus);
651+ base[sizeof(base)-1] = '\0';
652+
653+ dir = opendir(base);
654+ if (!dir)
655+ return -1;
656+ for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
657+ char devpath[PATH_SIZE];
658+ struct device *device;
659+
660+ if (dent->d_name[0] == '.')
661+ continue;
662+
663+ if (read_link(base, dent->d_name, devpath, sizeof(devpath)) < 0)
664+ continue;
665+
666+ device = device_create(devpath, bus, makedev(0, 0));
667+ if (bus_handler) {
668+ if (bus_handler(device) < 0) {
669+ dbg("'%s' bus handler skipped event", devpath);
670+ free(device);
671+ continue;
672+ }
673+ }
674+
675+ device_list_insert(&device_list, device);
676+ }
677+ closedir(dir);
678+ exec_list(&device_list, NULL, NULL);
679+
680+ return 0;
681+}
682+
683+static int udev_scan_devices(void)
684+{
685+ char base[PATH_SIZE];
686+ DIR *dir;
687+ struct dirent *dent;
688+
689+ snprintf(base, sizeof(base), "%s/bus", sysfs_path);
690+ base[sizeof(base)-1] = '\0';
691+
692+ dir = opendir(base);
693+ if (!dir)
694+ return -1;
695+
696+ for (dent = readdir(dir); dent != NULL; dent = readdir(dir)) {
697+ if (dent->d_name[0] == '.')
698+ continue;
699+ if (dent->d_type != DT_DIR)
700+ continue;
701+
702+ /* add bus specific env values */
703+ if (strcmp(dent->d_name, "pci") == 0)
704+ udev_scan_bus("pci", pci_handler);
705+ else if (strcmp(dent->d_name, "usb") == 0)
706+ udev_scan_bus("usb", usb_handler);
707+ else if (strcmp(dent->d_name, "serio") == 0)
708+ udev_scan_bus("serio", serio_handler);
709+ else if (strcmp(dent->d_name, "ccw") == 0)
710+ udev_scan_bus("ccw", ccw_handler);
711+ else
712+ udev_scan_bus(dent->d_name, modalias_handler);
713+ }
714+ closedir(dir);
715+
716+ return 0;
717+}
718+
719+int main(int argc, char *argv[], char *envp[])
720+{
721+ LIST_HEAD(device_list);
722+ int i;
723+
724+ logging_init("udevcoldplug");
725+ udev_config_init(); sysfs_init();
726+ dbg("version %s", UDEV_VERSION);
727+
728+ udev_log_str = getenv("UDEV_LOG");
729+
730+ /* disable all logging if not explicitely requested */
731+ if (udev_log_str == NULL)
732+ udev_log_priority = 0;
733+
734+ for (i = 1 ; i < argc; i++) {
735+ char *arg = argv[i];
736+
737+ if (strcmp(arg, "help") == 0 || strcmp(arg, "--help") == 0 || strcmp(arg, "-h") == 0) {
738+ printf("Usage: udevcoldplug \n"
739+ " --help print this help text\n\n");
740+ exit(0);
741+ } else {
742+ fprintf(stderr, "unknown option\n\n");
743+ exit(1);
744+ }
745+ }
746+
747+ udevd_sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
748+ if (udevd_sock < 0) {
749+ err("error getting socket");
750+ return 1;
751+ }
752+
753+ /* create nodes for already available devices */
754+ udev_scan_class();
755+ udev_scan_block();
756+
757+ /* synthesize events for bus devices
758+ * may load modules or configure the device */
759+ udev_scan_devices();
760+
761+ if (udevd_sock >= 0)
762+ close(udevd_sock);
763+ logging_close();
764+
765+ return 0;
766+}
767--- udev-081/Makefile
768+++ udev-081/Makefile
769@@ -58,6 +58,7 @@ PROGRAMS = \
770 udevmonitor \
771 udevinfo \
772 udevtest \
773+ udevsynthesize \
774 udevstart
775
776 HEADERS = \
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
3load_input_modules() {
4 for module in mousedev evdev joydev; do
5 modprobe -q $module || true
6 done
7}
8
9if [ ! -e /sys/class/mem/null/uevent ]; then # <= 2.6.14
10 /lib/udev/udevsynthesize
11 load_input_modules
12 exit 0
13fi
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
17oldifs="$IFS"
18IFS="|"
19
20for 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
35done
36
37for file in $first${IFS}$default${IFS}$last; do
38 [ "$file" ] || continue
39 echo 'add' > "$file" || true
40done
41
42IFS="$oldifs"
43
44case "$(uname -r)" in
45 2.6.1[0-5]|2.6.1[0-5][!0-9]*) # <= 2.6.15
46 load_input_modules
47 ;;
48esac
49
50exit 0
51
diff --git a/meta/recipes-core/udev/udev-092/arm_inotify_fix.patch b/meta/recipes-core/udev/udev-092/arm_inotify_fix.patch
new file mode 100644
index 0000000000..4bd0d4d9b9
--- /dev/null
+++ b/meta/recipes-core/udev/udev-092/arm_inotify_fix.patch
@@ -0,0 +1,17 @@
1Index: udev-092/udev_libc_wrapper.h
2===================================================================
3--- udev-092.orig/udev_libc_wrapper.h 2006-07-26 21:55:06.000000000 +0100
4+++ udev-092/udev_libc_wrapper.h 2006-07-26 21:55:37.000000000 +0100
5@@ -58,9 +58,9 @@
6 # define __NR_inotify_add_watch 152
7 # define __NR_inotify_rm_watch 156
8 #elif defined (__arm__)
9-# define __NR_inotify_init 316
10-# define __NR_inotify_add_watch 317
11-# define __NR_inotify_rm_watch 318
12+# define __NR_inotify_init __NR_SYSCALL_BASE+316
13+# define __NR_inotify_add_watch __NR_SYSCALL_BASE+317
14+# define __NR_inotify_rm_watch __NR_SYSCALL_BASE+318
15 #elif defined (__sh__)
16 # define __NR_inotify_init 290
17 # define __NR_inotify_add_watch 291
diff --git a/meta/recipes-core/udev/udev-092/flags.patch b/meta/recipes-core/udev/udev-092/flags.patch
new file mode 100644
index 0000000000..492a39881c
--- /dev/null
+++ b/meta/recipes-core/udev/udev-092/flags.patch
@@ -0,0 +1,51 @@
1--- udev-089/Makefile.orig 2006-04-08 13:32:53.000000000 +0200
2+++ udev-089/Makefile 2006-04-08 13:34:27.000000000 +0200
3@@ -117,28 +117,28 @@
4 AR = $(CROSS_COMPILE)ar
5 RANLIB = $(CROSS_COMPILE)ranlib
6
7-CFLAGS = -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
8+override CFLAGS = -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
9 WARNINGS = -Wstrict-prototypes -Wsign-compare -Wshadow \
10 -Wchar-subscripts -Wmissing-declarations -Wnested-externs \
11 -Wpointer-arith -Wcast-align -Wsign-compare -Wmissing-prototypes
12-CFLAGS += $(WARNINGS)
13+override CFLAGS += $(WARNINGS)
14
15 LDFLAGS = -Wl,-warn-common
16
17 OPTFLAGS = -Os
18-CFLAGS += $(OPTFLAGS)
19+override CFLAGS += $(OPTFLAGS)
20
21 ifeq ($(strip $(USE_LOG)),true)
22- CFLAGS += -DUSE_LOG
23+ override CFLAGS += -DUSE_LOG
24 endif
25
26 # if DEBUG is enabled, then we do not strip
27 ifeq ($(strip $(DEBUG)),true)
28- CFLAGS += -DDEBUG
29+ override CFLAGS += -DDEBUG
30 endif
31
32 ifeq ($(strip $(USE_GCOV)),true)
33- CFLAGS += -fprofile-arcs -ftest-coverage
34+ override CFLAGS += -fprofile-arcs -ftest-coverage
35 LDFLAGS += -fprofile-arcs
36 endif
37
38@@ -151,11 +151,11 @@
39 ifeq ($(strip $(USE_SELINUX)),true)
40 UDEV_OBJS += udev_selinux.o
41 LIB_OBJS += -lselinux -lsepol
42- CFLAGS += -DUSE_SELINUX
43+ override CFLAGS += -DUSE_SELINUX
44 endif
45
46 ifeq ($(strip $(USE_STATIC)),true)
47- CFLAGS += -DUSE_STATIC
48+ override CFLAGS += -DUSE_STATIC
49 LDFLAGS += -static
50 endif
51
diff --git a/meta/recipes-core/udev/udev-092/init b/meta/recipes-core/udev/udev-092/init
new file mode 100644
index 0000000000..5a60d52a9a
--- /dev/null
+++ b/meta/recipes-core/udev/udev-092/init
@@ -0,0 +1,227 @@
1#!/bin/sh -e
2### BEGIN INIT INFO
3# Provides: udev
4# Required-Start: mountvirtfs
5# Required-Stop:
6# Default-Start: S
7# Default-Stop:
8# Short-Description: Start udevd, populate /dev and load drivers.
9### END INIT INFO
10
11# we need to unmount /dev/pts/ and remount it later over the tmpfs
12unmount_devpts() {
13 if mountpoint -q /dev/pts/; then
14 umount -l /dev/pts/
15 fi
16
17 if mountpoint -q /dev/shm/; then
18 umount -l /dev/shm/
19 fi
20}
21
22# mount a tmpfs over /dev, if somebody did not already do it
23mount_tmpfs() {
24 if grep -E -q "^[^[:space:]]+ /dev tmpfs" /proc/mounts; then
25 return
26 fi
27
28 # /dev/.static/dev/ is used by MAKEDEV to access the real /dev/ directory.
29 # /etc/udev/ is recycled as a temporary mount point because it's the only
30 # directory which is guaranteed to be available.
31 mount -n -o bind /dev /etc/udev
32
33 if ! mount -n -o size=$tmpfs_size,mode=0755 -t tmpfs tmpfs /dev; then
34 umount /etc/udev
35 echo "udev requires tmpfs support, not started."
36 exit 1
37 fi
38
39 mkdir -p /dev/.static/dev
40 chmod 700 /dev/.static/
41 # The mount options in busybox are non-standard...
42 if test -x /bin/mount.util-linux
43 then
44 /bin/mount.util-linux --move /etc/udev /dev/.static/dev
45 elif test -x /bin/busybox
46 then
47 busybox mount -n -o move /etc/udev /dev/.static/dev
48 else
49 echo "udev requires an identifiable mount command, not started."
50 umount /etc/udev
51 umount /dev
52 exit 1
53 fi
54}
55
56# I hate this hack. -- Md
57make_extra_nodes() {
58 if [ "$(echo /lib/udev/devices/*)" != "/lib/udev/devices/*" ]; then
59 cp -a /lib/udev/devices/* /dev/
60 fi
61
62 [ -e /etc/udev/links.conf ] || return 0
63 grep '^[^#]' /etc/udev/links.conf | \
64 while read type name arg1; do
65 [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] ||continue
66 case "$type" in
67 L) ln -s $arg1 /dev/$name ;;
68 D) mkdir -p /dev/$name ;;
69 M) mknod -m 600 /dev/$name $arg1 ;;
70 *) echo "links.conf: unparseable line ($type $name $arg1)" ;;
71 esac
72 done
73}
74
75supported_kernel() {
76 case "$(uname -r)" in
77 2.[012345].*|2.6.[0-9]|2.6.[0-9][!0-9]*) return 1 ;;
78 2.6.1[01]|2.6.1[01][!0-9]*) return 1 ;;
79 esac
80 return 0
81}
82
83set_hotplug_handler() {
84 case "$(uname -r)" in
85 2.6.1[0-4]|2.6.1[0-4][!0-9]*) HANDLER='/sbin/udevsend' ;;
86 esac
87 echo $HANDLER > /proc/sys/kernel/hotplug
88}
89
90# shell version of /usr/bin/tty
91my_tty() {
92 [ -x /bin/readlink ] || return 0
93 [ -e /proc/self/fd/0 ] || return 0
94 readlink --silent /proc/self/fd/0 || true
95}
96
97warn_if_interactive() {
98 if [ "$RUNLEVEL" = "S" -a "$PREVLEVEL" = "N" ]; then
99 return
100 fi
101
102 TTY=$(my_tty)
103 if [ -z "$TTY" -o "$TTY" = "/dev/console" ]; then
104 return
105 fi
106
107 printf "\n\n\nIt has been detected that the command\n\n\t$0 $*\n\n"
108 printf "has been run from an interactive shell.\n"
109 printf "It will probably not do what you expect, so this script will wait\n"
110 printf "60 seconds before continuing. Press ^C to stop it.\n"
111 printf "RUNNING THIS COMMAND IS HIGHLY DISCOURAGED!\n\n\n\n"
112 sleep 60
113}
114
115##############################################################################
116
117PATH="/sbin:/bin:/usr/bin"
118
119[ -x /sbin/udevd ] || exit 0
120
121# defaults
122tmpfs_size="10M"
123udev_root="/dev"
124udevd_timeout=30
125
126. /etc/udev/udev.conf
127
128if ! supported_kernel; then
129 echo "udev requires a kernel >= 2.6.12, not started."
130 exit 1
131fi
132
133if [ ! -e /proc/filesystems ]; then
134 echo "udev requires a mounted procfs, not started."
135 exit 1
136fi
137
138if ! grep -q '[[:space:]]tmpfs$' /proc/filesystems; then
139 echo "udev requires tmpfs support, not started."
140 exit 1
141fi
142
143if [ ! -d /sys/class/ ]; then
144 echo "udev requires a mounted sysfs, not started."
145 exit 1
146fi
147
148if [ ! -e /proc/sys/kernel/hotplug ]; then
149 echo "udev requires hotplug support, not started."
150 exit 1
151fi
152
153##############################################################################
154
155# When modifying this script, do not forget that between the time that
156# the new /dev has been mounted and udevsynthesize has been run there will be
157# no /dev/null. This also means that you cannot use the "&" shell command.
158
159case "$1" in
160 start)
161 if [ -e "$udev_root/.udev/" ]; then
162 if mountpoint -q /dev/; then
163 TMPFS_MOUNTED=1
164 else
165 echo ".udev/ already exists on the static $udev_root!"
166 fi
167 else
168 warn_if_interactive
169 fi
170
171 echo "Starting the hotplug events dispatcher" "udevd"
172 udevd --daemon
173
174 set_hotplug_handler
175
176 if [ -z "$TMPFS_MOUNTED" ]; then
177 unmount_devpts
178 mount_tmpfs
179 [ -d /proc/1 ] || mount -n /proc
180 fi
181
182 # if this directory is not present /dev will not be updated by udev
183 mkdir -p /dev/.udev/ /dev/.udev/db/ /dev/.udev/queue/ /dev/.udevdb/
184 # /dev/null must be created before udevd is started
185 make_extra_nodes
186
187 echo "Synthesizing the initial hotplug events"
188 udevsynthesize
189
190 # wait for the udevd childs to finish
191 echo "Waiting for /dev to be fully populated"
192 while [ -d /dev/.udev/queue/ ]; do
193 sleep 1
194 udevd_timeout=$(($udevd_timeout - 1))
195 if [ $udevd_timeout -eq 0 ]; then
196 # ps axf
197 break
198 fi
199 done
200 if [ $udevd_timeout -eq 0 ]; then
201 echo 'timeout'
202 fi
203 ;;
204
205 stop)
206 echo "Stopping the hotplug events dispatcher" "udevd"
207 start-stop-daemon --stop --name udevd --quiet
208 ;;
209
210 restart|force-reload)
211 echo "Stopping the hotplug events dispatcher" "udevd"
212 if start-stop-daemon --stop --name udevd --quiet ; then
213 exit 1
214 fi
215
216 echo "Starting the hotplug events dispatcher" "udevd"
217 udevd --daemon
218 ;;
219
220 *)
221 echo "Usage: /etc/init.d/udev {start|stop|restart|force-reload}"
222 exit 1
223 ;;
224esac
225
226exit 0
227
diff --git a/meta/recipes-core/udev/udev-092/local.rules b/meta/recipes-core/udev/udev-092/local.rules
new file mode 100644
index 0000000000..5b926018f5
--- /dev/null
+++ b/meta/recipes-core/udev/udev-092/local.rules
@@ -0,0 +1,31 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# Media automounting
17SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
18SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
19
20# Handle network interface setup
21SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
22SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
23
24# The first rtc device is symlinked to /dev/rtc
25KERNEL=="rtc0", SYMLINK+="rtc"
26
27# Try and modprobe for drivers for new hardware
28ACTION=="add", DEVPATH=="/devices/*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
29
30# Create a symlink to any touchscreen input device
31SUBSYSTEM=="input", KERNEL=="event[0-9]*", SYSFS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
diff --git a/meta/recipes-core/udev/udev-092/permissions.rules b/meta/recipes-core/udev/udev-092/permissions.rules
new file mode 100644
index 0000000000..8da35c3090
--- /dev/null
+++ b/meta/recipes-core/udev/udev-092/permissions.rules
@@ -0,0 +1,109 @@
1ACTION!="add", GOTO="permissions_end"
2
3# workarounds needed to synchronize with sysfs
4DEVPATH=="/devices/*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
5SUBSYSTEM=="scsi", WAIT_FOR_SYSFS="ioerr_cnt"
6# only needed for kernels < 2.6.16
7SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
8# only needed for kernels < 2.6.17
9SUBSYSTEM=="net", ENV{PHYSDEVDRIVER}=="?*", WAIT_FOR_SYSFS="device/driver"
10
11# default permissions for block devices
12SUBSYSTEM=="block", GROUP="disk"
13SUBSYSTEM=="block", SYSFS{removable}=="1", GROUP="floppy"
14
15# IDE devices
16BUS=="ide", KERNEL=="hd[a-z]|pcd[0-9]*", DRIVER=="ide-cdrom|pcd", \
17 IMPORT{program}="cdrom_id --export $tempnode"
18ENV{ID_CDROM}=="?*", GROUP="cdrom"
19BUS=="ide", KERNEL=="ht[0-9]*", GROUP="tape"
20BUS=="ide", KERNEL=="nht[0-9]*", GROUP="tape"
21
22# SCSI devices
23BUS=="scsi", SYSFS{type}=="1", GROUP="tape"
24BUS=="scsi", SYSFS{type}=="3", SYSFS{vendor}=="HP", GROUP="scanner"
25BUS=="scsi", SYSFS{type}=="5", GROUP="cdrom"
26BUS=="scsi", SYSFS{type}=="6", GROUP="scanner"
27
28# USB devices
29BUS=="usb", KERNEL=="legousbtower*", MODE="0666"
30BUS=="usb", KERNEL=="lp[0-9]*", GROUP="lp"
31
32# usbfs-like devices
33SUBSYSTEM=="usb_device", MODE="0664"
34
35# iRiver music players
36SUBSYSTEM=="usb_device", GROUP="plugdev", \
37 SYSFS{idVendor}=="4102", SYSFS{idProduct}=="10[01][135789]"
38
39# serial devices
40SUBSYSTEM=="tty", GROUP="dialout"
41SUBSYSTEM=="capi", GROUP="dialout"
42SUBSYSTEM=="slamr", GROUP="dialout"
43SUBSYSTEM=="zaptel", GROUP="dialout"
44
45# vc devices (all members of the tty subsystem)
46KERNEL=="ptmx", MODE="0666", GROUP="root"
47KERNEL=="console", MODE="0600", GROUP="root"
48KERNEL=="tty", MODE="0666", GROUP="root"
49KERNEL=="tty[0-9]*", GROUP="root"
50KERNEL=="pty*", MODE="0666", GROUP="tty"
51
52# video devices
53SUBSYSTEM=="video4linux", GROUP="video"
54SUBSYSTEM=="drm", GROUP="video"
55SUBSYSTEM=="dvb", GROUP="video"
56SUBSYSTEM=="em8300", GROUP="video"
57SUBSYSTEM=="graphics", GROUP="video"
58SUBSYSTEM=="nvidia", GROUP="video"
59
60# misc devices
61KERNEL=="random", MODE="0666"
62KERNEL=="urandom", MODE="0666"
63KERNEL=="mem", MODE="0640", GROUP="kmem"
64KERNEL=="kmem", MODE="0640", GROUP="kmem"
65KERNEL=="port", MODE="0640", GROUP="kmem"
66KERNEL=="full", MODE="0666"
67KERNEL=="null", MODE="0666"
68KERNEL=="zero", MODE="0666"
69KERNEL=="inotify", MODE="0666"
70KERNEL=="sgi_fetchop", MODE="0666"
71KERNEL=="sonypi", MODE="0666"
72KERNEL=="agpgart", GROUP="video"
73KERNEL=="nvram", GROUP="nvram"
74KERNEL=="rtc", GROUP="audio"
75KERNEL=="tpm*", MODE="0600", OWNER="tss", GROUP="tss"
76KERNEL=="fuse", GROUP="fuse"
77
78KERNEL=="cdemu[0-9]*", GROUP="cdrom"
79KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
80KERNEL=="pktcdvd", MODE="0644"
81
82KERNEL=="uverbs*", GROUP="rdma"
83KERNEL=="ucm*", GROUP="rdma"
84
85# printers and parallel devices
86SUBSYSTEM=="printer", GROUP="lp"
87SUBSYSTEM=="ppdev", GROUP="lp"
88KERNEL=="pt[0-9]*", GROUP="tape"
89KERNEL=="pht[0-9]*", GROUP="tape"
90
91# sound devices
92SUBSYSTEM=="sound", GROUP="audio"
93
94# ieee1394 devices
95KERNEL=="raw1394", GROUP="disk"
96KERNEL=="dv1394*", GROUP="video"
97KERNEL=="video1394*", GROUP="video"
98
99# input devices
100KERNEL=="event[0-9]*", SYSFS{name}=="*dvb*|*DVB*|* IR *" \
101 MODE="0664", GROUP="video"
102KERNEL=="js[0-9]*", MODE="0664"
103
104# AOE character devices
105SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
106SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
107
108LABEL="permissions_end"
109
diff --git a/meta/recipes-core/udev/udev-092/udev.rules b/meta/recipes-core/udev/udev-092/udev.rules
new file mode 100644
index 0000000000..72be706e84
--- /dev/null
+++ b/meta/recipes-core/udev/udev-092/udev.rules
@@ -0,0 +1,102 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# SCSI devices
17BUS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
18
19# USB devices
20BUS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
21BUS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
22BUS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
23BUS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
24BUS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
25BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
26BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}=="Palm Handheld*", \
27 SYMLINK+="pilot"
28
29# usbfs-like devices
30SUBSYSTEM=="usb_device", \
31 PROGRAM="/bin/sh -c 'export X=%k; export X=$${X#usbdev}; export B=$${X%%%%.*}; export D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c"
32
33# serial devices
34KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
35KERNEL=="capi[0-9]*", NAME="capi/%n"
36
37# video devices
38KERNEL=="card[0-9]*", NAME="dri/%k"
39
40# misc devices
41KERNEL=="hw_random", NAME="hwrng"
42KERNEL=="tun", NAME="net/%k"
43
44KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
45KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
46KERNEL=="pktcdvd", NAME="pktcdvd/control"
47
48KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
49KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
50KERNEL=="microcode", NAME="cpu/microcode"
51
52KERNEL=="umad*", NAME="infiniband/%k"
53KERNEL=="issm*", NAME="infiniband/%k"
54KERNEL=="uverbs*", NAME="infiniband/%k"
55KERNEL=="ucm", NAME="infiniband/%k"
56
57KERNEL=="buzzer", NAME="misc/buzzer"
58
59# ALSA devices
60KERNEL=="controlC[0-9]*", NAME="snd/%k"
61KERNEL=="hwC[D0-9]*", NAME="snd/%k"
62KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
63KERNEL=="midiC[D0-9]*", NAME="snd/%k"
64KERNEL=="timer", NAME="snd/%k"
65KERNEL=="seq", NAME="snd/%k"
66
67# ieee1394 devices
68KERNEL=="dv1394*", NAME="dv1394/%n"
69KERNEL=="video1394*", NAME="video1394/%n"
70
71# input devices
72KERNEL=="mice", NAME="input/%k"
73KERNEL=="mouse[0-9]*", NAME="input/%k"
74KERNEL=="event[0-9]*", NAME="input/%k"
75KERNEL=="js[0-9]*", NAME="input/%k"
76KERNEL=="ts[0-9]*", NAME="input/%k"
77KERNEL=="uinput", NAME="input/%k"
78
79# Zaptel
80KERNEL=="zapctl", NAME="zap/ctl"
81KERNEL=="zaptimer", NAME="zap/timer"
82KERNEL=="zapchannel", NAME="zap/channel"
83KERNEL=="zappseudo", NAME="zap/pseudo"
84KERNEL=="zap[0-9]*", NAME="zap/%n"
85
86# AOE character devices
87SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
88SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
89SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
90
91# device mapper creates its own device nodes, so ignore these
92KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
93KERNEL=="device-mapper", NAME="mapper/control"
94
95KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
96
97# Firmware Helper
98ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware_helper"
99
100# Samsung UARTS
101KERNEL=="s3c2410_serial[0-9]", NAME="ttySAC%n"
102
diff --git a/meta/recipes-core/udev/udev-115/flags.patch b/meta/recipes-core/udev/udev-115/flags.patch
new file mode 100644
index 0000000000..13f20eb6a8
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/flags.patch
@@ -0,0 +1,56 @@
1---
2 Makefile | 16 ++++++++--------
3 1 file changed, 8 insertions(+), 8 deletions(-)
4
5Index: udev-115/Makefile
6===================================================================
7--- udev-115.orig/Makefile 2007-08-24 01:29:54.000000000 +0200
8+++ udev-115/Makefile 2007-09-20 17:21:45.000000000 +0200
9@@ -112,39 +112,39 @@
10 AR = $(CROSS_COMPILE)ar
11 RANLIB = $(CROSS_COMPILE)ranlib
12
13-CFLAGS += -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
14+override CFLAGS = -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
15 WARNINGS = -Wstrict-prototypes -Wsign-compare -Wshadow \
16 -Wchar-subscripts -Wmissing-declarations -Wnested-externs \
17 -Wpointer-arith -Wcast-align -Wsign-compare -Wmissing-prototypes
18-CFLAGS += $(WARNINGS)
19+override CFLAGS += $(WARNINGS)
20
21 LDFLAGS += -Wl,-warn-common,--as-needed
22
23 OPTFLAGS = -Os
24-CFLAGS += $(OPTFLAGS)
25+override CFLAGS += $(OPTFLAGS)
26
27 ifeq ($(strip $(USE_LOG)),true)
28- CFLAGS += -DUSE_LOG
29+ override CFLAGS += -DUSE_LOG
30 endif
31
32 # if DEBUG is enabled, then we do not strip
33 ifeq ($(strip $(DEBUG)),true)
34- CFLAGS += -DDEBUG
35+ override CFLAGS += -DDEBUG
36 endif
37
38 ifeq ($(strip $(USE_GCOV)),true)
39- CFLAGS += -fprofile-arcs -ftest-coverage
40+ override CFLAGS += -fprofile-arcs -ftest-coverage
41 LDFLAGS += -fprofile-arcs
42 endif
43
44 ifeq ($(strip $(USE_SELINUX)),true)
45 UDEV_OBJS += udev_selinux.o
46 LIB_OBJS += -lselinux -lsepol
47- CFLAGS += -DUSE_SELINUX
48+ override CFLAGS += -DUSE_SELINUX
49 endif
50
51 ifeq ($(strip $(USE_STATIC)),true)
52- CFLAGS += -DUSE_STATIC
53+ override CFLAGS += -DUSE_STATIC
54 LDFLAGS += -static
55 endif
56
diff --git a/meta/recipes-core/udev/udev-115/init b/meta/recipes-core/udev/udev-115/init
new file mode 100644
index 0000000000..c882c75607
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/init
@@ -0,0 +1,48 @@
1export TZ=/etc/localtime
2
3[ -d /sys/class ] || exit 1
4[ -r /proc/mounts ] || exit 1
5[ -x /sbin/udevd ] || exit 1
6[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
7
8kill_udevd() {
9 if [ -x /sbin/pidof ]; then
10 pid=`/sbin/pidof -x udevd`
11 [ -n "$pid" ] && kill $pid
12 fi
13}
14
15export ACTION=add
16# propagate /dev from /sys
17echo -n "Starting udev"
18
19# mount the tmpfs on /dev, if not already done
20LANG=C awk "\$2 == \"/dev\" && \$4 == \"tmpfs\" { exit 1 }" /proc/mounts && {
21 mount -n -o mode=0755 -t tmpfs none "/dev"
22 mkdir -m 0755 /dev/pts
23 mkdir -m 0755 /dev/shm
24}
25
26if [ -e /etc/dev.tar ]; then
27 (cd /; tar xf /etc/dev.tar)
28 not_first_boot=1
29fi
30
31# make_extra_nodes
32kill_udevd > "/dev/null" 2>&1
33
34 # trigger the sorted events
35 echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
36 /sbin/udevd -d
37
38 /sbin/udevcontrol env STARTUP=1
39 if [ "$not_first_boot" != "" ];then
40 /sbin/udevtrigger --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
41 (/sbin/udevsettle --timeout=3; /sbin/udevcontrol env STARTUP=)&
42 else
43 /sbin/udevtrigger
44 /sbin/udevsettle
45 fi
46
47echo
48exit 0
diff --git a/meta/recipes-core/udev/udev-115/local.rules b/meta/recipes-core/udev/udev-115/local.rules
new file mode 100644
index 0000000000..5b926018f5
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/local.rules
@@ -0,0 +1,31 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# Media automounting
17SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
18SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
19
20# Handle network interface setup
21SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
22SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
23
24# The first rtc device is symlinked to /dev/rtc
25KERNEL=="rtc0", SYMLINK+="rtc"
26
27# Try and modprobe for drivers for new hardware
28ACTION=="add", DEVPATH=="/devices/*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
29
30# Create a symlink to any touchscreen input device
31SUBSYSTEM=="input", KERNEL=="event[0-9]*", SYSFS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
diff --git a/meta/recipes-core/udev/udev-115/noasmlinkage.patch b/meta/recipes-core/udev/udev-115/noasmlinkage.patch
new file mode 100644
index 0000000000..5824d29590
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/noasmlinkage.patch
@@ -0,0 +1,36 @@
1
2#
3# Patch managed by http://www.holgerschurig.de/patcher.html
4#
5
6---
7 udevd.c | 2 +-
8 udevstart.c | 2 +-
9 2 files changed, 2 insertions(+), 2 deletions(-)
10
11Index: udev-115/udevd.c
12===================================================================
13--- udev-115.orig/udevd.c 2007-08-24 01:29:54.000000000 +0200
14+++ udev-115/udevd.c 2007-09-20 17:04:51.000000000 +0200
15@@ -767,7 +767,7 @@
16 return msg;
17 }
18
19-static void asmlinkage sig_handler(int signum)
20+static void sig_handler(int signum)
21 {
22 switch (signum) {
23 case SIGINT:
24Index: udev-115/udevstart.c
25===================================================================
26--- udev-115.orig/udevstart.c 2007-08-24 01:29:54.000000000 +0200
27+++ udev-115/udevstart.c 2007-09-20 17:04:51.000000000 +0200
28@@ -304,7 +304,7 @@
29 }
30 }
31
32-static void asmlinkage sig_handler(int signum)
33+static void sig_handler(int signum)
34 {
35 switch (signum) {
36 case SIGALRM:
diff --git a/meta/recipes-core/udev/udev-115/permissions.rules b/meta/recipes-core/udev/udev-115/permissions.rules
new file mode 100644
index 0000000000..99e03b1036
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/permissions.rules
@@ -0,0 +1,101 @@
1ACTION!="add", GOTO="permissions_end"
2
3# workarounds needed to synchronize with sysfs
4DEVPATH=="/devices/*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
5SUBSYSTEM=="scsi", WAIT_FOR_SYSFS="ioerr_cnt"
6# only needed for kernels < 2.6.16
7SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
8# only needed for kernels < 2.6.17
9SUBSYSTEM=="net", ENV{PHYSDEVDRIVER}=="?*", WAIT_FOR_SYSFS="device/driver"
10
11# default permissions for block devices
12SUBSYSTEM=="block", GROUP="disk"
13SUBSYSTEM=="block", SYSFS{removable}=="1", GROUP="floppy"
14
15# IDE devices
16BUS=="ide", KERNEL=="hd[a-z]|pcd[0-9]*", DRIVER=="ide-cdrom|pcd", \
17 IMPORT{program}="cdrom_id --export $tempnode"
18ENV{ID_CDROM}=="?*", GROUP="cdrom"
19BUS=="ide", KERNEL=="ht[0-9]*", GROUP="tape"
20BUS=="ide", KERNEL=="nht[0-9]*", GROUP="tape"
21
22# SCSI devices
23BUS=="scsi", SYSFS{type}=="1", GROUP="tape"
24BUS=="scsi", SYSFS{type}=="5", GROUP="cdrom"
25
26# USB devices
27BUS=="usb", KERNEL=="legousbtower*", MODE="0666"
28BUS=="usb", KERNEL=="lp[0-9]*", GROUP="lp"
29
30# usbfs-like devices
31SUBSYSTEM=="usb_device", MODE="0664"
32
33# iRiver music players
34SUBSYSTEM=="usb_device", GROUP="plugdev", \
35 SYSFS{idVendor}=="4102", SYSFS{idProduct}=="10[01][135789]"
36
37# serial devices
38SUBSYSTEM=="tty", GROUP="dialout"
39SUBSYSTEM=="capi", GROUP="dialout"
40SUBSYSTEM=="slamr", GROUP="dialout"
41SUBSYSTEM=="zaptel", GROUP="dialout"
42
43# vc devices (all members of the tty subsystem)
44KERNEL=="ptmx", MODE="0666", GROUP="root"
45KERNEL=="console", MODE="0600", GROUP="root"
46KERNEL=="tty", MODE="0666", GROUP="root"
47KERNEL=="tty[0-9]*", GROUP="root"
48KERNEL=="pty*", MODE="0666", GROUP="tty"
49
50# video devices
51SUBSYSTEM=="video4linux", GROUP="video"
52SUBSYSTEM=="drm", GROUP="video"
53SUBSYSTEM=="dvb", GROUP="video"
54SUBSYSTEM=="em8300", GROUP="video"
55SUBSYSTEM=="graphics", GROUP="video"
56SUBSYSTEM=="nvidia", GROUP="video"
57
58# misc devices
59KERNEL=="random", MODE="0666"
60KERNEL=="urandom", MODE="0666"
61KERNEL=="mem", MODE="0640", GROUP="kmem"
62KERNEL=="kmem", MODE="0640", GROUP="kmem"
63KERNEL=="port", MODE="0640", GROUP="kmem"
64KERNEL=="full", MODE="0666"
65KERNEL=="null", MODE="0666"
66KERNEL=="zero", MODE="0666"
67KERNEL=="inotify", MODE="0666"
68KERNEL=="sgi_fetchop", MODE="0666"
69KERNEL=="sonypi", MODE="0666"
70KERNEL=="agpgart", GROUP="video"
71KERNEL=="rtc", GROUP="audio"
72
73KERNEL=="cdemu[0-9]*", GROUP="cdrom"
74KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
75KERNEL=="pktcdvd", MODE="0644"
76
77# printers and parallel devices
78SUBSYSTEM=="printer", GROUP="lp"
79SUBSYSTEM=="ppdev", GROUP="lp"
80KERNEL=="pt[0-9]*", GROUP="tape"
81KERNEL=="pht[0-9]*", GROUP="tape"
82
83# sound devices
84SUBSYSTEM=="sound", GROUP="audio"
85
86# ieee1394 devices
87KERNEL=="raw1394", GROUP="disk"
88KERNEL=="dv1394*", GROUP="video"
89KERNEL=="video1394*", GROUP="video"
90
91# input devices
92KERNEL=="event[0-9]*", SYSFS{name}=="*dvb*|*DVB*|* IR *" \
93 MODE="0664", GROUP="video"
94KERNEL=="js[0-9]*", MODE="0664"
95
96# AOE character devices
97SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
98SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
99
100LABEL="permissions_end"
101
diff --git a/meta/recipes-core/udev/udev-115/udev.rules b/meta/recipes-core/udev/udev-115/udev.rules
new file mode 100644
index 0000000000..4d29acac0c
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/udev.rules
@@ -0,0 +1,105 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# SCSI devices
17BUS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
18
19# USB devices
20BUS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
21BUS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
22BUS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
23BUS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
24BUS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
25BUS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
26BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}=="Palm Handheld*", \
27 SYMLINK+="pilot"
28
29# usbfs-like devices
30SUBSYSTEM=="usb_device", \
31 PROGRAM="/bin/sh -c 'export X=%k; export X=$${X#usbdev}; export B=$${X%%%%.*}; export D=$${X#*.}; echo bus/usb/$$B/$$D'", SYMLINK+="%c"
32
33# serial devices
34KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
35KERNEL=="capi[0-9]*", NAME="capi/%n"
36
37# video devices
38KERNEL=="card[0-9]*", NAME="dri/%k"
39
40# misc devices
41KERNEL=="hw_random", NAME="hwrng"
42KERNEL=="tun", NAME="net/%k"
43
44KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
45KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
46KERNEL=="pktcdvd", NAME="pktcdvd/control"
47
48KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
49KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
50KERNEL=="microcode", NAME="cpu/microcode"
51
52KERNEL=="umad*", NAME="infiniband/%k"
53KERNEL=="issm*", NAME="infiniband/%k"
54KERNEL=="uverbs*", NAME="infiniband/%k"
55KERNEL=="ucm", NAME="infiniband/%k"
56
57KERNEL=="buzzer", NAME="misc/buzzer"
58
59# ALSA devices
60KERNEL=="controlC[0-9]*", NAME="snd/%k"
61KERNEL=="hwC[D0-9]*", NAME="snd/%k"
62KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
63KERNEL=="midiC[D0-9]*", NAME="snd/%k"
64KERNEL=="timer", NAME="snd/%k"
65KERNEL=="seq", NAME="snd/%k"
66
67# ieee1394 devices
68KERNEL=="dv1394*", NAME="dv1394/%n"
69KERNEL=="video1394*", NAME="video1394/%n"
70
71# input devices
72KERNEL=="mice", NAME="input/%k"
73KERNEL=="mouse[0-9]*", NAME="input/%k"
74KERNEL=="event[0-9]*", NAME="input/%k"
75KERNEL=="js[0-9]*", NAME="input/%k"
76KERNEL=="ts[0-9]*", NAME="input/%k"
77KERNEL=="uinput", NAME="input/%k"
78
79# Zaptel
80KERNEL=="zapctl", NAME="zap/ctl"
81KERNEL=="zaptimer", NAME="zap/timer"
82KERNEL=="zapchannel", NAME="zap/channel"
83KERNEL=="zappseudo", NAME="zap/pseudo"
84KERNEL=="zap[0-9]*", NAME="zap/%n"
85
86# AOE character devices
87SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
88SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
89SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
90
91# device mapper creates its own device nodes, so ignore these
92KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
93KERNEL=="device-mapper", NAME="mapper/control"
94
95KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
96
97# Firmware Helper
98ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware_helper"
99
100# Samsung UARTS
101KERNEL=="s3c2410_serial[0-9]", NAME="ttySAC%n"
102
103# MXC UARTs
104KERNEL=="ttymxc[0-4]", NAME="ttymxc%n"
105
diff --git a/meta/recipes-core/udev/udev-115/udevtrigger_add_devname_filtering.patch b/meta/recipes-core/udev/udev-115/udevtrigger_add_devname_filtering.patch
new file mode 100644
index 0000000000..87cafcaa9d
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/udevtrigger_add_devname_filtering.patch
@@ -0,0 +1,104 @@
1---
2 udevtrigger.c | 40 ++++++++++++++++++++++++++++++++++++++++
3 1 file changed, 40 insertions(+)
4
5Index: udev-115/udevtrigger.c
6===================================================================
7--- udev-115.orig/udevtrigger.c 2007-08-24 01:29:54.000000000 +0200
8+++ udev-115/udevtrigger.c 2007-09-21 18:45:28.000000000 +0200
9@@ -39,6 +39,8 @@
10 LIST_HEAD(device_list);
11 LIST_HEAD(filter_subsystem_match_list);
12 LIST_HEAD(filter_subsystem_nomatch_list);
13+LIST_HEAD(filter_kernel_match_list);
14+LIST_HEAD(filter_kernel_nomatch_list);
15 LIST_HEAD(filter_attr_match_list);
16 LIST_HEAD(filter_attr_nomatch_list);
17
18@@ -218,6 +220,26 @@
19 return 0;
20 }
21
22+static int kernel_filtered(const char *kernel)
23+{
24+ struct name_entry *loop_name;
25+
26+ /* skip devices matching the prohibited kernel device names */
27+ list_for_each_entry(loop_name, &filter_kernel_nomatch_list, node)
28+ if (fnmatch(loop_name->name, kernel, 0) == 0)
29+ return 1;
30+
31+ /* skip devices not matching the listed kernel device names */
32+ if (!list_empty(&filter_kernel_match_list)) {
33+ list_for_each_entry(loop_name, &filter_kernel_match_list, node)
34+ if (fnmatch(loop_name->name, kernel, 0) == 0)
35+ return 0;
36+ return 1;
37+ }
38+
39+ return 0;
40+}
41+
42 static int attr_filtered(const char *path)
43 {
44 struct name_entry *loop_name;
45@@ -296,6 +318,9 @@
46 if (dent2->d_name[0] == '.')
47 continue;
48
49+ if (kernel_filtered(dent2->d_name))
50+ continue;
51+
52 strlcpy(dirname2, dirname, sizeof(dirname2));
53 strlcat(dirname2, "/", sizeof(dirname2));
54 strlcat(dirname2, dent2->d_name, sizeof(dirname2));
55@@ -402,6 +427,9 @@
56 if (!strcmp(dent2->d_name, "device"))
57 continue;
58
59+ if (kernel_filtered(dent2->d_name))
60+ continue;
61+
62 strlcpy(dirname2, dirname, sizeof(dirname2));
63 strlcat(dirname2, "/", sizeof(dirname2));
64 strlcat(dirname2, dent2->d_name, sizeof(dirname2));
65@@ -458,6 +486,8 @@
66 { "subsystem-nomatch", 1, NULL, 'S' },
67 { "attr-match", 1, NULL, 'a' },
68 { "attr-nomatch", 1, NULL, 'A' },
69+ { "kernel-match", 1, NULL, 'k' },
70+ { "kernel-nomatch", 1, NULL, 'K' },
71 {}
72 };
73
74@@ -496,6 +526,12 @@
75 case 'A':
76 name_list_add(&filter_attr_nomatch_list, optarg, 0);
77 break;
78+ case 'k':
79+ name_list_add(&filter_kernel_match_list, optarg, 0);
80+ break;
81+ case 'K':
82+ name_list_add(&filter_kernel_nomatch_list, optarg, 0);
83+ break;
84 case 'h':
85 printf("Usage: udevtrigger OPTIONS\n"
86 " --verbose print the list of devices while running\n"
87@@ -504,6 +540,8 @@
88 " marked as failed during a previous run\n"
89 " --subsystem-match=<subsystem> trigger devices from a matching subystem\n"
90 " --subsystem-nomatch=<subsystem> exclude devices from a matching subystem\n"
91+ " --kernel-match=<subsystem> trigger devices from a matching kernel device name\n"
92+ " --kernel-nomatch=<subsystem> exclude devices from a matching kernel device name\n"
93 " --attr-match=<file[=<value>]> trigger devices with a matching sysfs\n"
94 " attribute\n"
95 " --attr-nomatch=<file[=<value>]> exclude devices with a matching sysfs\n"
96@@ -549,6 +587,8 @@
97 exit:
98 name_list_cleanup(&filter_subsystem_match_list);
99 name_list_cleanup(&filter_subsystem_nomatch_list);
100+ name_list_cleanup(&filter_kernel_match_list);
101+ name_list_cleanup(&filter_kernel_nomatch_list);
102 name_list_cleanup(&filter_attr_match_list);
103 name_list_cleanup(&filter_attr_nomatch_list);
104
diff --git a/meta/recipes-core/udev/udev-115/vol_id_ld.patch b/meta/recipes-core/udev/udev-115/vol_id_ld.patch
new file mode 100644
index 0000000000..11126eef8d
--- /dev/null
+++ b/meta/recipes-core/udev/udev-115/vol_id_ld.patch
@@ -0,0 +1,17 @@
1---
2 extras/volume_id/Makefile | 2 +-
3 1 file changed, 1 insertion(+), 1 deletion(-)
4
5Index: udev-115/extras/volume_id/Makefile
6===================================================================
7--- udev-115.orig/extras/volume_id/Makefile 2007-09-20 18:17:59.000000000 +0200
8+++ udev-115/extras/volume_id/Makefile 2007-09-20 18:18:08.000000000 +0200
9@@ -44,7 +44,7 @@
10 ifeq ($(strip $(VOLUME_ID_STATIC)),true)
11 $(Q) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) lib/libvolume_id.a $(LIB_OBJS)
12 else
13- $(Q) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) -Llib -lvolume_id $(LIB_OBJS)
14+ $(Q) $(LD) -Llib $(LDFLAGS) -o $@ $@.o $(LIBUDEV) -lvolume_id $(LIB_OBJS)
15 endif
16
17 # man pages
diff --git a/meta/recipes-core/udev/udev-124/flags.patch b/meta/recipes-core/udev/udev-124/flags.patch
new file mode 100644
index 0000000000..13f20eb6a8
--- /dev/null
+++ b/meta/recipes-core/udev/udev-124/flags.patch
@@ -0,0 +1,56 @@
1---
2 Makefile | 16 ++++++++--------
3 1 file changed, 8 insertions(+), 8 deletions(-)
4
5Index: udev-115/Makefile
6===================================================================
7--- udev-115.orig/Makefile 2007-08-24 01:29:54.000000000 +0200
8+++ udev-115/Makefile 2007-09-20 17:21:45.000000000 +0200
9@@ -112,39 +112,39 @@
10 AR = $(CROSS_COMPILE)ar
11 RANLIB = $(CROSS_COMPILE)ranlib
12
13-CFLAGS += -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
14+override CFLAGS = -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
15 WARNINGS = -Wstrict-prototypes -Wsign-compare -Wshadow \
16 -Wchar-subscripts -Wmissing-declarations -Wnested-externs \
17 -Wpointer-arith -Wcast-align -Wsign-compare -Wmissing-prototypes
18-CFLAGS += $(WARNINGS)
19+override CFLAGS += $(WARNINGS)
20
21 LDFLAGS += -Wl,-warn-common,--as-needed
22
23 OPTFLAGS = -Os
24-CFLAGS += $(OPTFLAGS)
25+override CFLAGS += $(OPTFLAGS)
26
27 ifeq ($(strip $(USE_LOG)),true)
28- CFLAGS += -DUSE_LOG
29+ override CFLAGS += -DUSE_LOG
30 endif
31
32 # if DEBUG is enabled, then we do not strip
33 ifeq ($(strip $(DEBUG)),true)
34- CFLAGS += -DDEBUG
35+ override CFLAGS += -DDEBUG
36 endif
37
38 ifeq ($(strip $(USE_GCOV)),true)
39- CFLAGS += -fprofile-arcs -ftest-coverage
40+ override CFLAGS += -fprofile-arcs -ftest-coverage
41 LDFLAGS += -fprofile-arcs
42 endif
43
44 ifeq ($(strip $(USE_SELINUX)),true)
45 UDEV_OBJS += udev_selinux.o
46 LIB_OBJS += -lselinux -lsepol
47- CFLAGS += -DUSE_SELINUX
48+ override CFLAGS += -DUSE_SELINUX
49 endif
50
51 ifeq ($(strip $(USE_STATIC)),true)
52- CFLAGS += -DUSE_STATIC
53+ override CFLAGS += -DUSE_STATIC
54 LDFLAGS += -static
55 endif
56
diff --git a/meta/recipes-core/udev/udev-124/init b/meta/recipes-core/udev/udev-124/init
new file mode 100644
index 0000000000..32ab370aa9
--- /dev/null
+++ b/meta/recipes-core/udev/udev-124/init
@@ -0,0 +1,59 @@
1#!/bin/sh -e
2
3### BEGIN INIT INFO
4# Provides: udev
5# Required-Start: mountvirtfs
6# Required-Stop:
7# Default-Start: S
8# Default-Stop:
9# Short-Description: Start udevd, populate /dev and load drivers.
10### END INIT INFO
11
12export TZ=/etc/localtime
13
14[ -d /sys/class ] || exit 1
15[ -r /proc/mounts ] || exit 1
16[ -x /sbin/udevd ] || exit 1
17[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
18
19kill_udevd() {
20 if [ -x /sbin/pidof ]; then
21 pid=`/sbin/pidof -x udevd`
22 [ -n "$pid" ] && kill $pid
23 fi
24}
25
26export ACTION=add
27# propagate /dev from /sys
28echo -n "Starting udev"
29
30# mount the tmpfs on /dev, if not already done
31LANG=C awk "\$2 == \"/dev\" && \$4 == \"tmpfs\" { exit 1 }" /proc/mounts && {
32 mount -n -o mode=0755 -t tmpfs none "/dev"
33 mkdir -m 0755 /dev/pts
34 mkdir -m 0755 /dev/shm
35}
36
37if [ -e /etc/dev.tar ]; then
38 (cd /; tar xf /etc/dev.tar)
39 not_first_boot=1
40fi
41
42# make_extra_nodes
43kill_udevd > "/dev/null" 2>&1
44
45 # trigger the sorted events
46 echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
47 /sbin/udevd -d
48
49 /sbin/udevadm control env STARTUP=1
50 if [ "$not_first_boot" != "" ];then
51 /sbin/udevadm trigger --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
52 (/sbin/udevadm settle --timeout=3; /sbin/udevadm control env STARTUP=)&
53 else
54 /sbin/udevadm trigger
55 /sbin/udevadm settle
56 fi
57
58echo
59exit 0
diff --git a/meta/recipes-core/udev/udev-124/local.rules b/meta/recipes-core/udev/udev-124/local.rules
new file mode 100644
index 0000000000..5b926018f5
--- /dev/null
+++ b/meta/recipes-core/udev/udev-124/local.rules
@@ -0,0 +1,31 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# Media automounting
17SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
18SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
19
20# Handle network interface setup
21SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
22SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
23
24# The first rtc device is symlinked to /dev/rtc
25KERNEL=="rtc0", SYMLINK+="rtc"
26
27# Try and modprobe for drivers for new hardware
28ACTION=="add", DEVPATH=="/devices/*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
29
30# Create a symlink to any touchscreen input device
31SUBSYSTEM=="input", KERNEL=="event[0-9]*", SYSFS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
diff --git a/meta/recipes-core/udev/udev-124/noasmlinkage.patch b/meta/recipes-core/udev/udev-124/noasmlinkage.patch
new file mode 100644
index 0000000000..d58a7ea4de
--- /dev/null
+++ b/meta/recipes-core/udev/udev-124/noasmlinkage.patch
@@ -0,0 +1,45 @@
1diff -pru udev-124.orig/test-udev.c udev-124/test-udev.c
2--- udev-124.orig/test-udev.c 2008-06-12 06:24:30.000000000 +0100
3+++ udev-124/test-udev.c 2008-07-07 14:43:37.000000000 +0100
4@@ -46,7 +46,7 @@ void log_message(int priority, const cha
5 }
6 #endif
7
8-static void asmlinkage sig_handler(int signum)
9+static void sig_handler(int signum)
10 {
11 switch (signum) {
12 case SIGALRM:
13diff -pru udev-124.orig/udevd.c udev-124/udevd.c
14--- udev-124.orig/udevd.c 2008-06-12 06:24:30.000000000 +0100
15+++ udev-124/udevd.c 2008-07-07 14:43:58.000000000 +0100
16@@ -87,7 +87,7 @@ void log_message(int priority, const cha
17
18 #endif
19
20-static void asmlinkage udev_event_sig_handler(int signum)
21+static void udev_event_sig_handler(int signum)
22 {
23 if (signum == SIGALRM)
24 exit(1);
25@@ -798,7 +798,7 @@ static struct udevd_uevent_msg *get_netl
26 return msg;
27 }
28
29-static void asmlinkage sig_handler(int signum)
30+static void sig_handler(int signum)
31 {
32 switch (signum) {
33 case SIGINT:
34diff -pru udev-124.orig/udevmonitor.c udev-124/udevmonitor.c
35--- udev-124.orig/udevmonitor.c 2008-06-12 06:24:30.000000000 +0100
36+++ udev-124/udevmonitor.c 2008-07-07 14:44:24.000000000 +0100
37@@ -97,7 +97,7 @@ static int init_uevent_netlink_sock(void
38 return 0;
39 }
40
41-static void asmlinkage sig_handler(int signum)
42+static void sig_handler(int signum)
43 {
44 if (signum == SIGINT || signum == SIGTERM)
45 udev_exit = 1;
diff --git a/meta/recipes-core/udev/udev-124/permissions.rules b/meta/recipes-core/udev/udev-124/permissions.rules
new file mode 100644
index 0000000000..205b733292
--- /dev/null
+++ b/meta/recipes-core/udev/udev-124/permissions.rules
@@ -0,0 +1,131 @@
1ACTION!="add", GOTO="permissions_end"
2
3# workarounds needed to synchronize with sysfs
4# only needed for kernels < v2.6.18-rc1
5ENV{PHYSDEVPATH}!="?*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
6SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", WAIT_FOR_SYSFS="ioerr_cnt"
7# only needed for kernels < 2.6.16
8SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
9# only needed for kernels < 2.6.17
10SUBSYSTEM=="net", ENV{DRIVER}=="?*", WAIT_FOR_SYSFS="device/driver"
11
12# devices needed to load the drivers providing them
13KERNEL=="tun", OPTIONS+="ignore_remove"
14KERNEL=="ppp", OPTIONS+="ignore_remove"
15KERNEL=="loop[0-9]*", OPTIONS+="ignore_remove"
16
17# default permissions for block devices
18SUBSYSTEM=="block", GROUP="disk"
19# the aacraid driver is broken and reports that disks removable (see #404927)
20SUBSYSTEM=="block", ATTRS{removable}=="1", \
21 DRIVERS!="aacraid", GROUP="floppy"
22# all block devices on these buses are "removable"
23SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394|mmc|pcmcia", GROUP="floppy"
24
25# IDE devices
26KERNEL=="hd[a-z]|pcd[0-9]*", DRIVERS=="ide-cdrom|pcd", \
27 IMPORT{program}="cdrom_id --export $tempnode"
28ENV{ID_CDROM}=="?*", GROUP="cdrom"
29KERNEL=="ht[0-9]*", GROUP="tape"
30KERNEL=="nht[0-9]*", GROUP="tape"
31
32# SCSI devices
33KERNEL=="sr[0-9]*", IMPORT{program}="cdrom_id --export $tempnode"
34SUBSYSTEMS=="scsi", ATTRS{type}=="1", GROUP="tape"
35SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="HP", GROUP="scanner"
36SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="Epson", GROUP="scanner"
37SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="EPSON", GROUP="scanner"
38SUBSYSTEMS=="scsi", ATTRS{type}=="4", GROUP="cdrom"
39SUBSYSTEMS=="scsi", ATTRS{type}=="5", GROUP="cdrom"
40SUBSYSTEMS=="scsi", ATTRS{type}=="6", GROUP="scanner"
41SUBSYSTEMS=="scsi", ATTRS{type}=="8", GROUP="tape"
42
43# USB devices
44KERNEL=="legousbtower*", MODE="0666"
45KERNEL=="lp[0-9]*", SUBSYSTEMS=="usb", GROUP="lp"
46
47# usbfs-like devices
48SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
49 MODE="0664"
50
51# iRiver music players
52SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="plugdev", \
53 ATTRS{idVendor}=="4102", ATTRS{idProduct}=="10[01][135789]"
54
55# serial devices
56SUBSYSTEM=="tty", GROUP="dialout"
57SUBSYSTEM=="capi", GROUP="dialout"
58SUBSYSTEM=="slamr", GROUP="dialout"
59SUBSYSTEM=="zaptel", GROUP="dialout"
60
61# vc devices (all members of the tty subsystem)
62KERNEL=="ptmx", MODE="0666", GROUP="root"
63KERNEL=="console", MODE="0600", GROUP="root"
64KERNEL=="tty", MODE="0666", GROUP="root"
65KERNEL=="tty[0-9]*", GROUP="root"
66KERNEL=="pty*", MODE="0666", GROUP="tty"
67
68# video devices
69SUBSYSTEM=="video4linux", GROUP="video"
70SUBSYSTEM=="drm", GROUP="video"
71SUBSYSTEM=="dvb", GROUP="video"
72SUBSYSTEM=="em8300", GROUP="video"
73SUBSYSTEM=="graphics", GROUP="video"
74SUBSYSTEM=="nvidia", GROUP="video"
75
76# misc devices
77KERNEL=="random", MODE="0666"
78KERNEL=="urandom", MODE="0666"
79KERNEL=="mem", MODE="0640", GROUP="kmem"
80KERNEL=="kmem", MODE="0640", GROUP="kmem"
81KERNEL=="port", MODE="0640", GROUP="kmem"
82KERNEL=="full", MODE="0666"
83KERNEL=="null", MODE="0666"
84KERNEL=="zero", MODE="0666"
85KERNEL=="inotify", MODE="0666"
86KERNEL=="sgi_fetchop", MODE="0666"
87KERNEL=="sonypi", MODE="0666"
88KERNEL=="agpgart", GROUP="video"
89KERNEL=="nvram", GROUP="nvram"
90KERNEL=="rtc|rtc[0-9]*", GROUP="audio"
91KERNEL=="tpm*", MODE="0600", OWNER="tss", GROUP="tss"
92KERNEL=="fuse", GROUP="fuse"
93KERNEL=="kqemu", MODE="0666"
94KERNEL=="kvm", GROUP="kvm"
95KERNEL=="tun", MODE="0666",
96
97KERNEL=="cdemu[0-9]*", GROUP="cdrom"
98KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
99KERNEL=="pktcdvd", MODE="0644"
100
101KERNEL=="uverbs*", GROUP="rdma"
102KERNEL=="ucm*", GROUP="rdma"
103KERNEL=="rdma_ucm", GROUP="rdma"
104
105# printers and parallel devices
106SUBSYSTEM=="printer", GROUP="lp"
107SUBSYSTEM=="ppdev", GROUP="lp"
108KERNEL=="irlpt*", GROUP="lp"
109KERNEL=="pt[0-9]*", GROUP="tape"
110KERNEL=="pht[0-9]*", GROUP="tape"
111
112# sound devices
113SUBSYSTEM=="sound", GROUP="audio"
114
115# ieee1394 devices
116KERNEL=="raw1394", GROUP="disk"
117KERNEL=="dv1394*", GROUP="video"
118KERNEL=="video1394*", GROUP="video"
119
120# input devices
121KERNEL=="event[0-9]*", ATTRS{name}=="*dvb*|*DVB*|* IR *" \
122 MODE="0664", GROUP="video"
123KERNEL=="js[0-9]*", MODE="0664"
124KERNEL=="lirc[0-9]*", GROUP="video"
125
126# AOE character devices
127SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
128SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
129
130LABEL="permissions_end"
131
diff --git a/meta/recipes-core/udev/udev-124/run.rules b/meta/recipes-core/udev/udev-124/run.rules
new file mode 100644
index 0000000000..75d71375bb
--- /dev/null
+++ b/meta/recipes-core/udev/udev-124/run.rules
@@ -0,0 +1,14 @@
1# debugging monitor
2RUN+="socket:/org/kernel/udev/monitor"
3
4# run a command on remove events
5ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
6
7# ignore the events generated by virtual consoles
8KERNEL=="ptmx", OPTIONS+="last_rule"
9KERNEL=="console", OPTIONS+="last_rule"
10KERNEL=="tty" , OPTIONS+="last_rule"
11KERNEL=="tty[0-9]*", OPTIONS+="last_rule"
12KERNEL=="pty*", OPTIONS+="last_rule"
13SUBSYSTEM=="vc", OPTIONS+="last_rule"
14
diff --git a/meta/recipes-core/udev/udev-124/udev.rules b/meta/recipes-core/udev/udev-124/udev.rules
new file mode 100644
index 0000000000..a19d4a0bf6
--- /dev/null
+++ b/meta/recipes-core/udev/udev-124/udev.rules
@@ -0,0 +1,116 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# workaround for devices which do not report media changes
17SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", \
18 ENV{ID_MODEL}=="IOMEGA_ZIP*", NAME="%k", OPTIONS+="all_partitions"
19SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTRS{media}=="floppy", \
20 OPTIONS+="all_partitions"
21
22# SCSI devices
23SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
24
25# USB devices
26SUBSYSTEMS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
27SUBSYSTEMS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
28SUBSYSTEMS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
29SUBSYSTEMS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
30SUBSYSTEMS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
31SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
32SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", \
33 ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \
34 SYMLINK+="pilot"
35
36# usbfs-like devices
37SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", \
38 NAME="%c"
39SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"
40
41# serial devices
42KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
43KERNEL=="capi[0-9]*", NAME="capi/%n"
44
45# video devices
46KERNEL=="dvb*", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}", ACTION=="add", \
47 NAME="%c"
48KERNEL=="card[0-9]*", NAME="dri/%k"
49
50# misc devices
51KERNEL=="hw_random", NAME="hwrng"
52KERNEL=="tun", NAME="net/%k"
53KERNEL=="evtchn", NAME="xen/%k"
54
55KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
56KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
57KERNEL=="pktcdvd", NAME="pktcdvd/control"
58
59KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
60KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
61KERNEL=="microcode", NAME="cpu/microcode"
62
63KERNEL=="umad*", NAME="infiniband/%k"
64KERNEL=="issm*", NAME="infiniband/%k"
65KERNEL=="uverbs*", NAME="infiniband/%k"
66KERNEL=="ucm*", NAME="infiniband/%k"
67KERNEL=="rdma_ucm", NAME="infiniband/%k"
68
69# ALSA devices
70KERNEL=="controlC[0-9]*", NAME="snd/%k"
71KERNEL=="hwC[D0-9]*", NAME="snd/%k"
72KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
73KERNEL=="midiC[D0-9]*", NAME="snd/%k"
74KERNEL=="timer", NAME="snd/%k"
75KERNEL=="seq", NAME="snd/%k"
76
77# ieee1394 devices
78KERNEL=="dv1394*", NAME="dv1394/%n"
79KERNEL=="video1394*", NAME="video1394/%n"
80
81# input devices
82KERNEL=="mice", NAME="input/%k"
83KERNEL=="mouse[0-9]*", NAME="input/%k"
84KERNEL=="event[0-9]*", NAME="input/%k"
85KERNEL=="js[0-9]*", NAME="input/%k"
86KERNEL=="ts[0-9]*", NAME="input/%k"
87KERNEL=="uinput", NAME="input/%k"
88
89# Zaptel
90KERNEL=="zapctl", NAME="zap/ctl"
91KERNEL=="zaptimer", NAME="zap/timer"
92KERNEL=="zapchannel", NAME="zap/channel"
93KERNEL=="zappseudo", NAME="zap/pseudo"
94KERNEL=="zap[0-9]*", NAME="zap/%n"
95
96# AOE character devices
97SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
98SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
99SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
100SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k"
101
102# device mapper creates its own device nodes, so ignore these
103KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
104KERNEL=="device-mapper", NAME="mapper/control"
105
106KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
107
108# Firmware Helper
109ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware.sh"
110
111# Samsung UARTS
112KERNEL=="s3c2410_serial[0-9]", NAME="ttySAC%n"
113
114# MXC UARTs
115KERNEL=="ttymxc[0-4]", NAME="ttymxc%n"
116
diff --git a/meta/recipes-core/udev/udev-124/udevtrigger_add_devname_filtering.patch b/meta/recipes-core/udev/udev-124/udevtrigger_add_devname_filtering.patch
new file mode 100644
index 0000000000..5182542461
--- /dev/null
+++ b/meta/recipes-core/udev/udev-124/udevtrigger_add_devname_filtering.patch
@@ -0,0 +1,99 @@
1diff -pru udev-124.orig/udevtrigger.c udev-124/udevtrigger.c
2--- udev-124.orig/udevtrigger.c 2008-06-12 06:24:30.000000000 +0100
3+++ udev-124/udevtrigger.c 2008-07-07 15:10:09.000000000 +0100
4@@ -42,6 +42,8 @@ static int dry_run;
5 LIST_HEAD(device_list);
6 LIST_HEAD(filter_subsystem_match_list);
7 LIST_HEAD(filter_subsystem_nomatch_list);
8+LIST_HEAD(filter_kernel_match_list);
9+LIST_HEAD(filter_kernel_nomatch_list);
10 LIST_HEAD(filter_attr_match_list);
11 LIST_HEAD(filter_attr_nomatch_list);
12 static int sock = -1;
13@@ -331,6 +333,26 @@ static int attr_match(const char *path,
14 return 0;
15 }
16
17+static int kernel_filtered(const char *kernel)
18+{
19+ struct name_entry *loop_name;
20+
21+ /* skip devices matching the prohibited kernel device names */
22+ list_for_each_entry(loop_name, &filter_kernel_nomatch_list, node)
23+ if (fnmatch(loop_name->name, kernel, 0) == 0)
24+ return 1;
25+
26+ /* skip devices not matching the listed kernel device names */
27+ if (!list_empty(&filter_kernel_match_list)) {
28+ list_for_each_entry(loop_name, &filter_kernel_match_list, node)
29+ if (fnmatch(loop_name->name, kernel, 0) == 0)
30+ return 0;
31+ return 1;
32+ }
33+
34+ return 0;
35+}
36+
37 static int attr_filtered(const char *path)
38 {
39 struct name_entry *loop_name;
40@@ -409,6 +431,9 @@ static void scan_subsystem(const char *s
41 if (dent2->d_name[0] == '.')
42 continue;
43
44+ if (kernel_filtered(dent2->d_name))
45+ continue;
46+
47 strlcpy(dirname2, dirname, sizeof(dirname2));
48 strlcat(dirname2, "/", sizeof(dirname2));
49 strlcat(dirname2, dent2->d_name, sizeof(dirname2));
50@@ -465,6 +490,9 @@ static void scan_block(void)
51 if (!strcmp(dent2->d_name,"device"))
52 continue;
53
54+ if (kernel_filtered(dent2->d_name))
55+ continue;
56+
57 strlcpy(dirname2, dirname, sizeof(dirname2));
58 strlcat(dirname2, "/", sizeof(dirname2));
59 strlcat(dirname2, dent2->d_name, sizeof(dirname2));
60@@ -576,6 +604,8 @@ int udevtrigger(int argc, char *argv[],
61 { "subsystem-nomatch", 1, NULL, 'S' },
62 { "attr-match", 1, NULL, 'a' },
63 { "attr-nomatch", 1, NULL, 'A' },
64+ { "kernel-match", 1, NULL, 'k' },
65+ { "kernel-nomatch", 1, NULL, 'K' },
66 { "env", 1, NULL, 'e' },
67 {}
68 };
69@@ -622,6 +652,12 @@ int udevtrigger(int argc, char *argv[],
70 case 'A':
71 name_list_add(&filter_attr_nomatch_list, optarg, 0);
72 break;
73+ case 'k':
74+ name_list_add(&filter_kernel_match_list, optarg, 0);
75+ break;
76+ case 'K':
77+ name_list_add(&filter_kernel_nomatch_list, optarg, 0);
78+ break;
79 case 'h':
80 printf("Usage: udevadm trigger OPTIONS\n"
81 " --verbose print the list of devices while running\n"
82@@ -632,6 +668,8 @@ int udevtrigger(int argc, char *argv[],
83 " --env=<KEY>=<value> pass an additional key (works only with --socket=)\n"
84 " --subsystem-match=<subsystem> trigger devices from a matching subystem\n"
85 " --subsystem-nomatch=<subsystem> exclude devices from a matching subystem\n"
86+ " --kernel-match=<subsystem> trigger devices from a matching kernel device name\n"
87+ " --kernel-nomatch=<subsystem> exclude devices from a matching kernel device name\n"
88 " --attr-match=<file[=<value>]> trigger devices with a matching sysfs\n"
89 " attribute\n"
90 " --attr-nomatch=<file[=<value>]> exclude devices with a matching sysfs\n"
91@@ -701,6 +739,8 @@ int udevtrigger(int argc, char *argv[],
92 exit:
93 name_list_cleanup(&filter_subsystem_match_list);
94 name_list_cleanup(&filter_subsystem_nomatch_list);
95+ name_list_cleanup(&filter_kernel_match_list);
96+ name_list_cleanup(&filter_kernel_nomatch_list);
97 name_list_cleanup(&filter_attr_match_list);
98 name_list_cleanup(&filter_attr_nomatch_list);
99
diff --git a/meta/recipes-core/udev/udev-124/vol_id_ld.patch b/meta/recipes-core/udev/udev-124/vol_id_ld.patch
new file mode 100644
index 0000000000..11126eef8d
--- /dev/null
+++ b/meta/recipes-core/udev/udev-124/vol_id_ld.patch
@@ -0,0 +1,17 @@
1---
2 extras/volume_id/Makefile | 2 +-
3 1 file changed, 1 insertion(+), 1 deletion(-)
4
5Index: udev-115/extras/volume_id/Makefile
6===================================================================
7--- udev-115.orig/extras/volume_id/Makefile 2007-09-20 18:17:59.000000000 +0200
8+++ udev-115/extras/volume_id/Makefile 2007-09-20 18:18:08.000000000 +0200
9@@ -44,7 +44,7 @@
10 ifeq ($(strip $(VOLUME_ID_STATIC)),true)
11 $(Q) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) lib/libvolume_id.a $(LIB_OBJS)
12 else
13- $(Q) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) -Llib -lvolume_id $(LIB_OBJS)
14+ $(Q) $(LD) -Llib $(LDFLAGS) -o $@ $@.o $(LIBUDEV) -lvolume_id $(LIB_OBJS)
15 endif
16
17 # man pages
diff --git a/meta/recipes-core/udev/udev-141/igep0020/local.rules b/meta/recipes-core/udev/udev-141/igep0020/local.rules
new file mode 100644
index 0000000000..db976d0419
--- /dev/null
+++ b/meta/recipes-core/udev/udev-141/igep0020/local.rules
@@ -0,0 +1,34 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# Media automounting
17SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
18SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
19
20# Handle network interface setup
21SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
22SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
23
24# The first rtc device is symlinked to /dev/rtc
25KERNEL=="rtc0", SYMLINK+="rtc"
26
27# The first framebuffer is symlinked to /dev/fb
28KERNEL=="fb0", SYMLINK+="fb"
29
30# Try and modprobe for drivers for new hardware
31ACTION=="add", DEVPATH=="/devices/*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
32
33# Create a symlink to any touchscreen input device
34SUBSYSTEM=="input", KERNEL=="event[0-9]*", SYSFS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
diff --git a/meta/recipes-core/udev/udev-141/init b/meta/recipes-core/udev/udev-141/init
new file mode 100644
index 0000000000..eb5e50758b
--- /dev/null
+++ b/meta/recipes-core/udev/udev-141/init
@@ -0,0 +1,59 @@
1#!/bin/sh -e
2
3### BEGIN INIT INFO
4# Provides: udev
5# Required-Start: mountvirtfs
6# Required-Stop:
7# Default-Start: S
8# Default-Stop:
9# Short-Description: Start udevd, populate /dev and load drivers.
10### END INIT INFO
11
12export TZ=/etc/localtime
13
14[ -d /sys/class ] || exit 1
15[ -r /proc/mounts ] || exit 1
16[ -x /sbin/udevd ] || exit 1
17[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
18
19kill_udevd() {
20 if [ -x /sbin/pidof ]; then
21 pid=`/sbin/pidof -x udevd`
22 [ -n "$pid" ] && kill $pid
23 fi
24}
25
26export ACTION=add
27# propagate /dev from /sys
28echo -n "Starting udev"
29
30# mount the tmpfs on /dev, if not already done
31LANG=C awk "\$2 == \"/dev\" && \$4 == \"tmpfs\" { exit 1 }" /proc/mounts && {
32 mount -n -o mode=0755 -t tmpfs none "/dev"
33 mkdir -m 0755 /dev/pts
34 mkdir -m 1777 /dev/shm
35}
36
37if [ -e /etc/dev.tar ]; then
38 (cd /; tar xf /etc/dev.tar)
39 not_first_boot=1
40fi
41
42# make_extra_nodes
43kill_udevd > "/dev/null" 2>&1
44
45 # trigger the sorted events
46 echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
47 /sbin/udevd -d
48
49 /sbin/udevadm control --env=STARTUP=1
50 if [ "$not_first_boot" != "" ];then
51 /sbin/udevadm trigger --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
52 (/sbin/udevadm settle --timeout=3; /sbin/udevadm control --env=STARTUP=)&
53 else
54 /sbin/udevadm trigger
55 /sbin/udevadm settle
56 fi
57
58echo
59exit 0
diff --git a/meta/recipes-core/udev/udev-141/local.rules b/meta/recipes-core/udev/udev-141/local.rules
new file mode 100644
index 0000000000..dab319b431
--- /dev/null
+++ b/meta/recipes-core/udev/udev-141/local.rules
@@ -0,0 +1,33 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# Media automounting
17SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
18SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
19
20# Handle network interface setup
21SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
22SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
23
24# The first rtc device is symlinked to /dev/rtc
25KERNEL=="rtc0", SYMLINK+="rtc"
26
27# Try and modprobe for drivers for new hardware
28ACTION=="add", DEVPATH=="/devices/*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
29
30# Create a symlink to any touchscreen input device
31# Need to use ../ so the eventX can find the parent inputX modalias which is a directory above
32SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{../modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
33
diff --git a/meta/recipes-core/udev/udev-141/noasmlinkage.patch b/meta/recipes-core/udev/udev-141/noasmlinkage.patch
new file mode 100644
index 0000000000..6f9fe948f2
--- /dev/null
+++ b/meta/recipes-core/udev/udev-141/noasmlinkage.patch
@@ -0,0 +1,48 @@
1Index: udev-141/udev/test-udev.c
2===================================================================
3--- udev-141.orig/udev/test-udev.c 2008-10-24 09:07:24.000000000 +0100
4+++ udev-141/udev/test-udev.c 2009-04-14 15:34:01.000000000 +0100
5@@ -30,7 +30,7 @@
6
7 #include "udev.h"
8
9-static void asmlinkage sig_handler(int signum)
10+static void sig_handler(int signum)
11 {
12 switch (signum) {
13 case SIGALRM:
14Index: udev-141/udev/udevadm-monitor.c
15===================================================================
16--- udev-141.orig/udev/udevadm-monitor.c 2009-03-29 19:07:01.000000000 +0100
17+++ udev-141/udev/udevadm-monitor.c 2009-04-14 15:34:01.000000000 +0100
18@@ -35,7 +35,7 @@
19
20 static int udev_exit;
21
22-static void asmlinkage sig_handler(int signum)
23+static void sig_handler(int signum)
24 {
25 if (signum == SIGINT || signum == SIGTERM)
26 udev_exit = 1;
27Index: udev-141/udev/udevd.c
28===================================================================
29--- udev-141.orig/udev/udevd.c 2009-03-29 19:07:01.000000000 +0100
30+++ udev-141/udev/udevd.c 2009-04-14 15:34:56.000000000 +0100
31@@ -172,7 +172,7 @@
32 udev_event_unref(event);
33 }
34
35-static void asmlinkage event_sig_handler(int signum)
36+static void event_sig_handler(int signum)
37 {
38 if (signum == SIGALRM)
39 exit(1);
40@@ -583,7 +583,7 @@
41 return 0;
42 }
43
44-static void asmlinkage sig_handler(int signum)
45+static void sig_handler(int signum)
46 {
47 switch (signum) {
48 case SIGINT:
diff --git a/meta/recipes-core/udev/udev-141/permissions.rules b/meta/recipes-core/udev/udev-141/permissions.rules
new file mode 100644
index 0000000000..205b733292
--- /dev/null
+++ b/meta/recipes-core/udev/udev-141/permissions.rules
@@ -0,0 +1,131 @@
1ACTION!="add", GOTO="permissions_end"
2
3# workarounds needed to synchronize with sysfs
4# only needed for kernels < v2.6.18-rc1
5ENV{PHYSDEVPATH}!="?*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
6SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", WAIT_FOR_SYSFS="ioerr_cnt"
7# only needed for kernels < 2.6.16
8SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
9# only needed for kernels < 2.6.17
10SUBSYSTEM=="net", ENV{DRIVER}=="?*", WAIT_FOR_SYSFS="device/driver"
11
12# devices needed to load the drivers providing them
13KERNEL=="tun", OPTIONS+="ignore_remove"
14KERNEL=="ppp", OPTIONS+="ignore_remove"
15KERNEL=="loop[0-9]*", OPTIONS+="ignore_remove"
16
17# default permissions for block devices
18SUBSYSTEM=="block", GROUP="disk"
19# the aacraid driver is broken and reports that disks removable (see #404927)
20SUBSYSTEM=="block", ATTRS{removable}=="1", \
21 DRIVERS!="aacraid", GROUP="floppy"
22# all block devices on these buses are "removable"
23SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394|mmc|pcmcia", GROUP="floppy"
24
25# IDE devices
26KERNEL=="hd[a-z]|pcd[0-9]*", DRIVERS=="ide-cdrom|pcd", \
27 IMPORT{program}="cdrom_id --export $tempnode"
28ENV{ID_CDROM}=="?*", GROUP="cdrom"
29KERNEL=="ht[0-9]*", GROUP="tape"
30KERNEL=="nht[0-9]*", GROUP="tape"
31
32# SCSI devices
33KERNEL=="sr[0-9]*", IMPORT{program}="cdrom_id --export $tempnode"
34SUBSYSTEMS=="scsi", ATTRS{type}=="1", GROUP="tape"
35SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="HP", GROUP="scanner"
36SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="Epson", GROUP="scanner"
37SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="EPSON", GROUP="scanner"
38SUBSYSTEMS=="scsi", ATTRS{type}=="4", GROUP="cdrom"
39SUBSYSTEMS=="scsi", ATTRS{type}=="5", GROUP="cdrom"
40SUBSYSTEMS=="scsi", ATTRS{type}=="6", GROUP="scanner"
41SUBSYSTEMS=="scsi", ATTRS{type}=="8", GROUP="tape"
42
43# USB devices
44KERNEL=="legousbtower*", MODE="0666"
45KERNEL=="lp[0-9]*", SUBSYSTEMS=="usb", GROUP="lp"
46
47# usbfs-like devices
48SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
49 MODE="0664"
50
51# iRiver music players
52SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="plugdev", \
53 ATTRS{idVendor}=="4102", ATTRS{idProduct}=="10[01][135789]"
54
55# serial devices
56SUBSYSTEM=="tty", GROUP="dialout"
57SUBSYSTEM=="capi", GROUP="dialout"
58SUBSYSTEM=="slamr", GROUP="dialout"
59SUBSYSTEM=="zaptel", GROUP="dialout"
60
61# vc devices (all members of the tty subsystem)
62KERNEL=="ptmx", MODE="0666", GROUP="root"
63KERNEL=="console", MODE="0600", GROUP="root"
64KERNEL=="tty", MODE="0666", GROUP="root"
65KERNEL=="tty[0-9]*", GROUP="root"
66KERNEL=="pty*", MODE="0666", GROUP="tty"
67
68# video devices
69SUBSYSTEM=="video4linux", GROUP="video"
70SUBSYSTEM=="drm", GROUP="video"
71SUBSYSTEM=="dvb", GROUP="video"
72SUBSYSTEM=="em8300", GROUP="video"
73SUBSYSTEM=="graphics", GROUP="video"
74SUBSYSTEM=="nvidia", GROUP="video"
75
76# misc devices
77KERNEL=="random", MODE="0666"
78KERNEL=="urandom", MODE="0666"
79KERNEL=="mem", MODE="0640", GROUP="kmem"
80KERNEL=="kmem", MODE="0640", GROUP="kmem"
81KERNEL=="port", MODE="0640", GROUP="kmem"
82KERNEL=="full", MODE="0666"
83KERNEL=="null", MODE="0666"
84KERNEL=="zero", MODE="0666"
85KERNEL=="inotify", MODE="0666"
86KERNEL=="sgi_fetchop", MODE="0666"
87KERNEL=="sonypi", MODE="0666"
88KERNEL=="agpgart", GROUP="video"
89KERNEL=="nvram", GROUP="nvram"
90KERNEL=="rtc|rtc[0-9]*", GROUP="audio"
91KERNEL=="tpm*", MODE="0600", OWNER="tss", GROUP="tss"
92KERNEL=="fuse", GROUP="fuse"
93KERNEL=="kqemu", MODE="0666"
94KERNEL=="kvm", GROUP="kvm"
95KERNEL=="tun", MODE="0666",
96
97KERNEL=="cdemu[0-9]*", GROUP="cdrom"
98KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
99KERNEL=="pktcdvd", MODE="0644"
100
101KERNEL=="uverbs*", GROUP="rdma"
102KERNEL=="ucm*", GROUP="rdma"
103KERNEL=="rdma_ucm", GROUP="rdma"
104
105# printers and parallel devices
106SUBSYSTEM=="printer", GROUP="lp"
107SUBSYSTEM=="ppdev", GROUP="lp"
108KERNEL=="irlpt*", GROUP="lp"
109KERNEL=="pt[0-9]*", GROUP="tape"
110KERNEL=="pht[0-9]*", GROUP="tape"
111
112# sound devices
113SUBSYSTEM=="sound", GROUP="audio"
114
115# ieee1394 devices
116KERNEL=="raw1394", GROUP="disk"
117KERNEL=="dv1394*", GROUP="video"
118KERNEL=="video1394*", GROUP="video"
119
120# input devices
121KERNEL=="event[0-9]*", ATTRS{name}=="*dvb*|*DVB*|* IR *" \
122 MODE="0664", GROUP="video"
123KERNEL=="js[0-9]*", MODE="0664"
124KERNEL=="lirc[0-9]*", GROUP="video"
125
126# AOE character devices
127SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
128SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
129
130LABEL="permissions_end"
131
diff --git a/meta/recipes-core/udev/udev-141/run.rules b/meta/recipes-core/udev/udev-141/run.rules
new file mode 100644
index 0000000000..75d71375bb
--- /dev/null
+++ b/meta/recipes-core/udev/udev-141/run.rules
@@ -0,0 +1,14 @@
1# debugging monitor
2RUN+="socket:/org/kernel/udev/monitor"
3
4# run a command on remove events
5ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
6
7# ignore the events generated by virtual consoles
8KERNEL=="ptmx", OPTIONS+="last_rule"
9KERNEL=="console", OPTIONS+="last_rule"
10KERNEL=="tty" , OPTIONS+="last_rule"
11KERNEL=="tty[0-9]*", OPTIONS+="last_rule"
12KERNEL=="pty*", OPTIONS+="last_rule"
13SUBSYSTEM=="vc", OPTIONS+="last_rule"
14
diff --git a/meta/recipes-core/udev/udev-141/udev.rules b/meta/recipes-core/udev/udev-141/udev.rules
new file mode 100644
index 0000000000..a19d4a0bf6
--- /dev/null
+++ b/meta/recipes-core/udev/udev-141/udev.rules
@@ -0,0 +1,116 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# workaround for devices which do not report media changes
17SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", \
18 ENV{ID_MODEL}=="IOMEGA_ZIP*", NAME="%k", OPTIONS+="all_partitions"
19SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTRS{media}=="floppy", \
20 OPTIONS+="all_partitions"
21
22# SCSI devices
23SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
24
25# USB devices
26SUBSYSTEMS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
27SUBSYSTEMS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
28SUBSYSTEMS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
29SUBSYSTEMS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
30SUBSYSTEMS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
31SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
32SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", \
33 ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \
34 SYMLINK+="pilot"
35
36# usbfs-like devices
37SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", \
38 NAME="%c"
39SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"
40
41# serial devices
42KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
43KERNEL=="capi[0-9]*", NAME="capi/%n"
44
45# video devices
46KERNEL=="dvb*", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}", ACTION=="add", \
47 NAME="%c"
48KERNEL=="card[0-9]*", NAME="dri/%k"
49
50# misc devices
51KERNEL=="hw_random", NAME="hwrng"
52KERNEL=="tun", NAME="net/%k"
53KERNEL=="evtchn", NAME="xen/%k"
54
55KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
56KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
57KERNEL=="pktcdvd", NAME="pktcdvd/control"
58
59KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
60KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
61KERNEL=="microcode", NAME="cpu/microcode"
62
63KERNEL=="umad*", NAME="infiniband/%k"
64KERNEL=="issm*", NAME="infiniband/%k"
65KERNEL=="uverbs*", NAME="infiniband/%k"
66KERNEL=="ucm*", NAME="infiniband/%k"
67KERNEL=="rdma_ucm", NAME="infiniband/%k"
68
69# ALSA devices
70KERNEL=="controlC[0-9]*", NAME="snd/%k"
71KERNEL=="hwC[D0-9]*", NAME="snd/%k"
72KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
73KERNEL=="midiC[D0-9]*", NAME="snd/%k"
74KERNEL=="timer", NAME="snd/%k"
75KERNEL=="seq", NAME="snd/%k"
76
77# ieee1394 devices
78KERNEL=="dv1394*", NAME="dv1394/%n"
79KERNEL=="video1394*", NAME="video1394/%n"
80
81# input devices
82KERNEL=="mice", NAME="input/%k"
83KERNEL=="mouse[0-9]*", NAME="input/%k"
84KERNEL=="event[0-9]*", NAME="input/%k"
85KERNEL=="js[0-9]*", NAME="input/%k"
86KERNEL=="ts[0-9]*", NAME="input/%k"
87KERNEL=="uinput", NAME="input/%k"
88
89# Zaptel
90KERNEL=="zapctl", NAME="zap/ctl"
91KERNEL=="zaptimer", NAME="zap/timer"
92KERNEL=="zapchannel", NAME="zap/channel"
93KERNEL=="zappseudo", NAME="zap/pseudo"
94KERNEL=="zap[0-9]*", NAME="zap/%n"
95
96# AOE character devices
97SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
98SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
99SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
100SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k"
101
102# device mapper creates its own device nodes, so ignore these
103KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
104KERNEL=="device-mapper", NAME="mapper/control"
105
106KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
107
108# Firmware Helper
109ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware.sh"
110
111# Samsung UARTS
112KERNEL=="s3c2410_serial[0-9]", NAME="ttySAC%n"
113
114# MXC UARTs
115KERNEL=="ttymxc[0-4]", NAME="ttymxc%n"
116
diff --git a/meta/recipes-core/udev/udev-141/unbreak.patch b/meta/recipes-core/udev/udev-141/unbreak.patch
new file mode 100644
index 0000000000..bb5988dca4
--- /dev/null
+++ b/meta/recipes-core/udev/udev-141/unbreak.patch
@@ -0,0 +1,24 @@
1Index: udev-141/extras/volume_id/lib/Makefile.am
2===================================================================
3--- udev-141.orig/extras/volume_id/lib/Makefile.am 2009-05-17 23:36:16.000000000 +0100
4+++ udev-141/extras/volume_id/lib/Makefile.am 2009-05-17 23:36:26.000000000 +0100
5@@ -54,19 +54,6 @@
6 -version-info $(VOLID_LT_CURRENT):$(VOLID_LT_REVISION):$(VOLID_LT_AGE) \
7 -export-symbols $(top_srcdir)/extras/volume_id/lib/exported_symbols
8
9-# move devel files to $(prefix)$(libdir_name) if needed
10-install-data-hook:
11- rm $(DESTDIR)$(rootlibdir)/libvolume_id.la
12- if test "$(prefix)" != "$(exec_prefix)"; then \
13- mkdir -p $(DESTDIR)$(prefix)/$(libdir_name); \
14- mv $(DESTDIR)$(rootlibdir)/libvolume_id.a $(DESTDIR)$(prefix)/$(libdir_name)/; \
15- so_img_name=$$(readlink $(DESTDIR)$(rootlibdir)/libvolume_id.so); \
16- rm $(DESTDIR)$(rootlibdir)/libvolume_id.so; \
17- so_img_rel_target_prefix=$$(echo $(prefix)/$(libdir_name) | sed 's,\(^/\|\)[^/][^/]*,..,g'); \
18- ln -sf $$so_img_rel_target_prefix$(exec_prefix)/$(libdir_name)/$$so_img_name \
19- $(DESTDIR)$(prefix)/$(libdir_name)/libvolume_id.so; \
20- fi
21-
22 EXTRA_DIST = \
23 exported_symbols
24
diff --git a/meta/recipes-core/udev/udev-145/enable-gudev.patch b/meta/recipes-core/udev/udev-145/enable-gudev.patch
new file mode 100644
index 0000000000..45fd37311c
--- /dev/null
+++ b/meta/recipes-core/udev/udev-145/enable-gudev.patch
@@ -0,0 +1,48 @@
1Index: udev-145/configure.ac
2===================================================================
3--- udev-145.orig/configure.ac 2010-01-29 14:41:29.000000000 +0000
4+++ udev-145/configure.ac 2010-01-29 14:41:54.000000000 +0000
5@@ -49,16 +49,17 @@
6 AC_ARG_ENABLE([extras],
7 AS_HELP_STRING([--disable-extras], [disable extras with external dependencies]),
8 [], [enable_extras=yes])
9+
10+ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.7.0 gobject-2.0 >= 2.7.0])
11+ AC_SUBST([GLIB_CFLAGS])
12+ AC_SUBST([GLIB_LIBS])
13+
14 if test "x$enable_extras" = xyes; then
15 AC_PATH_PROG([GPERF], [gperf])
16 if test -z "$GPERF"; then
17 AC_MSG_ERROR([gperf is needed])
18 fi
19
20- PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.7.0 gobject-2.0 >= 2.7.0])
21- AC_SUBST([GLIB_CFLAGS])
22- AC_SUBST([GLIB_LIBS])
23-
24 AC_CHECK_LIB([acl], [acl_init], [:], AC_MSG_ERROR([libacl not found]))
25 AC_CHECK_HEADER([acl/libacl.h], [:], AC_MSG_ERROR([libacl header not found]))
26
27Index: udev-145/extras/Makefile.am
28===================================================================
29--- udev-145.orig/extras/Makefile.am 2010-01-29 14:43:56.000000000 +0000
30+++ udev-145/extras/Makefile.am 2010-01-29 14:44:11.000000000 +0000
31@@ -12,7 +12,8 @@
32 rule_generator \
33 scsi_id \
34 usb_id \
35- v4l_id
36+ v4l_id \
37+ gudev
38
39 if ENABLE_EXTRAS
40 SUBDIRS += \
41@@ -20,6 +21,5 @@
42 usb-db \
43 hid2hci \
44 keymap \
45- modem-modeswitch \
46- gudev
47+ modem-modeswitch
48 endif
diff --git a/meta/recipes-core/udev/udev-145/init b/meta/recipes-core/udev/udev-145/init
new file mode 100644
index 0000000000..eb5e50758b
--- /dev/null
+++ b/meta/recipes-core/udev/udev-145/init
@@ -0,0 +1,59 @@
1#!/bin/sh -e
2
3### BEGIN INIT INFO
4# Provides: udev
5# Required-Start: mountvirtfs
6# Required-Stop:
7# Default-Start: S
8# Default-Stop:
9# Short-Description: Start udevd, populate /dev and load drivers.
10### END INIT INFO
11
12export TZ=/etc/localtime
13
14[ -d /sys/class ] || exit 1
15[ -r /proc/mounts ] || exit 1
16[ -x /sbin/udevd ] || exit 1
17[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
18
19kill_udevd() {
20 if [ -x /sbin/pidof ]; then
21 pid=`/sbin/pidof -x udevd`
22 [ -n "$pid" ] && kill $pid
23 fi
24}
25
26export ACTION=add
27# propagate /dev from /sys
28echo -n "Starting udev"
29
30# mount the tmpfs on /dev, if not already done
31LANG=C awk "\$2 == \"/dev\" && \$4 == \"tmpfs\" { exit 1 }" /proc/mounts && {
32 mount -n -o mode=0755 -t tmpfs none "/dev"
33 mkdir -m 0755 /dev/pts
34 mkdir -m 1777 /dev/shm
35}
36
37if [ -e /etc/dev.tar ]; then
38 (cd /; tar xf /etc/dev.tar)
39 not_first_boot=1
40fi
41
42# make_extra_nodes
43kill_udevd > "/dev/null" 2>&1
44
45 # trigger the sorted events
46 echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
47 /sbin/udevd -d
48
49 /sbin/udevadm control --env=STARTUP=1
50 if [ "$not_first_boot" != "" ];then
51 /sbin/udevadm trigger --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
52 (/sbin/udevadm settle --timeout=3; /sbin/udevadm control --env=STARTUP=)&
53 else
54 /sbin/udevadm trigger
55 /sbin/udevadm settle
56 fi
57
58echo
59exit 0
diff --git a/meta/recipes-core/udev/udev-145/local.rules b/meta/recipes-core/udev/udev-145/local.rules
new file mode 100644
index 0000000000..dab319b431
--- /dev/null
+++ b/meta/recipes-core/udev/udev-145/local.rules
@@ -0,0 +1,33 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# Media automounting
17SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
18SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
19
20# Handle network interface setup
21SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
22SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
23
24# The first rtc device is symlinked to /dev/rtc
25KERNEL=="rtc0", SYMLINK+="rtc"
26
27# Try and modprobe for drivers for new hardware
28ACTION=="add", DEVPATH=="/devices/*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
29
30# Create a symlink to any touchscreen input device
31# Need to use ../ so the eventX can find the parent inputX modalias which is a directory above
32SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{../modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
33
diff --git a/meta/recipes-core/udev/udev-145/noasmlinkage.patch b/meta/recipes-core/udev/udev-145/noasmlinkage.patch
new file mode 100644
index 0000000000..6f9fe948f2
--- /dev/null
+++ b/meta/recipes-core/udev/udev-145/noasmlinkage.patch
@@ -0,0 +1,48 @@
1Index: udev-141/udev/test-udev.c
2===================================================================
3--- udev-141.orig/udev/test-udev.c 2008-10-24 09:07:24.000000000 +0100
4+++ udev-141/udev/test-udev.c 2009-04-14 15:34:01.000000000 +0100
5@@ -30,7 +30,7 @@
6
7 #include "udev.h"
8
9-static void asmlinkage sig_handler(int signum)
10+static void sig_handler(int signum)
11 {
12 switch (signum) {
13 case SIGALRM:
14Index: udev-141/udev/udevadm-monitor.c
15===================================================================
16--- udev-141.orig/udev/udevadm-monitor.c 2009-03-29 19:07:01.000000000 +0100
17+++ udev-141/udev/udevadm-monitor.c 2009-04-14 15:34:01.000000000 +0100
18@@ -35,7 +35,7 @@
19
20 static int udev_exit;
21
22-static void asmlinkage sig_handler(int signum)
23+static void sig_handler(int signum)
24 {
25 if (signum == SIGINT || signum == SIGTERM)
26 udev_exit = 1;
27Index: udev-141/udev/udevd.c
28===================================================================
29--- udev-141.orig/udev/udevd.c 2009-03-29 19:07:01.000000000 +0100
30+++ udev-141/udev/udevd.c 2009-04-14 15:34:56.000000000 +0100
31@@ -172,7 +172,7 @@
32 udev_event_unref(event);
33 }
34
35-static void asmlinkage event_sig_handler(int signum)
36+static void event_sig_handler(int signum)
37 {
38 if (signum == SIGALRM)
39 exit(1);
40@@ -583,7 +583,7 @@
41 return 0;
42 }
43
44-static void asmlinkage sig_handler(int signum)
45+static void sig_handler(int signum)
46 {
47 switch (signum) {
48 case SIGINT:
diff --git a/meta/recipes-core/udev/udev-145/permissions.rules b/meta/recipes-core/udev/udev-145/permissions.rules
new file mode 100644
index 0000000000..205b733292
--- /dev/null
+++ b/meta/recipes-core/udev/udev-145/permissions.rules
@@ -0,0 +1,131 @@
1ACTION!="add", GOTO="permissions_end"
2
3# workarounds needed to synchronize with sysfs
4# only needed for kernels < v2.6.18-rc1
5ENV{PHYSDEVPATH}!="?*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
6SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", WAIT_FOR_SYSFS="ioerr_cnt"
7# only needed for kernels < 2.6.16
8SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
9# only needed for kernels < 2.6.17
10SUBSYSTEM=="net", ENV{DRIVER}=="?*", WAIT_FOR_SYSFS="device/driver"
11
12# devices needed to load the drivers providing them
13KERNEL=="tun", OPTIONS+="ignore_remove"
14KERNEL=="ppp", OPTIONS+="ignore_remove"
15KERNEL=="loop[0-9]*", OPTIONS+="ignore_remove"
16
17# default permissions for block devices
18SUBSYSTEM=="block", GROUP="disk"
19# the aacraid driver is broken and reports that disks removable (see #404927)
20SUBSYSTEM=="block", ATTRS{removable}=="1", \
21 DRIVERS!="aacraid", GROUP="floppy"
22# all block devices on these buses are "removable"
23SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394|mmc|pcmcia", GROUP="floppy"
24
25# IDE devices
26KERNEL=="hd[a-z]|pcd[0-9]*", DRIVERS=="ide-cdrom|pcd", \
27 IMPORT{program}="cdrom_id --export $tempnode"
28ENV{ID_CDROM}=="?*", GROUP="cdrom"
29KERNEL=="ht[0-9]*", GROUP="tape"
30KERNEL=="nht[0-9]*", GROUP="tape"
31
32# SCSI devices
33KERNEL=="sr[0-9]*", IMPORT{program}="cdrom_id --export $tempnode"
34SUBSYSTEMS=="scsi", ATTRS{type}=="1", GROUP="tape"
35SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="HP", GROUP="scanner"
36SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="Epson", GROUP="scanner"
37SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="EPSON", GROUP="scanner"
38SUBSYSTEMS=="scsi", ATTRS{type}=="4", GROUP="cdrom"
39SUBSYSTEMS=="scsi", ATTRS{type}=="5", GROUP="cdrom"
40SUBSYSTEMS=="scsi", ATTRS{type}=="6", GROUP="scanner"
41SUBSYSTEMS=="scsi", ATTRS{type}=="8", GROUP="tape"
42
43# USB devices
44KERNEL=="legousbtower*", MODE="0666"
45KERNEL=="lp[0-9]*", SUBSYSTEMS=="usb", GROUP="lp"
46
47# usbfs-like devices
48SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
49 MODE="0664"
50
51# iRiver music players
52SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="plugdev", \
53 ATTRS{idVendor}=="4102", ATTRS{idProduct}=="10[01][135789]"
54
55# serial devices
56SUBSYSTEM=="tty", GROUP="dialout"
57SUBSYSTEM=="capi", GROUP="dialout"
58SUBSYSTEM=="slamr", GROUP="dialout"
59SUBSYSTEM=="zaptel", GROUP="dialout"
60
61# vc devices (all members of the tty subsystem)
62KERNEL=="ptmx", MODE="0666", GROUP="root"
63KERNEL=="console", MODE="0600", GROUP="root"
64KERNEL=="tty", MODE="0666", GROUP="root"
65KERNEL=="tty[0-9]*", GROUP="root"
66KERNEL=="pty*", MODE="0666", GROUP="tty"
67
68# video devices
69SUBSYSTEM=="video4linux", GROUP="video"
70SUBSYSTEM=="drm", GROUP="video"
71SUBSYSTEM=="dvb", GROUP="video"
72SUBSYSTEM=="em8300", GROUP="video"
73SUBSYSTEM=="graphics", GROUP="video"
74SUBSYSTEM=="nvidia", GROUP="video"
75
76# misc devices
77KERNEL=="random", MODE="0666"
78KERNEL=="urandom", MODE="0666"
79KERNEL=="mem", MODE="0640", GROUP="kmem"
80KERNEL=="kmem", MODE="0640", GROUP="kmem"
81KERNEL=="port", MODE="0640", GROUP="kmem"
82KERNEL=="full", MODE="0666"
83KERNEL=="null", MODE="0666"
84KERNEL=="zero", MODE="0666"
85KERNEL=="inotify", MODE="0666"
86KERNEL=="sgi_fetchop", MODE="0666"
87KERNEL=="sonypi", MODE="0666"
88KERNEL=="agpgart", GROUP="video"
89KERNEL=="nvram", GROUP="nvram"
90KERNEL=="rtc|rtc[0-9]*", GROUP="audio"
91KERNEL=="tpm*", MODE="0600", OWNER="tss", GROUP="tss"
92KERNEL=="fuse", GROUP="fuse"
93KERNEL=="kqemu", MODE="0666"
94KERNEL=="kvm", GROUP="kvm"
95KERNEL=="tun", MODE="0666",
96
97KERNEL=="cdemu[0-9]*", GROUP="cdrom"
98KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
99KERNEL=="pktcdvd", MODE="0644"
100
101KERNEL=="uverbs*", GROUP="rdma"
102KERNEL=="ucm*", GROUP="rdma"
103KERNEL=="rdma_ucm", GROUP="rdma"
104
105# printers and parallel devices
106SUBSYSTEM=="printer", GROUP="lp"
107SUBSYSTEM=="ppdev", GROUP="lp"
108KERNEL=="irlpt*", GROUP="lp"
109KERNEL=="pt[0-9]*", GROUP="tape"
110KERNEL=="pht[0-9]*", GROUP="tape"
111
112# sound devices
113SUBSYSTEM=="sound", GROUP="audio"
114
115# ieee1394 devices
116KERNEL=="raw1394", GROUP="disk"
117KERNEL=="dv1394*", GROUP="video"
118KERNEL=="video1394*", GROUP="video"
119
120# input devices
121KERNEL=="event[0-9]*", ATTRS{name}=="*dvb*|*DVB*|* IR *" \
122 MODE="0664", GROUP="video"
123KERNEL=="js[0-9]*", MODE="0664"
124KERNEL=="lirc[0-9]*", GROUP="video"
125
126# AOE character devices
127SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
128SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
129
130LABEL="permissions_end"
131
diff --git a/meta/recipes-core/udev/udev-145/run.rules b/meta/recipes-core/udev/udev-145/run.rules
new file mode 100644
index 0000000000..75d71375bb
--- /dev/null
+++ b/meta/recipes-core/udev/udev-145/run.rules
@@ -0,0 +1,14 @@
1# debugging monitor
2RUN+="socket:/org/kernel/udev/monitor"
3
4# run a command on remove events
5ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
6
7# ignore the events generated by virtual consoles
8KERNEL=="ptmx", OPTIONS+="last_rule"
9KERNEL=="console", OPTIONS+="last_rule"
10KERNEL=="tty" , OPTIONS+="last_rule"
11KERNEL=="tty[0-9]*", OPTIONS+="last_rule"
12KERNEL=="pty*", OPTIONS+="last_rule"
13SUBSYSTEM=="vc", OPTIONS+="last_rule"
14
diff --git a/meta/recipes-core/udev/udev-145/udev.rules b/meta/recipes-core/udev/udev-145/udev.rules
new file mode 100644
index 0000000000..a19d4a0bf6
--- /dev/null
+++ b/meta/recipes-core/udev/udev-145/udev.rules
@@ -0,0 +1,116 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# workaround for devices which do not report media changes
17SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", \
18 ENV{ID_MODEL}=="IOMEGA_ZIP*", NAME="%k", OPTIONS+="all_partitions"
19SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTRS{media}=="floppy", \
20 OPTIONS+="all_partitions"
21
22# SCSI devices
23SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
24
25# USB devices
26SUBSYSTEMS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
27SUBSYSTEMS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
28SUBSYSTEMS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
29SUBSYSTEMS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
30SUBSYSTEMS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
31SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
32SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", \
33 ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \
34 SYMLINK+="pilot"
35
36# usbfs-like devices
37SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", \
38 NAME="%c"
39SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"
40
41# serial devices
42KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
43KERNEL=="capi[0-9]*", NAME="capi/%n"
44
45# video devices
46KERNEL=="dvb*", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}", ACTION=="add", \
47 NAME="%c"
48KERNEL=="card[0-9]*", NAME="dri/%k"
49
50# misc devices
51KERNEL=="hw_random", NAME="hwrng"
52KERNEL=="tun", NAME="net/%k"
53KERNEL=="evtchn", NAME="xen/%k"
54
55KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
56KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
57KERNEL=="pktcdvd", NAME="pktcdvd/control"
58
59KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
60KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
61KERNEL=="microcode", NAME="cpu/microcode"
62
63KERNEL=="umad*", NAME="infiniband/%k"
64KERNEL=="issm*", NAME="infiniband/%k"
65KERNEL=="uverbs*", NAME="infiniband/%k"
66KERNEL=="ucm*", NAME="infiniband/%k"
67KERNEL=="rdma_ucm", NAME="infiniband/%k"
68
69# ALSA devices
70KERNEL=="controlC[0-9]*", NAME="snd/%k"
71KERNEL=="hwC[D0-9]*", NAME="snd/%k"
72KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
73KERNEL=="midiC[D0-9]*", NAME="snd/%k"
74KERNEL=="timer", NAME="snd/%k"
75KERNEL=="seq", NAME="snd/%k"
76
77# ieee1394 devices
78KERNEL=="dv1394*", NAME="dv1394/%n"
79KERNEL=="video1394*", NAME="video1394/%n"
80
81# input devices
82KERNEL=="mice", NAME="input/%k"
83KERNEL=="mouse[0-9]*", NAME="input/%k"
84KERNEL=="event[0-9]*", NAME="input/%k"
85KERNEL=="js[0-9]*", NAME="input/%k"
86KERNEL=="ts[0-9]*", NAME="input/%k"
87KERNEL=="uinput", NAME="input/%k"
88
89# Zaptel
90KERNEL=="zapctl", NAME="zap/ctl"
91KERNEL=="zaptimer", NAME="zap/timer"
92KERNEL=="zapchannel", NAME="zap/channel"
93KERNEL=="zappseudo", NAME="zap/pseudo"
94KERNEL=="zap[0-9]*", NAME="zap/%n"
95
96# AOE character devices
97SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
98SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
99SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
100SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k"
101
102# device mapper creates its own device nodes, so ignore these
103KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
104KERNEL=="device-mapper", NAME="mapper/control"
105
106KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
107
108# Firmware Helper
109ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware.sh"
110
111# Samsung UARTS
112KERNEL=="s3c2410_serial[0-9]", NAME="ttySAC%n"
113
114# MXC UARTs
115KERNEL=="ttymxc[0-4]", NAME="ttymxc%n"
116
diff --git a/meta/recipes-core/udev/udev-145/unbreak.patch b/meta/recipes-core/udev/udev-145/unbreak.patch
new file mode 100644
index 0000000000..bb5988dca4
--- /dev/null
+++ b/meta/recipes-core/udev/udev-145/unbreak.patch
@@ -0,0 +1,24 @@
1Index: udev-141/extras/volume_id/lib/Makefile.am
2===================================================================
3--- udev-141.orig/extras/volume_id/lib/Makefile.am 2009-05-17 23:36:16.000000000 +0100
4+++ udev-141/extras/volume_id/lib/Makefile.am 2009-05-17 23:36:26.000000000 +0100
5@@ -54,19 +54,6 @@
6 -version-info $(VOLID_LT_CURRENT):$(VOLID_LT_REVISION):$(VOLID_LT_AGE) \
7 -export-symbols $(top_srcdir)/extras/volume_id/lib/exported_symbols
8
9-# move devel files to $(prefix)$(libdir_name) if needed
10-install-data-hook:
11- rm $(DESTDIR)$(rootlibdir)/libvolume_id.la
12- if test "$(prefix)" != "$(exec_prefix)"; then \
13- mkdir -p $(DESTDIR)$(prefix)/$(libdir_name); \
14- mv $(DESTDIR)$(rootlibdir)/libvolume_id.a $(DESTDIR)$(prefix)/$(libdir_name)/; \
15- so_img_name=$$(readlink $(DESTDIR)$(rootlibdir)/libvolume_id.so); \
16- rm $(DESTDIR)$(rootlibdir)/libvolume_id.so; \
17- so_img_rel_target_prefix=$$(echo $(prefix)/$(libdir_name) | sed 's,\(^/\|\)[^/][^/]*,..,g'); \
18- ln -sf $$so_img_rel_target_prefix$(exec_prefix)/$(libdir_name)/$$so_img_name \
19- $(DESTDIR)$(prefix)/$(libdir_name)/libvolume_id.so; \
20- fi
21-
22 EXTRA_DIST = \
23 exported_symbols
24
diff --git a/meta/recipes-core/udev/udev-158/init b/meta/recipes-core/udev/udev-158/init
new file mode 100644
index 0000000000..eb5e50758b
--- /dev/null
+++ b/meta/recipes-core/udev/udev-158/init
@@ -0,0 +1,59 @@
1#!/bin/sh -e
2
3### BEGIN INIT INFO
4# Provides: udev
5# Required-Start: mountvirtfs
6# Required-Stop:
7# Default-Start: S
8# Default-Stop:
9# Short-Description: Start udevd, populate /dev and load drivers.
10### END INIT INFO
11
12export TZ=/etc/localtime
13
14[ -d /sys/class ] || exit 1
15[ -r /proc/mounts ] || exit 1
16[ -x /sbin/udevd ] || exit 1
17[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
18
19kill_udevd() {
20 if [ -x /sbin/pidof ]; then
21 pid=`/sbin/pidof -x udevd`
22 [ -n "$pid" ] && kill $pid
23 fi
24}
25
26export ACTION=add
27# propagate /dev from /sys
28echo -n "Starting udev"
29
30# mount the tmpfs on /dev, if not already done
31LANG=C awk "\$2 == \"/dev\" && \$4 == \"tmpfs\" { exit 1 }" /proc/mounts && {
32 mount -n -o mode=0755 -t tmpfs none "/dev"
33 mkdir -m 0755 /dev/pts
34 mkdir -m 1777 /dev/shm
35}
36
37if [ -e /etc/dev.tar ]; then
38 (cd /; tar xf /etc/dev.tar)
39 not_first_boot=1
40fi
41
42# make_extra_nodes
43kill_udevd > "/dev/null" 2>&1
44
45 # trigger the sorted events
46 echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
47 /sbin/udevd -d
48
49 /sbin/udevadm control --env=STARTUP=1
50 if [ "$not_first_boot" != "" ];then
51 /sbin/udevadm trigger --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
52 (/sbin/udevadm settle --timeout=3; /sbin/udevadm control --env=STARTUP=)&
53 else
54 /sbin/udevadm trigger
55 /sbin/udevadm settle
56 fi
57
58echo
59exit 0
diff --git a/meta/recipes-core/udev/udev-158/local.rules b/meta/recipes-core/udev/udev-158/local.rules
new file mode 100644
index 0000000000..dab319b431
--- /dev/null
+++ b/meta/recipes-core/udev/udev-158/local.rules
@@ -0,0 +1,33 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# Media automounting
17SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
18SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
19
20# Handle network interface setup
21SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
22SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
23
24# The first rtc device is symlinked to /dev/rtc
25KERNEL=="rtc0", SYMLINK+="rtc"
26
27# Try and modprobe for drivers for new hardware
28ACTION=="add", DEVPATH=="/devices/*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
29
30# Create a symlink to any touchscreen input device
31# Need to use ../ so the eventX can find the parent inputX modalias which is a directory above
32SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{../modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
33
diff --git a/meta/recipes-core/udev/udev-158/permissions.rules b/meta/recipes-core/udev/udev-158/permissions.rules
new file mode 100644
index 0000000000..205b733292
--- /dev/null
+++ b/meta/recipes-core/udev/udev-158/permissions.rules
@@ -0,0 +1,131 @@
1ACTION!="add", GOTO="permissions_end"
2
3# workarounds needed to synchronize with sysfs
4# only needed for kernels < v2.6.18-rc1
5ENV{PHYSDEVPATH}!="?*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
6SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", WAIT_FOR_SYSFS="ioerr_cnt"
7# only needed for kernels < 2.6.16
8SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
9# only needed for kernels < 2.6.17
10SUBSYSTEM=="net", ENV{DRIVER}=="?*", WAIT_FOR_SYSFS="device/driver"
11
12# devices needed to load the drivers providing them
13KERNEL=="tun", OPTIONS+="ignore_remove"
14KERNEL=="ppp", OPTIONS+="ignore_remove"
15KERNEL=="loop[0-9]*", OPTIONS+="ignore_remove"
16
17# default permissions for block devices
18SUBSYSTEM=="block", GROUP="disk"
19# the aacraid driver is broken and reports that disks removable (see #404927)
20SUBSYSTEM=="block", ATTRS{removable}=="1", \
21 DRIVERS!="aacraid", GROUP="floppy"
22# all block devices on these buses are "removable"
23SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394|mmc|pcmcia", GROUP="floppy"
24
25# IDE devices
26KERNEL=="hd[a-z]|pcd[0-9]*", DRIVERS=="ide-cdrom|pcd", \
27 IMPORT{program}="cdrom_id --export $tempnode"
28ENV{ID_CDROM}=="?*", GROUP="cdrom"
29KERNEL=="ht[0-9]*", GROUP="tape"
30KERNEL=="nht[0-9]*", GROUP="tape"
31
32# SCSI devices
33KERNEL=="sr[0-9]*", IMPORT{program}="cdrom_id --export $tempnode"
34SUBSYSTEMS=="scsi", ATTRS{type}=="1", GROUP="tape"
35SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="HP", GROUP="scanner"
36SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="Epson", GROUP="scanner"
37SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="EPSON", GROUP="scanner"
38SUBSYSTEMS=="scsi", ATTRS{type}=="4", GROUP="cdrom"
39SUBSYSTEMS=="scsi", ATTRS{type}=="5", GROUP="cdrom"
40SUBSYSTEMS=="scsi", ATTRS{type}=="6", GROUP="scanner"
41SUBSYSTEMS=="scsi", ATTRS{type}=="8", GROUP="tape"
42
43# USB devices
44KERNEL=="legousbtower*", MODE="0666"
45KERNEL=="lp[0-9]*", SUBSYSTEMS=="usb", GROUP="lp"
46
47# usbfs-like devices
48SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
49 MODE="0664"
50
51# iRiver music players
52SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="plugdev", \
53 ATTRS{idVendor}=="4102", ATTRS{idProduct}=="10[01][135789]"
54
55# serial devices
56SUBSYSTEM=="tty", GROUP="dialout"
57SUBSYSTEM=="capi", GROUP="dialout"
58SUBSYSTEM=="slamr", GROUP="dialout"
59SUBSYSTEM=="zaptel", GROUP="dialout"
60
61# vc devices (all members of the tty subsystem)
62KERNEL=="ptmx", MODE="0666", GROUP="root"
63KERNEL=="console", MODE="0600", GROUP="root"
64KERNEL=="tty", MODE="0666", GROUP="root"
65KERNEL=="tty[0-9]*", GROUP="root"
66KERNEL=="pty*", MODE="0666", GROUP="tty"
67
68# video devices
69SUBSYSTEM=="video4linux", GROUP="video"
70SUBSYSTEM=="drm", GROUP="video"
71SUBSYSTEM=="dvb", GROUP="video"
72SUBSYSTEM=="em8300", GROUP="video"
73SUBSYSTEM=="graphics", GROUP="video"
74SUBSYSTEM=="nvidia", GROUP="video"
75
76# misc devices
77KERNEL=="random", MODE="0666"
78KERNEL=="urandom", MODE="0666"
79KERNEL=="mem", MODE="0640", GROUP="kmem"
80KERNEL=="kmem", MODE="0640", GROUP="kmem"
81KERNEL=="port", MODE="0640", GROUP="kmem"
82KERNEL=="full", MODE="0666"
83KERNEL=="null", MODE="0666"
84KERNEL=="zero", MODE="0666"
85KERNEL=="inotify", MODE="0666"
86KERNEL=="sgi_fetchop", MODE="0666"
87KERNEL=="sonypi", MODE="0666"
88KERNEL=="agpgart", GROUP="video"
89KERNEL=="nvram", GROUP="nvram"
90KERNEL=="rtc|rtc[0-9]*", GROUP="audio"
91KERNEL=="tpm*", MODE="0600", OWNER="tss", GROUP="tss"
92KERNEL=="fuse", GROUP="fuse"
93KERNEL=="kqemu", MODE="0666"
94KERNEL=="kvm", GROUP="kvm"
95KERNEL=="tun", MODE="0666",
96
97KERNEL=="cdemu[0-9]*", GROUP="cdrom"
98KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
99KERNEL=="pktcdvd", MODE="0644"
100
101KERNEL=="uverbs*", GROUP="rdma"
102KERNEL=="ucm*", GROUP="rdma"
103KERNEL=="rdma_ucm", GROUP="rdma"
104
105# printers and parallel devices
106SUBSYSTEM=="printer", GROUP="lp"
107SUBSYSTEM=="ppdev", GROUP="lp"
108KERNEL=="irlpt*", GROUP="lp"
109KERNEL=="pt[0-9]*", GROUP="tape"
110KERNEL=="pht[0-9]*", GROUP="tape"
111
112# sound devices
113SUBSYSTEM=="sound", GROUP="audio"
114
115# ieee1394 devices
116KERNEL=="raw1394", GROUP="disk"
117KERNEL=="dv1394*", GROUP="video"
118KERNEL=="video1394*", GROUP="video"
119
120# input devices
121KERNEL=="event[0-9]*", ATTRS{name}=="*dvb*|*DVB*|* IR *" \
122 MODE="0664", GROUP="video"
123KERNEL=="js[0-9]*", MODE="0664"
124KERNEL=="lirc[0-9]*", GROUP="video"
125
126# AOE character devices
127SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
128SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
129
130LABEL="permissions_end"
131
diff --git a/meta/recipes-core/udev/udev-158/run.rules b/meta/recipes-core/udev/udev-158/run.rules
new file mode 100644
index 0000000000..75d71375bb
--- /dev/null
+++ b/meta/recipes-core/udev/udev-158/run.rules
@@ -0,0 +1,14 @@
1# debugging monitor
2RUN+="socket:/org/kernel/udev/monitor"
3
4# run a command on remove events
5ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
6
7# ignore the events generated by virtual consoles
8KERNEL=="ptmx", OPTIONS+="last_rule"
9KERNEL=="console", OPTIONS+="last_rule"
10KERNEL=="tty" , OPTIONS+="last_rule"
11KERNEL=="tty[0-9]*", OPTIONS+="last_rule"
12KERNEL=="pty*", OPTIONS+="last_rule"
13SUBSYSTEM=="vc", OPTIONS+="last_rule"
14
diff --git a/meta/recipes-core/udev/udev-158/udev.rules b/meta/recipes-core/udev/udev-158/udev.rules
new file mode 100644
index 0000000000..a19d4a0bf6
--- /dev/null
+++ b/meta/recipes-core/udev/udev-158/udev.rules
@@ -0,0 +1,116 @@
1# There are a number of modifiers that are allowed to be used in some
2# of the different fields. They provide the following subsitutions:
3#
4# %n the "kernel number" of the device.
5# For example, 'sda3' has a "kernel number" of '3'
6# %e the smallest number for that name which does not matches an existing node
7# %k the kernel name for the device
8# %M the kernel major number for the device
9# %m the kernel minor number for the device
10# %b the bus id for the device
11# %c the string returned by the PROGRAM
12# %s{filename} the content of a sysfs attribute
13# %% the '%' char itself
14#
15
16# workaround for devices which do not report media changes
17SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", \
18 ENV{ID_MODEL}=="IOMEGA_ZIP*", NAME="%k", OPTIONS+="all_partitions"
19SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTRS{media}=="floppy", \
20 OPTIONS+="all_partitions"
21
22# SCSI devices
23SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
24
25# USB devices
26SUBSYSTEMS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
27SUBSYSTEMS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
28SUBSYSTEMS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
29SUBSYSTEMS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
30SUBSYSTEMS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
31SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
32SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", \
33 ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \
34 SYMLINK+="pilot"
35
36# usbfs-like devices
37SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", \
38 NAME="%c"
39SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"
40
41# serial devices
42KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
43KERNEL=="capi[0-9]*", NAME="capi/%n"
44
45# video devices
46KERNEL=="dvb*", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}", ACTION=="add", \
47 NAME="%c"
48KERNEL=="card[0-9]*", NAME="dri/%k"
49
50# misc devices
51KERNEL=="hw_random", NAME="hwrng"
52KERNEL=="tun", NAME="net/%k"
53KERNEL=="evtchn", NAME="xen/%k"
54
55KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
56KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
57KERNEL=="pktcdvd", NAME="pktcdvd/control"
58
59KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
60KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
61KERNEL=="microcode", NAME="cpu/microcode"
62
63KERNEL=="umad*", NAME="infiniband/%k"
64KERNEL=="issm*", NAME="infiniband/%k"
65KERNEL=="uverbs*", NAME="infiniband/%k"
66KERNEL=="ucm*", NAME="infiniband/%k"
67KERNEL=="rdma_ucm", NAME="infiniband/%k"
68
69# ALSA devices
70KERNEL=="controlC[0-9]*", NAME="snd/%k"
71KERNEL=="hwC[D0-9]*", NAME="snd/%k"
72KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
73KERNEL=="midiC[D0-9]*", NAME="snd/%k"
74KERNEL=="timer", NAME="snd/%k"
75KERNEL=="seq", NAME="snd/%k"
76
77# ieee1394 devices
78KERNEL=="dv1394*", NAME="dv1394/%n"
79KERNEL=="video1394*", NAME="video1394/%n"
80
81# input devices
82KERNEL=="mice", NAME="input/%k"
83KERNEL=="mouse[0-9]*", NAME="input/%k"
84KERNEL=="event[0-9]*", NAME="input/%k"
85KERNEL=="js[0-9]*", NAME="input/%k"
86KERNEL=="ts[0-9]*", NAME="input/%k"
87KERNEL=="uinput", NAME="input/%k"
88
89# Zaptel
90KERNEL=="zapctl", NAME="zap/ctl"
91KERNEL=="zaptimer", NAME="zap/timer"
92KERNEL=="zapchannel", NAME="zap/channel"
93KERNEL=="zappseudo", NAME="zap/pseudo"
94KERNEL=="zap[0-9]*", NAME="zap/%n"
95
96# AOE character devices
97SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
98SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
99SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
100SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k"
101
102# device mapper creates its own device nodes, so ignore these
103KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
104KERNEL=="device-mapper", NAME="mapper/control"
105
106KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
107
108# Firmware Helper
109ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware.sh"
110
111# Samsung UARTS
112KERNEL=="s3c2410_serial[0-9]", NAME="ttySAC%n"
113
114# MXC UARTs
115KERNEL=="ttymxc[0-4]", NAME="ttymxc%n"
116
diff --git a/meta/recipes-core/udev/udev-extraconf_0.0.bb b/meta/recipes-core/udev/udev-extraconf_0.0.bb
new file mode 100644
index 0000000000..34c8400ddd
--- /dev/null
+++ b/meta/recipes-core/udev/udev-extraconf_0.0.bb
@@ -0,0 +1,12 @@
1DESCRIPTION = "Extra machine specific configuration files"
2LICENCE = "GPL"
3
4PR = "r0"
5
6SRC_URI = "file://mount.blacklist"
7
8do_install () {
9 install -d ${D}${sysconfdir}/udev/
10
11 install -m 0644 ${WORKDIR}/mount.blacklist ${D}${sysconfdir}/udev/
12}
diff --git a/meta/recipes-core/udev/udev-new.inc b/meta/recipes-core/udev/udev-new.inc
new file mode 100644
index 0000000000..87f9633473
--- /dev/null
+++ b/meta/recipes-core/udev/udev-new.inc
@@ -0,0 +1,92 @@
1DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
2/dev/, handles hotplug events and loads drivers at boot time. It replaces \
3the hotplug package and requires a kernel not older than 2.6.12."
4HOMEPAGE = "http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html"
5LICENSE = "GPLv2+ & LGPLv2.1+"
6LICENSE_${PN} = "GPLv2+"
7LICENSE_libudev = "LGPLv2.1+"
8LICENSE_libgudev = "LGPLv2.1+"
9LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
10 file://libudev/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343 \
11 file://extras/gudev/COPYING;md5=a6f89e2100d9b6cdffcea4f398e37343"
12
13DEPENDS = "acl glib-2.0 libusb usbutils pciutils linux-libc-headers gperf-native libxslt-native"
14RPROVIDES_${PN} = "hotplug"
15RRECOMMENDS_${PN} += "udev-extraconf udev-cache usbutils-ids pciutils-ids"
16RDEPENDS_libudev = "${PN} (= ${EXTENDPV})"
17
18SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
19 file://run.rules \
20 file://udev.rules \
21 file://devfs-udev.rules \
22 file://links.conf \
23 file://permissions.rules \
24 file://mount.sh \
25 file://network.sh \
26 file://local.rules \
27 file://udev-cache \
28 file://init"
29
30SRC_URI_append_h2200 = " file://50-hostap_cs.rules "
31
32inherit autotools pkgconfig update-rc.d
33
34# udevd/udevadm -> /sbin/, libudev.so.* -> /lib/
35sbindir = "${base_sbindir}"
36libexecdir = "${base_libdir}/udev"
37EXTRA_OECONF = "--disable-introspection --with-rootlibdir=${base_libdir} \
38 --with-pci-ids-path=${datadir}/pci.ids"
39
40PACKAGES =+ "udev-cache libudev libudev-dev libudev-dbg"
41PACKAGES =+ "libgudev libgudev-dev libgudev-dbg"
42PACKAGE_ARCH_h2200 = "h2200"
43
44INITSCRIPT_PACKAGES = "udev udev-cache"
45INITSCRIPT_NAME_udev = "udev"
46INITSCRIPT_PARAMS_udev = "start 04 S ."
47INITSCRIPT_NAME_udev-cache = "udev-cache"
48INITSCRIPT_PARAMS_udev-cache = "start 36 S ."
49
50FILES_${PN} += "${libexecdir} ${libdir}/ConsoleKit"
51FILES_${PN}-dbg += "${libexecdir}/.debug"
52FILES_${PN}-dev = "${datadir}/pkgconfig/udev.pc"
53FILES_libudev = "${base_libdir}/libudev.so.*"
54FILES_libudev-dbg = "${base_libdir}/.debug/libudev.so.*"
55FILES_libudev-dev = "${includedir}/libudev.h ${libdir}/libudev.so ${libdir}/libudev.la \
56 ${libdir}/libudev.a ${libdir}/pkgconfig/libudev.pc"
57FILES_libgudev = "${libdir}/libgudev*.so.*"
58FILES_libgudev-dbg = "${libdir}/.debug/libgudev*.so.*"
59FILES_libgudev-dev = "${includedir}/gudev* ${libdir}/libgudev*.so ${libdir}/libgudev*.la \
60 ${libdir}/libgudev*.a ${libdir}/pkgconfig/gudev*.pc"
61FILES_udev-cache = "${sysconfdir}/init.d/udev-cache"
62
63do_install_append () {
64 install -d ${D}${sysconfdir}/init.d
65 install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
66 install -m 0755 ${WORKDIR}/udev-cache ${D}${sysconfdir}/init.d/udev-cache
67
68 install -d ${D}${sysconfdir}/udev/rules.d/
69
70 install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
71 #install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
72 #install -m 0644 ${WORKDIR}/run.rules ${D}${sysconfdir}/udev/rules.d/run.rules
73 #install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
74 install -m 0644 ${WORKDIR}/links.conf ${D}${sysconfdir}/udev/links.conf
75 #if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
76 # install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
77 #fi
78
79 # Remove some default rules that don't work well on embedded devices
80 #rm ${D}${libexecdir}/rules.d/60-persistent-input.rules
81 #rm ${D}${libexecdir}/rules.d/60-persistent-storage.rules
82 #rm ${D}${libexecdir}/rules.d/60-persistent-storage-tape.rules
83
84 install -d ${D}${sysconfdir}/udev/scripts/
85
86 install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
87 install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
88}
89
90do_install_append_h2200() {
91 install -m 0644 ${WORKDIR}/50-hostap_cs.rules ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules
92}
diff --git a/meta/recipes-core/udev/udev.inc b/meta/recipes-core/udev/udev.inc
new file mode 100644
index 0000000000..0afd817b8f
--- /dev/null
+++ b/meta/recipes-core/udev/udev.inc
@@ -0,0 +1,71 @@
1DESCRIPTION ?= "udev is a program which dynamically creates and removes device nodes from \
2/dev/. It responds to /sbin/hotplug device events and requires a 2.6 kernel."
3LICENSE = "GPL"
4
5SRC_URI += " \
6 file://udev.rules \
7 file://devfs-udev.rules \
8 file://links.conf \
9 file://permissions.rules \
10 file://mount.sh \
11 file://network.sh \
12 file://local.rules \
13 file://udev-cache \
14 file://init"
15
16UDEV_DEVFS_RULES ?= "0"
17
18PACKAGES =+ "udev-utils libvolume-id udev-cache"
19FILES_udev-utils = "${usrbindir}/udevinfo ${usrbindir}/udevtest"
20FILES_libvolume-id = "${base_libdir}/libvolume_id.so.*"
21FILES_udev-cache = "${sysconfdir}/init.d/udev-cache"
22
23RRECOMMENDS_${PN} += "udev-extraconf udev-cache"
24
25inherit update-rc.d autotools pkgconfig
26
27INITSCRIPT_PACKAGES = "udev udev-cache"
28INITSCRIPT_NAME_udev = "udev"
29INITSCRIPT_PARAMS_udev = "start 04 S ."
30INITSCRIPT_NAME_udev-cache = "udev-cache"
31INITSCRIPT_PARAMS_udev-cache = "start 36 S ."
32
33export CROSS = "${TARGET_PREFIX}"
34export HOSTCC = "${BUILD_CC}"
35export udevdir ?= "/dev"
36export usrbindir := "${bindir}"
37export usrsbindir := "${sbindir}"
38export etcdir = "${sysconfdir}"
39LD = "${CC}"
40bindir = "/bin"
41sbindir = "/sbin"
42
43UDEV_EXTRAS = "<override me>"
44FILES_${PN} += "${usrbindir}/* ${usrsbindir}/*"
45FILES_${PN}-dbg += "${usrbindir}/.debug ${usrsbindir}/.debug"
46EXTRA_OEMAKE = "-e \
47 'EXTRAS=${UDEV_EXTRAS}' \
48 'STRIP=echo'"
49
50do_install () {
51 install -d ${D}${usrsbindir} \
52 ${D}${sbindir}
53 oe_runmake 'DESTDIR=${D}' INSTALL=install install
54 install -d ${D}${sysconfdir}/init.d
55 install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
56 install -m 0755 ${WORKDIR}/udev-cache ${D}${sysconfdir}/init.d/udev-cache
57
58 install -d ${D}${sysconfdir}/udev/rules.d/
59
60 install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
61 install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
62 install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
63 if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
64 install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
65 fi
66
67 install -d ${D}${sysconfdir}/udev/scripts/
68
69 install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
70 install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
71}
diff --git a/meta/recipes-core/udev/udev_092.bb b/meta/recipes-core/udev/udev_092.bb
new file mode 100644
index 0000000000..0e94d1f6c8
--- /dev/null
+++ b/meta/recipes-core/udev/udev_092.bb
@@ -0,0 +1,58 @@
1DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
2/dev/, handles hotplug events and loads drivers at boot time. It replaces \
3the hotplug package and requires a kernel not older than 2.6.12."
4RPROVIDES_${PN} = "hotplug"
5
6PR = "r17"
7
8SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
9 file://noasmlinkage.patch;patch=1 \
10 file://flags.patch;patch=1 \
11 file://udevsynthesize.patch;patch=1 \
12 file://udevsynthesize.sh \
13 file://arm_inotify_fix.patch;patch=1 \
14 "
15
16SRC_URI_append_h2200 = " file://50-hostap_cs.rules "
17PACKAGE_ARCH_h2200 = "h2200"
18
19require udev.inc
20
21INITSCRIPT_PARAMS = "start 03 S ."
22
23FILES_${PN} += "${base_libdir}/udev/*"
24FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
25UDEV_EXTRAS = "extras/firmware/ extras/scsi_id/ extras/volume_id/ extras/run_directory/"
26EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
27
28do_install () {
29 install -d ${D}${usrsbindir} \
30 ${D}${sbindir}
31 oe_runmake 'DESTDIR=${D}' INSTALL=install install
32 install -d ${D}${sysconfdir}/init.d
33 install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
34 install -m 0755 ${WORKDIR}/udev-cache ${D}${sysconfdir}/init.d/udev-cache
35
36 install -d ${D}${sysconfdir}/udev/rules.d/
37
38 install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
39 install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
40 install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
41 install -m 0644 ${WORKDIR}/links.conf ${D}${sysconfdir}/udev/links.conf
42 if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
43 install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
44 fi
45
46 install -d ${D}${sysconfdir}/udev/scripts/
47
48 install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
49 install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
50
51 install -d ${D}${base_libdir}/udev/
52 install -m 0755 ${S}/udevsynthesize ${D}${base_libdir}/udev/udevsynthesize
53 install -m 0755 ${WORKDIR}/udevsynthesize.sh ${D}${sbindir}/udevsynthesize
54}
55
56do_install_append_h2200() {
57 install -m 0644 ${WORKDIR}/50-hostap_cs.rules ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules
58}
diff --git a/meta/recipes-core/udev/udev_115.bb b/meta/recipes-core/udev/udev_115.bb
new file mode 100644
index 0000000000..9db8661b61
--- /dev/null
+++ b/meta/recipes-core/udev/udev_115.bb
@@ -0,0 +1,55 @@
1DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
2/dev/, handles hotplug events and loads drivers at boot time. It replaces \
3the hotplug package and requires a kernel not older than 2.6.12."
4RPROVIDES_${PN} = "hotplug"
5
6PR = "r5"
7
8SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
9 file://noasmlinkage.patch;patch=1 \
10 file://flags.patch;patch=1 \
11 file://vol_id_ld.patch;patch=1 \
12 file://udevtrigger_add_devname_filtering.patch;patch=1 \
13 "
14
15SRC_URI_append_h2200 = " file://50-hostap_cs.rules "
16PACKAGE_ARCH_h2200 = "h2200"
17
18require udev.inc
19
20INITSCRIPT_PARAMS = "start 03 S ."
21
22FILES_${PN} += "${base_libdir}/udev/*"
23FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
24UDEV_EXTRAS = "extras/firmware/ extras/scsi_id/ extras/volume_id/"
25EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
26
27do_install () {
28 install -d ${D}${usrsbindir} \
29 ${D}${sbindir}
30 oe_runmake 'DESTDIR=${D}' INSTALL=install install
31 install -d ${D}${sysconfdir}/init.d
32 install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
33 install -m 0755 ${WORKDIR}/udev-cache ${D}${sysconfdir}/init.d/udev-cache
34
35 install -d ${D}${sysconfdir}/udev/rules.d/
36
37 install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
38 install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
39 install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
40 install -m 0644 ${WORKDIR}/links.conf ${D}${sysconfdir}/udev/links.conf
41 if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
42 install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
43 fi
44
45 install -d ${D}${sysconfdir}/udev/scripts/
46
47 install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
48 install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
49
50 install -d ${D}${base_libdir}/udev/
51}
52
53do_install_append_h2200() {
54 install -m 0644 ${WORKDIR}/50-hostap_cs.rules ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules
55}
diff --git a/meta/recipes-core/udev/udev_124.bb b/meta/recipes-core/udev/udev_124.bb
new file mode 100644
index 0000000000..ccfbbf7018
--- /dev/null
+++ b/meta/recipes-core/udev/udev_124.bb
@@ -0,0 +1,62 @@
1DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
2/dev/, handles hotplug events and loads drivers at boot time. It replaces \
3the hotplug package and requires a kernel not older than 2.6.12."
4RPROVIDES_${PN} = "hotplug"
5
6PR = "r10"
7
8SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
9 file://noasmlinkage.patch;patch=1 \
10 file://flags.patch;patch=1 \
11 file://vol_id_ld.patch;patch=1 \
12 file://udevtrigger_add_devname_filtering.patch;patch=1 \
13 file://run.rules \
14 "
15
16SRC_URI_append_h2200 = " file://50-hostap_cs.rules "
17PACKAGE_ARCH_h2200 = "h2200"
18
19require udev.inc
20
21INITSCRIPT_PARAMS = "start 03 S ."
22
23FILES_${PN} += "${base_libdir}/udev/*"
24FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
25UDEV_EXTRAS = "extras/firmware/ extras/scsi_id/ extras/volume_id/"
26EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
27
28do_install () {
29 install -d ${D}${usrsbindir} \
30 ${D}${sbindir}
31 oe_runmake 'DESTDIR=${D}' INSTALL=install install
32 install -d ${D}${sysconfdir}/init.d
33 install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
34 install -m 0755 ${WORKDIR}/udev-cache ${D}${sysconfdir}/init.d/udev-cache
35
36 install -d ${D}${sysconfdir}/udev/rules.d/
37
38 install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
39 install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
40 install -m 0644 ${WORKDIR}/run.rules ${D}${sysconfdir}/udev/rules.d/run.rules
41 install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
42 install -m 0644 ${WORKDIR}/links.conf ${D}${sysconfdir}/udev/links.conf
43 if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
44 install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
45 fi
46
47 # Remove some default rules that don't work well on embedded devices
48 rm ${D}${sysconfdir}/udev/rules.d/60-persistent-input.rules
49 rm ${D}${sysconfdir}/udev/rules.d/60-persistent-storage.rules
50 rm ${D}${sysconfdir}/udev/rules.d/60-persistent-storage-tape.rules
51
52 install -d ${D}${sysconfdir}/udev/scripts/
53
54 install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
55 install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
56
57 install -d ${D}${base_libdir}/udev/
58}
59
60do_install_append_h2200() {
61 install -m 0644 ${WORKDIR}/50-hostap_cs.rules ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules
62}
diff --git a/meta/recipes-core/udev/udev_141.bb b/meta/recipes-core/udev/udev_141.bb
new file mode 100644
index 0000000000..3893a98a2d
--- /dev/null
+++ b/meta/recipes-core/udev/udev_141.bb
@@ -0,0 +1,65 @@
1DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
2/dev/, handles hotplug events and loads drivers at boot time. It replaces \
3the hotplug package and requires a kernel not older than 2.6.12."
4RPROVIDES_${PN} = "hotplug"
5
6PR = "r8"
7
8SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
9 file://noasmlinkage.patch;patch=1 \
10 file://unbreak.patch;patch=1 \
11 file://run.rules \
12 "
13
14SRC_URI_append_h2200 = " file://50-hostap_cs.rules "
15PACKAGE_ARCH_h2200 = "h2200"
16
17require udev.inc
18
19FILES_${PN} += "${base_libdir}/udev/*"
20FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
21UDEV_EXTRAS = "extras/firmware/ extras/scsi_id/ extras/volume_id/"
22#EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
23
24exec_prefix = ""
25
26EXTRA_OECONF = "--with-udev-prefix="
27
28do_install () {
29 install -d ${D}${usrsbindir} \
30 ${D}${sbindir}
31 oe_runmake 'DESTDIR=${D}' INSTALL=install install
32 install -d ${D}${sysconfdir}/init.d
33 install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
34 install -m 0755 ${WORKDIR}/udev-cache ${D}${sysconfdir}/init.d/udev-cache
35
36 install -d ${D}${sysconfdir}/udev/rules.d/
37
38 cp ${S}/rules/rules.d/* ${D}${sysconfdir}/udev/rules.d/
39 cp ${S}/rules/packages/* ${D}${sysconfdir}/udev/rules.d/
40 install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
41 #install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
42 #install -m 0644 ${WORKDIR}/run.rules ${D}${sysconfdir}/udev/rules.d/run.rules
43 #install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
44 install -m 0644 ${WORKDIR}/links.conf ${D}${sysconfdir}/udev/links.conf
45 #if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
46 # install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
47 #fi
48
49 # Remove some default rules that don't work well on embedded devices
50 #rm ${D}${sysconfdir}/udev/rules.d/60-persistent-input.rules
51 #rm ${D}${sysconfdir}/udev/rules.d/60-persistent-storage.rules
52 #rm ${D}${sysconfdir}/udev/rules.d/60-persistent-storage-tape.rules
53
54 install -d ${D}${sysconfdir}/udev/scripts/
55
56 install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
57 install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
58
59 install -d ${D}${base_libdir}/udev/
60}
61
62do_install_append_h2200() {
63 install -m 0644 ${WORKDIR}/50-hostap_cs.rules ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules
64}
65
diff --git a/meta/recipes-core/udev/udev_145.bb b/meta/recipes-core/udev/udev_145.bb
new file mode 100644
index 0000000000..91d8ce3734
--- /dev/null
+++ b/meta/recipes-core/udev/udev_145.bb
@@ -0,0 +1,65 @@
1DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
2/dev/, handles hotplug events and loads drivers at boot time. It replaces \
3the hotplug package and requires a kernel not older than 2.6.12."
4RPROVIDES_${PN} = "hotplug"
5
6PR = "r9"
7
8SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
9 file://enable-gudev.patch;patch=1 \
10 file://run.rules \
11 "
12
13SRC_URI_append_h2200 = " file://50-hostap_cs.rules "
14PACKAGE_ARCH_h2200 = "h2200"
15
16require udev.inc
17
18INITSCRIPT_PARAMS = "start 03 S ."
19
20FILES_${PN} += "${base_libdir}/udev/*"
21FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
22UDEV_EXTRAS = "extras/firmware/ extras/scsi_id/ extras/volume_id/"
23
24EXTRA_OECONF = "--with-udev-prefix= --disable-extras --disable-introspection"
25
26DEPENDS += "glib-2.0"
27
28do_install () {
29 install -d ${D}${usrsbindir} \
30 ${D}${sbindir}
31 oe_runmake 'DESTDIR=${D}' INSTALL=install install
32 install -d ${D}${sysconfdir}/init.d
33 install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
34 install -m 0755 ${WORKDIR}/udev-cache ${D}${sysconfdir}/init.d/udev-cache
35
36 install -d ${D}${sysconfdir}/udev/rules.d/
37
38 cp ${S}/rules/rules.d/* ${D}${sysconfdir}/udev/rules.d/
39 cp ${S}/rules/packages/* ${D}${sysconfdir}/udev/rules.d/
40 install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
41 #install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
42 #install -m 0644 ${WORKDIR}/run.rules ${D}${sysconfdir}/udev/rules.d/run.rules
43 #install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
44 install -m 0644 ${WORKDIR}/links.conf ${D}${sysconfdir}/udev/links.conf
45 #if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
46 # install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
47 #fi
48
49 # Remove some default rules that don't work well on embedded devices
50 #rm ${D}${sysconfdir}/udev/rules.d/60-persistent-input.rules
51 #rm ${D}${sysconfdir}/udev/rules.d/60-persistent-storage.rules
52 #rm ${D}${sysconfdir}/udev/rules.d/60-persistent-storage-tape.rules
53
54 install -d ${D}${sysconfdir}/udev/scripts/
55
56 install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
57 install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
58
59 install -d ${D}${base_libdir}/udev/
60}
61
62do_install_append_h2200() {
63 install -m 0644 ${WORKDIR}/50-hostap_cs.rules ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules
64}
65
diff --git a/meta/recipes-core/udev/udev_158.bb b/meta/recipes-core/udev/udev_158.bb
new file mode 100644
index 0000000000..daf8d37e5f
--- /dev/null
+++ b/meta/recipes-core/udev/udev_158.bb
@@ -0,0 +1,3 @@
1include udev-new.inc
2
3PR = "r2"