summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--meta-openvuplus/conf/distro/vuplus.conf10
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/40-od-devfs-compatibility.rules19
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/41-od-linux-2.6.18-misc.rules24
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/42-od-oled-compatibility.rules16
-rwxr-xr-xmeta-openvuplus/recipes-core/udev/udev-124/default4
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/devfs-udev.rules108
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/flags.patch56
-rwxr-xr-xmeta-openvuplus/recipes-core/udev/udev-124/init177
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/libvolume-id-soname.patch12
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/links.conf24
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/local.rules32
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/mount.blacklist3
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/mount.sh72
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/mtd-exclude-persistent.patch13
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/network.sh58
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/noasmlinkage.patch45
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/permissions.rules119
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/run.rules14
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/series6
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/udev.rules116
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/udevtrigger_add_devname_filtering.patch99
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-124/vol_id_ld.patch17
-rw-r--r--meta-openvuplus/recipes-core/udev/udev-182/init45
-rw-r--r--meta-openvuplus/recipes-core/udev/udev_124.bb74
-rw-r--r--meta-openvuplus/recipes-core/udev/udev_124.inc67
-rw-r--r--meta-openvuplus/recipes-core/udev/udev_182.bbappend18
-rw-r--r--meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers-2.6.31/0001-implement-TIF_RESTORE_SIGMASK-support-and-enable-the.patch429
-rw-r--r--meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers-2.6.31/dvbapi-5.3.patch190
-rw-r--r--meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers/connector-msg-size-fix.patch29
-rw-r--r--meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers_2.6.31.bb (renamed from meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers.inc)42
-rw-r--r--meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers_3.1.1.bb7
32 files changed, 1820 insertions, 127 deletions
diff --git a/Makefile b/Makefile
index bf19056..645aff5 100644
--- a/Makefile
+++ b/Makefile
@@ -29,7 +29,7 @@
# This only sets the default value. All platforms now use a shared build
# directory. Run "MACHINE=vuultimo bitbake vuplus-image" to build an image
# for the vuultimo, if it is not the default.
-MACHINE ?= vusolo2
+MACHINE ?= bm750
MULTI_TEMPORARILY ?=
diff --git a/meta-openvuplus/conf/distro/vuplus.conf b/meta-openvuplus/conf/distro/vuplus.conf
index 3a0e6b3..76fb9da 100644
--- a/meta-openvuplus/conf/distro/vuplus.conf
+++ b/meta-openvuplus/conf/distro/vuplus.conf
@@ -33,13 +33,13 @@ PREFERRED_VERSION_pango ?= "1.28.4"
PREFERRED_VERSION_wpa-supplicant ?= "0.7.3"
-#PREFERRED_VERSION_linux-libc-headers = "2.6.31"
-#PREFERRED_VERSION_linux-libc-headers-nativesdk = "2.6.31"
-PREFERRED_VERSION_linux-libc-headers = "3.1.1"
-PREFERRED_VERSION_linux-libc-headers-nativesdk = "3.1.1"
+PREFERRED_VERSION_linux-libc-headers = "2.6.31"
+PREFERRED_VERSION_linux-libc-headers-nativesdk = "2.6.31"
+#PREFERRED_VERSION_linux-libc-headers = "3.1.1"
+#PREFERRED_VERSION_linux-libc-headers-nativesdk = "3.1.1"
# chang : udev_182 is not working with linux-libc-headers_2.6.31.
-#PREFERRED_VERSION_udev ?= "124"
+PREFERRED_VERSION_udev ?= "124"
PREFERRED_PROVIDER_jpeg = "jpeg"
PREFERRED_PROVIDER_jpeg-native = "jpeg-native"
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/40-od-devfs-compatibility.rules b/meta-openvuplus/recipes-core/udev/udev-124/40-od-devfs-compatibility.rules
new file mode 100644
index 0000000..4499cf1
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/40-od-devfs-compatibility.rules
@@ -0,0 +1,19 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+KERNEL=="i2c-[0-9]*", SYMLINK+="i2c/%n"
+KERNEL=="fb[0-9]*", SYMLINK+="fb/%n"
+KERNEL=="mtdblock[0-9]*", SYMLINK+="mtdblock/%n"
+KERNEL=="tty[0-9]*", SYMLINK+="vc/%n"
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/41-od-linux-2.6.18-misc.rules b/meta-openvuplus/recipes-core/udev/udev-124/41-od-linux-2.6.18-misc.rules
new file mode 100644
index 0000000..e0cff14
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/41-od-linux-2.6.18-misc.rules
@@ -0,0 +1,24 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+KERNEL=="fp0", NAME="dbox/fp0"
+KERNEL=="oled0", NAME="dbox/oled0"
+KERNEL=="lcd0", NAME="dbox/lcd0"
+KERNEL=="hsm0", NAME="misc/hsm0"
+KERNEL=="vtuner0", NAME="misc/vtuner0"
+KERNEL=="vtuner1", NAME="misc/vtuner1"
+KERNEL=="pvr", NAME="misc/pvr"
+KERNEL=="dp", NAME="misc/dp"
+
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/42-od-oled-compatibility.rules b/meta-openvuplus/recipes-core/udev/udev-124/42-od-oled-compatibility.rules
new file mode 100644
index 0000000..bf501bf
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/42-od-oled-compatibility.rules
@@ -0,0 +1,16 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+KERNEL=="*oled0", SYMLINK+="dbox/lcd0"
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/default b/meta-openvuplus/recipes-core/udev/udev-124/default
new file mode 100755
index 0000000..d0050b8
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/default
@@ -0,0 +1,4 @@
+# Default for /etc/init.d/udev
+
+# Comment this out to disable device cache
+#DEVCACHE="/etc/dev.tar"
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/devfs-udev.rules b/meta-openvuplus/recipes-core/udev/udev-124/devfs-udev.rules
new file mode 100644
index 0000000..0ba1ad4
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/devfs-udev.rules
@@ -0,0 +1,108 @@
+# The use of these rules is not recommended or supported.
+# In a world where devices can come and go at any time, the devfs scheme
+# of simple device enumeration does not help _anything_. Just forget about
+# it. Use custom rules to name your device or look at the persistent device
+# naming scheme, which is implemented for disks and add your subsystem.
+
+# ide block devices
+BUS="ide", KERNEL="hd*", PROGRAM="/etc/udev/ide-devfs.sh %k %b %n", NAME="%k", SYMLINK="%c{1} %c{2}"
+
+# md block devices
+KERNEL="md[0-9]*", NAME="md/%n"
+
+# floppy devices
+KERNEL="fd[0-9]*", NAME="floppy/%n"
+
+# tty devices
+KERNEL="tty[0-9]*", NAME="vc/%n", SYMLINK="%k"
+KERNEL="ttyS[0-9]*", NAME="tts/%n", SYMLINK="%k"
+KERNEL="ttyUSB[0-9]*", NAME="tts/USB%n"
+
+# vc devices
+KERNEL="vcs", NAME="vcc/0"
+KERNEL="vcs[0-9]*", NAME="vcc/%n"
+KERNEL="vcsa", NAME="vcc/a0"
+KERNEL="vcsa[0-9]*", NAME="vcc/a%n"
+
+# v4l devices
+KERNEL="video[0-9]*", NAME="v4l/video%n"
+KERNEL="radio[0-9]*", NAME="v4l/radio%n"
+KERNEL="vbi[0-9]*", NAME="v4l/vbi%n"
+KERNEL="vtx[0-9]*", NAME="v4l/vtx%n"
+
+# dm devices (ignore them)
+KERNEL="dm-[0-9]*", NAME=""
+
+# i2c devices
+KERNEL="i2c-[0-9]*", NAME="i2c/%n", SYMLINK="%k"
+
+# loop devices
+KERNEL="loop[0-9]*", NAME="loop/%n", SYMLINK="%k"
+
+# ramdisks
+KERNEL="ram[0-9]*", NAME="rd/%n", SYMLINK="%k"
+
+# framebuffer devices
+KERNEL="fb[0-9]*", NAME="fb/%n", SYMLINK="%k"
+
+# misc
+KERNEL="rtc", NAME="misc/%k", SYMLINK="%k"
+KERNEL="psaux", NAME="misc/%k", SYMLINK="%k"
+KERNEL="agpgart", NAME="misc/%k", SYMLINK="%k"
+KERNEL="rtc", NAME="misc/%k", SYMLINK="%k"
+KERNEL="psaux", NAME="misc/%k", SYMLINK="%k"
+KERNEL="uinput", NAME="misc/%k", SYMLINK="%k"
+
+# alsa devices
+KERNEL="controlC[0-9]*", NAME="snd/%k"
+KERNEL="hw[CD0-9]*", NAME="snd/%k"
+KERNEL="pcm[CD0-9cp]*", NAME="snd/%k"
+KERNEL="midi[CD0-9]*", NAME="snd/%k"
+KERNEL="timer", NAME="snd/%k"
+KERNEL="seq", NAME="snd/%k"
+
+# oss devices
+KERNEL="audio*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="dmmidi", NAME="sound/%k", SYMLINK="%k"
+KERNEL="dsp*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="midi*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="mixer*", NAME="sound/%k", SYMLINK="%k"
+KERNEL="sequencer*", NAME="sound/%k", SYMLINK="%k"
+
+# input devices
+KERNEL="mice", NAME="input/%k"
+KERNEL="mouse*", NAME="input/%k"
+KERNEL="event*", NAME="input/%k"
+KERNEL="js*", NAME="input/%k"
+KERNEL="ts*", NAME="input/%k"
+
+# USB devices
+KERNEL="hiddev*", NAME="usb/%k"
+KERNEL="auer*", NAME="usb/%k"
+KERNEL="legousbtower*", NAME="usb/%k"
+KERNEL="dabusb*", NAME="usb/%k"
+BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k"
+
+# netlink devices
+KERNEL="route", NAME="netlink/%k"
+KERNEL="skip", NAME="netlink/%k"
+KERNEL="usersock", NAME="netlink/%k"
+KERNEL="fwmonitor", NAME="netlink/%k"
+KERNEL="tcpdiag", NAME="netlink/%k"
+KERNEL="nflog", NAME="netlink/%k"
+KERNEL="xfrm", NAME="netlink/%k"
+KERNEL="arpd", NAME="netlink/%k"
+KERNEL="route6", NAME="netlink/%k"
+KERNEL="ip6_fw", NAME="netlink/%k"
+KERNEL="dnrtmsg", NAME="netlink/%k"
+KERNEL="tap*", NAME="netlink/%k"
+
+# CAPI devices
+KERNEL="capi", NAME="capi20", SYMLINK="isdn/capi20"
+KERNEL="capi*", NAME="capi/%n"
+
+# Network devices
+KERNEL="tun", NAME="net/%k"
+
+# raw devices
+KERNEL="raw[0-9]*", NAME="raw/%k"
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/flags.patch b/meta-openvuplus/recipes-core/udev/udev-124/flags.patch
new file mode 100644
index 0000000..13f20eb
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/flags.patch
@@ -0,0 +1,56 @@
+---
+ Makefile | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+Index: udev-115/Makefile
+===================================================================
+--- udev-115.orig/Makefile 2007-08-24 01:29:54.000000000 +0200
++++ udev-115/Makefile 2007-09-20 17:21:45.000000000 +0200
+@@ -112,39 +112,39 @@
+ AR = $(CROSS_COMPILE)ar
+ RANLIB = $(CROSS_COMPILE)ranlib
+
+-CFLAGS += -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
++override CFLAGS = -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
+ WARNINGS = -Wstrict-prototypes -Wsign-compare -Wshadow \
+ -Wchar-subscripts -Wmissing-declarations -Wnested-externs \
+ -Wpointer-arith -Wcast-align -Wsign-compare -Wmissing-prototypes
+-CFLAGS += $(WARNINGS)
++override CFLAGS += $(WARNINGS)
+
+ LDFLAGS += -Wl,-warn-common,--as-needed
+
+ OPTFLAGS = -Os
+-CFLAGS += $(OPTFLAGS)
++override CFLAGS += $(OPTFLAGS)
+
+ ifeq ($(strip $(USE_LOG)),true)
+- CFLAGS += -DUSE_LOG
++ override CFLAGS += -DUSE_LOG
+ endif
+
+ # if DEBUG is enabled, then we do not strip
+ ifeq ($(strip $(DEBUG)),true)
+- CFLAGS += -DDEBUG
++ override CFLAGS += -DDEBUG
+ endif
+
+ ifeq ($(strip $(USE_GCOV)),true)
+- CFLAGS += -fprofile-arcs -ftest-coverage
++ override CFLAGS += -fprofile-arcs -ftest-coverage
+ LDFLAGS += -fprofile-arcs
+ endif
+
+ ifeq ($(strip $(USE_SELINUX)),true)
+ UDEV_OBJS += udev_selinux.o
+ LIB_OBJS += -lselinux -lsepol
+- CFLAGS += -DUSE_SELINUX
++ override CFLAGS += -DUSE_SELINUX
+ endif
+
+ ifeq ($(strip $(USE_STATIC)),true)
+- CFLAGS += -DUSE_STATIC
++ override CFLAGS += -DUSE_STATIC
+ LDFLAGS += -static
+ endif
+
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/init b/meta-openvuplus/recipes-core/udev/udev-124/init
new file mode 100755
index 0000000..e8b2cc5
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/init
@@ -0,0 +1,177 @@
+#!/bin/sh -e
+### BEGIN INIT INFO
+# Provides: udev
+# Required-Start: mountkernfs
+# Required-Stop:
+# Default-Start: S
+# Default-Stop:
+# Short-Description: Start udevd, populate /dev and load drivers.
+### END INIT INFO
+
+# This script is based on Debian's.
+
+COLDPLUG=no
+COLDPLUG_TARBALL="/lib/udev/devices.tar.gz"
+
+for x in $(cat /proc/cmdline); do
+ case $x in
+ coldplug)
+ COLDPLUG=yes
+ ;;
+ esac
+done
+
+# we need to unmount /dev/pts/ and remount it later over the tmpfs
+unmount_devpts() {
+ if mountpoint -q /dev/pts/; then
+ umount -n -l /dev/pts/
+ fi
+
+ if mountpoint -q /dev/shm/; then
+ umount -n -l /dev/shm/
+ fi
+}
+
+# mount a tmpfs over /dev, if somebody did not already do it
+mount_tmpfs() {
+ if grep -q "/dev tmpfs" /proc/mounts; then
+ return
+ fi
+
+ if ! mount -n -o size=$tmpfs_size,mode=0755 -t tmpfs udev /dev; then
+ echo "udev requires tmpfs support, not started."
+ exit 1
+ fi
+
+ return 0
+}
+
+create_dev_makedev() {
+ if [ -e /sbin/MAKEDEV ]; then
+ ln -sf /sbin/MAKEDEV /dev/MAKEDEV
+ else
+ ln -sf /bin/true /dev/MAKEDEV
+ fi
+}
+
+make_extra_nodes() {
+ ret=1
+ if [ "$(echo /lib/udev/devices/*)" != "/lib/udev/devices/*" ]; then
+ cp -a /lib/udev/devices/* /$1/
+ ret=0
+ fi
+
+ [ -e /etc/udev/links.conf ] || return $ret
+
+ grep '^[^#]' /etc/udev/links.conf | \
+ while read type name arg1; do
+ [ "$type" -a "$name" -a ! -e "/$1/$name" -a ! -L "/$1/$name" ] || continue
+ case "$type" in
+ L) ln -s $arg1 /$1/$name ;;
+ D) mkdir -p /$1/$name ;;
+ M) mknod -m 600 /$1/$name $arg1 ;;
+ *) echo "links.conf: unparseable line ($type $name $arg1)" >&2 ;;
+ esac
+ done
+
+ return $ret
+}
+
+##############################################################################
+
+[ -x /sbin/udevd ] || exit 0
+
+PATH="/sbin:/bin"
+
+# defaults
+tmpfs_size="2M"
+udev_root="/dev"
+
+if [ -e /etc/udev/udev.conf ]; then
+ . /etc/udev/udev.conf
+fi
+
+##############################################################################
+
+# When modifying this script, do not forget that between the time that the
+# new /dev has been mounted and udevadm trigger has been run there will be
+# no /dev/null. This also means that you cannot use the "&" shell command.
+
+case "$1" in
+ start)
+ if [ -e "$udev_root/.udev/" ]; then
+ if mountpoint -q $udev_root/; then
+ TMPFS_MOUNTED=1
+ else
+ echo ".udev/ already exists on the static $udev_root!"
+ fi
+ fi
+
+ echo > /sys/kernel/uevent_helper
+
+ if [ -z "$TMPFS_MOUNTED" ]; then
+ unmount_devpts
+ mount_tmpfs
+ else
+ # and clean up the database of the initramfs udev
+ rm -rf /dev/.udev/
+ fi
+
+ # /dev/null must be created before udevd is started
+ if ! make_extra_nodes "$udev_root"; then
+ COLDPLUG=yes
+ fi
+ if [ ! -f "$COLDPLUG_TARBALL" ]; then
+ COLDPLUG=yes
+ fi
+
+ # if this directory is not present /dev will not be updated by udev
+ mkdir -p /dev/.udev/db/
+
+ echo "Startting the hotplug events dispatcher"
+ udevd --daemon
+
+ mkdir -p /dev/.udev/queue/ /dev/.udev/rules.d/
+
+ create_dev_makedev
+
+ if [ $COLDPLUG != "no" ]; then
+ echo "Synthesizing the initial hotplug events"
+ udevadm trigger
+
+ # wait for the udevd childs to finish
+ echo "Waiting for /dev to be fully populated"
+ if udevadm settle; then
+ echo 'done'
+ else
+ echo 'timeout'
+ fi
+ fi
+
+ ;;
+
+ stop)
+ echo "Stopping the hotplug events dispatcher"
+ start-stop-daemon --stop --name udevd --quiet --oknodo
+ ;;
+
+ restart)
+ echo "Stopping the hotplug events dispatcher"
+ start-stop-daemon --stop --name udevd --quiet --oknodo
+
+ echo "Startting the hotplug events dispatcher"
+ udevd --daemon
+ ;;
+
+ reload|force-reload)
+ udevadm control --reload_rules
+ ;;
+
+ *)
+ echo "Usage: /etc/init.d/udev {start|stop|restart|reload|force-reload}"
+ exit 1
+ ;;
+esac
+
+exit 0
+
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/libvolume-id-soname.patch b/meta-openvuplus/recipes-core/udev/udev-124/libvolume-id-soname.patch
new file mode 100644
index 0000000..56365a4
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/libvolume-id-soname.patch
@@ -0,0 +1,12 @@
+diff -uNr udev-124-orig/extras/volume_id/lib/Makefile udev-124/extras/volume_id/lib/Makefile
+--- udev-124-orig/extras/volume_id/lib/Makefile 2008-06-12 01:24:30.000000000 -0400
++++ udev-124/extras/volume_id/lib/Makefile 2009-01-14 23:32:42.000000000 -0500
+@@ -113,7 +113,7 @@
+ ifeq ($(libdir),$(usrlibdir))
+ ln -sf $(SHLIB) $(DESTDIR)$(usrlibdir)/libvolume_id.so
+ else
+- ln -sf $(libdir)/$(SHLIB) $(DESTDIR)$(usrlibdir)/libvolume_id.so
++ ln -sf ../..$(libdir)/$(SHLIB) $(DESTDIR)$(usrlibdir)/libvolume_id.so
+ endif
+ $(INSTALL) -d $(DESTDIR)$(usrlibdir)/pkgconfig
+ $(INSTALL_DATA) libvolume_id.pc $(DESTDIR)$(usrlibdir)/pkgconfig/libvolume_id.pc
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/links.conf b/meta-openvuplus/recipes-core/udev/udev-124/links.conf
new file mode 100644
index 0000000..a9f8b58
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/links.conf
@@ -0,0 +1,24 @@
+# This file does not exist. Please do not ask the debian maintainer about it.
+# You may use it to do strange and wonderful things, at your risk.
+
+L fd /proc/self/fd
+L stdin /proc/self/fd/0
+L stdout /proc/self/fd/1
+L stderr /proc/self/fd/2
+L core /proc/kcore
+L sndstat /proc/asound/oss/sndstat
+L MAKEDEV /sbin/MAKEDEV
+
+D pts
+D shm
+
+M null c 1 3
+M console c 5 1
+
+# Hic sunt leones.
+M ppp c 108 0
+D loop
+M loop/0 b 7 0
+D net
+M net/tun c 10 200
+
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/local.rules b/meta-openvuplus/recipes-core/udev/udev-124/local.rules
new file mode 100644
index 0000000..9e0479b
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/local.rules
@@ -0,0 +1,32 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# Media automounting
+#SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
+#SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
+
+# Handle network interface setup
+SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
+SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
+
+# The first rtc device is symlinked to /dev/rtc
+KERNEL=="rtc0", SYMLINK+="rtc"
+
+# Try and modprobe for drivers for new hardware
+ACTION=="add", DEVPATH=="/devices/*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
+
+# Create a symlink to any touchscreen input device
+SUBSYSTEM=="input", KERNEL=="event[0-9]*", SYSFS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
+SUBSYSTEM=="input", KERNEL=="event[0-9]*", SYSFS{modalias}=="ads7846", SYMLINK+="input/touchscreen0"
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/mount.blacklist b/meta-openvuplus/recipes-core/udev/udev-124/mount.blacklist
new file mode 100644
index 0000000..d3ebb17
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/mount.blacklist
@@ -0,0 +1,3 @@
+/dev/loop
+/dev/ram
+/dev/mtdblock
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/mount.sh b/meta-openvuplus/recipes-core/udev/udev-124/mount.sh
new file mode 100644
index 0000000..be8b3df
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/mount.sh
@@ -0,0 +1,72 @@
+#!/bin/sh
+#
+# Called from udev
+# Attemp to mount any added block devices
+# and remove any removed devices
+#
+
+MOUNT="/bin/mount"
+PMOUNT="/usr/bin/pmount"
+UMOUNT="/bin/umount"
+name="`basename "$DEVNAME"`"
+
+for line in `cat /etc/udev/mount.blacklist | grep -v ^#`
+do
+ if ( echo "$DEVNAME" | grep -q "$line" )
+ then
+ logger "udev/mount.sh" "[$DEVNAME] is blacklisted, ignoring"
+ exit 0
+ fi
+done
+
+automount() {
+ ! test -d "/media/$name" && mkdir -p "/media/$name"
+
+ if ! $MOUNT -t auto -o sync $DEVNAME "/media/$name"
+ then
+ #logger "mount.sh/automount" "$MOUNT -t auto $DEVNAME \"/media/$name\" failed!"
+ rm_dir "/media/$name"
+ else
+ logger "mount.sh/automount" "Auto-mount of [/media/$name] successful"
+ touch "/tmp/.automount-$name"
+ fi
+}
+
+rm_dir() {
+ # We do not want to rm -r populated directories
+ if test "`find "$1" | wc -l | tr -d " "`" -lt 2 -a -d "$1"
+ then
+ ! test -z "$1" && rm -r "$1"
+ else
+ logger "mount.sh/automount" "Not removing non-empty directory [$1]"
+ fi
+}
+
+if [ "$ACTION" = "add" ] && [ -n "$DEVNAME" ]; then
+ if [ -x "$PMOUNT" ]; then
+ $PMOUNT $DEVNAME 2> /dev/null
+ elif [ -x $MOUNT ]; then
+ $MOUNT $DEVNAME 2> /dev/null
+ fi
+
+ # If the device isn't mounted at this point, it isn't configured in fstab
+ # 20061107: Small correction: The rootfs partition may be called just "rootfs" and not by
+ # its true device name so this would break. If the rootfs is mounted on two places
+ # during boot, it confuses the heck out of fsck. So Im auto-adding the root-partition
+ # to /etc/udev/mount.blacklist via postinst
+
+ cat /proc/mounts | awk '{print $1}' | grep -q "^$DEVNAME$" || automount
+
+fi
+
+
+
+if [ "$ACTION" = "remove" ] && [ -x "$UMOUNT" ] && [ -n "$DEVNAME" ]; then
+ for mnt in `cat /proc/mounts | grep "$DEVNAME" | cut -f 2 -d " " `
+ do
+ $UMOUNT $mnt
+ done
+
+ # Remove empty directories from auto-mounter
+ test -e "/tmp/.automount-$name" && rm_dir "/media/$name"
+fi
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/mtd-exclude-persistent.patch b/meta-openvuplus/recipes-core/udev/udev-124/mtd-exclude-persistent.patch
new file mode 100644
index 0000000..204b7b4
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/mtd-exclude-persistent.patch
@@ -0,0 +1,13 @@
+Copyright (c) 2009 MontaVista Software, Inc. All rights reserved.
+
+--- a/etc/udev/rules.d/60-persistent-storage.rules 2008-06-12 07:24:30.000000000 +0200
++++ b/etc/udev/rules.d/60-persistent-storage.rules 2009-08-18 11:39:23.595063264 +0200
+@@ -10,7 +10,7 @@
+ SUBSYSTEM!="block", GOTO="persistent_storage_end"
+
+ # skip rules for inappropriate block devices
+-KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-*|md*", GOTO="persistent_storage_end"
++KERNEL=="ram*|loop*|fd*|mtd*|nbd*|gnbd*|dm-*|md*|btibm*", GOTO="persistent_storage_end"
+
+ # never access non-cdrom removable ide devices, the drivers are causing event loops on open()
+ KERNEL=="hd*[!0-9]", ATTR{removable}=="1", DRIVERS=="ide-cs|ide-floppy", GOTO="persistent_storage_end"
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/network.sh b/meta-openvuplus/recipes-core/udev/udev-124/network.sh
new file mode 100644
index 0000000..182c26d
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/network.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+# udevd does clearenv(). Export shell PATH to children.
+export PATH
+
+# Do not run when pcmcia-cs is installed
+test -x /sbin/cardctl && exit 0
+
+# We get two "add" events for hostap cards due to wifi0
+echo "$INTERFACE" | grep -q wifi && exit 0
+
+
+# Check if /etc/init.d/network has been run yet to see if we are
+# called by starting /etc/rcS.d/S03udev and not by hotplugging a device
+#
+# At this stage, network interfaces should not be brought up
+# automatically because:
+# a) /etc/init.d/network has not been run yet (security issue)
+# b) /var has not been populated yet so /etc/resolv,conf points to
+# oblivion, making the network unusable
+#
+
+spoofp="`grep ^spoofprotect /etc/network/options`"
+if test -z "$spoofp"
+then
+ # This is the default from /etc/init.d/network
+ spoofp_val=yes
+else
+ spoofp_val=${spoofp#spoofprotect=}
+fi
+
+test "$spoofp_val" = yes && spoofp_val=1 || spoofp_val=0
+
+# I think it is safe to assume that "lo" will always be there ;)
+if test "`cat /proc/sys/net/ipv4/conf/lo/rp_filter`" != "$spoofp_val" -a -n "$spoofp_val"
+then
+ echo "$INTERFACE" >> /dev/udev_network_queue
+ exit 0
+fi
+
+#
+# Code taken from pcmcia-cs:/etc/pcmcia/network
+#
+
+# if this interface has an entry in /etc/network/interfaces, let ifupdown
+# handle it
+if grep -q "iface \+$INTERFACE" /etc/network/interfaces; then
+ case $ACTION in
+ add)
+ ifconfig | grep -q "^$INTERFACE" || ifup $INTERFACE
+ ;;
+ remove)
+ ifdown $INTERFACE
+ ;;
+ esac
+
+ exit 0
+fi
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/noasmlinkage.patch b/meta-openvuplus/recipes-core/udev/udev-124/noasmlinkage.patch
new file mode 100644
index 0000000..d58a7ea
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/noasmlinkage.patch
@@ -0,0 +1,45 @@
+diff -pru udev-124.orig/test-udev.c udev-124/test-udev.c
+--- udev-124.orig/test-udev.c 2008-06-12 06:24:30.000000000 +0100
++++ udev-124/test-udev.c 2008-07-07 14:43:37.000000000 +0100
+@@ -46,7 +46,7 @@ void log_message(int priority, const cha
+ }
+ #endif
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ switch (signum) {
+ case SIGALRM:
+diff -pru udev-124.orig/udevd.c udev-124/udevd.c
+--- udev-124.orig/udevd.c 2008-06-12 06:24:30.000000000 +0100
++++ udev-124/udevd.c 2008-07-07 14:43:58.000000000 +0100
+@@ -87,7 +87,7 @@ void log_message(int priority, const cha
+
+ #endif
+
+-static void asmlinkage udev_event_sig_handler(int signum)
++static void udev_event_sig_handler(int signum)
+ {
+ if (signum == SIGALRM)
+ exit(1);
+@@ -798,7 +798,7 @@ static struct udevd_uevent_msg *get_netl
+ return msg;
+ }
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ switch (signum) {
+ case SIGINT:
+diff -pru udev-124.orig/udevmonitor.c udev-124/udevmonitor.c
+--- udev-124.orig/udevmonitor.c 2008-06-12 06:24:30.000000000 +0100
++++ udev-124/udevmonitor.c 2008-07-07 14:44:24.000000000 +0100
+@@ -97,7 +97,7 @@ static int init_uevent_netlink_sock(void
+ return 0;
+ }
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ if (signum == SIGINT || signum == SIGTERM)
+ udev_exit = 1;
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/permissions.rules b/meta-openvuplus/recipes-core/udev/udev-124/permissions.rules
new file mode 100644
index 0000000..940d163
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/permissions.rules
@@ -0,0 +1,119 @@
+ACTION!="add", GOTO="permissions_end"
+
+# workarounds needed to synchronize with sysfs
+# only needed for kernels < v2.6.18-rc1
+ENV{PHYSDEVPATH}!="?*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
+SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", WAIT_FOR_SYSFS="ioerr_cnt"
+# only needed for kernels < 2.6.16
+SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
+# only needed for kernels < 2.6.17
+SUBSYSTEM=="net", ENV{DRIVER}=="?*", WAIT_FOR_SYSFS="device/driver"
+
+# devices needed to load the drivers providing them
+KERNEL=="tun", OPTIONS+="ignore_remove"
+KERNEL=="ppp", OPTIONS+="ignore_remove"
+KERNEL=="loop[0-9]*", OPTIONS+="ignore_remove"
+
+# default permissions for block devices
+SUBSYSTEM=="block", GROUP="disk"
+# the aacraid driver is broken and reports that disks removable (see #404927)
+SUBSYSTEM=="block", ATTRS{removable}=="1", \
+ DRIVERS!="aacraid", GROUP="floppy"
+# all block devices on these buses are "removable"
+SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394|mmc|pcmcia", GROUP="floppy"
+
+# IDE devices
+KERNEL=="hd[a-z]|pcd[0-9]*", DRIVERS=="ide-cdrom|pcd", \
+ IMPORT{program}="cdrom_id --export $tempnode"
+ENV{ID_CDROM}=="?*", GROUP="cdrom"
+KERNEL=="ht[0-9]*", GROUP="tape"
+KERNEL=="nht[0-9]*", GROUP="tape"
+
+# SCSI devices
+KERNEL=="sr[0-9]*", IMPORT{program}="cdrom_id --export $tempnode"
+SUBSYSTEMS=="scsi", ATTRS{type}=="1", GROUP="tape"
+SUBSYSTEMS=="scsi", ATTRS{type}=="4", GROUP="cdrom"
+SUBSYSTEMS=="scsi", ATTRS{type}=="5", GROUP="cdrom"
+SUBSYSTEMS=="scsi", ATTRS{type}=="8", GROUP="tape"
+
+# USB devices
+KERNEL=="legousbtower*", MODE="0666"
+KERNEL=="lp[0-9]*", SUBSYSTEMS=="usb", GROUP="lp"
+
+# usbfs-like devices
+SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
+ MODE="0664"
+
+# iRiver music players
+SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="plugdev", \
+ ATTRS{idVendor}=="4102", ATTRS{idProduct}=="10[01][135789]"
+
+# serial devices
+SUBSYSTEM=="tty", GROUP="dialout"
+SUBSYSTEM=="capi", GROUP="dialout"
+SUBSYSTEM=="slamr", GROUP="dialout"
+SUBSYSTEM=="zaptel", GROUP="dialout"
+
+# vc devices (all members of the tty subsystem)
+KERNEL=="ptmx", MODE="0666", GROUP="root"
+KERNEL=="console", MODE="0600", GROUP="root"
+KERNEL=="tty", MODE="0666", GROUP="root"
+KERNEL=="tty[0-9]*", GROUP="root"
+KERNEL=="pty*", MODE="0666", GROUP="tty"
+
+# video devices
+SUBSYSTEM=="video4linux", GROUP="video"
+SUBSYSTEM=="drm", GROUP="video"
+SUBSYSTEM=="dvb", GROUP="video"
+SUBSYSTEM=="em8300", GROUP="video"
+SUBSYSTEM=="graphics", GROUP="video"
+SUBSYSTEM=="nvidia", GROUP="video"
+
+# misc devices
+KERNEL=="random", MODE="0666"
+KERNEL=="urandom", MODE="0666"
+KERNEL=="mem", MODE="0640", GROUP="kmem"
+KERNEL=="kmem", MODE="0640", GROUP="kmem"
+KERNEL=="port", MODE="0640", GROUP="kmem"
+KERNEL=="full", MODE="0666"
+KERNEL=="null", MODE="0666"
+KERNEL=="zero", MODE="0666"
+KERNEL=="inotify", MODE="0666"
+KERNEL=="sgi_fetchop", MODE="0666"
+KERNEL=="sonypi", MODE="0666"
+KERNEL=="agpgart", GROUP="video"
+KERNEL=="rtc|rtc[0-9]*", GROUP="audio"
+KERNEL=="kqemu", MODE="0666"
+KERNEL=="tun", MODE="0666",
+
+KERNEL=="cdemu[0-9]*", GROUP="cdrom"
+KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
+KERNEL=="pktcdvd", MODE="0644"
+
+# printers and parallel devices
+SUBSYSTEM=="printer", GROUP="lp"
+SUBSYSTEM=="ppdev", GROUP="lp"
+KERNEL=="irlpt*", GROUP="lp"
+KERNEL=="pt[0-9]*", GROUP="tape"
+KERNEL=="pht[0-9]*", GROUP="tape"
+
+# sound devices
+SUBSYSTEM=="sound", GROUP="audio"
+
+# ieee1394 devices
+KERNEL=="raw1394", GROUP="disk"
+KERNEL=="dv1394*", GROUP="video"
+KERNEL=="video1394*", GROUP="video"
+
+# input devices
+KERNEL=="event[0-9]*", ATTRS{name}=="*dvb*|*DVB*|* IR *" \
+ MODE="0664", GROUP="video"
+KERNEL=="js[0-9]*", MODE="0664"
+KERNEL=="lirc[0-9]*", GROUP="video"
+
+# AOE character devices
+SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
+SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
+
+LABEL="permissions_end"
+
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/run.rules b/meta-openvuplus/recipes-core/udev/udev-124/run.rules
new file mode 100644
index 0000000..75d7137
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/run.rules
@@ -0,0 +1,14 @@
+# debugging monitor
+RUN+="socket:/org/kernel/udev/monitor"
+
+# run a command on remove events
+ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
+
+# ignore the events generated by virtual consoles
+KERNEL=="ptmx", OPTIONS+="last_rule"
+KERNEL=="console", OPTIONS+="last_rule"
+KERNEL=="tty" , OPTIONS+="last_rule"
+KERNEL=="tty[0-9]*", OPTIONS+="last_rule"
+KERNEL=="pty*", OPTIONS+="last_rule"
+SUBSYSTEM=="vc", OPTIONS+="last_rule"
+
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/series b/meta-openvuplus/recipes-core/udev/udev-124/series
new file mode 100644
index 0000000..a77b0dc
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/series
@@ -0,0 +1,6 @@
+noasmlinkage.patch -p1
+flags.patch -p1
+vol_id_ld.patch -p1
+udevtrigger_add_devname_filtering.patch -p1
+libvolume-id-soname.patch -p1
+mtd-exclude-persistent.patch -p1
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/udev.rules b/meta-openvuplus/recipes-core/udev/udev-124/udev.rules
new file mode 100644
index 0000000..67326ee
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/udev.rules
@@ -0,0 +1,116 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# workaround for devices which do not report media changes
+SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", \
+ ENV{ID_MODEL}=="IOMEGA_ZIP*", NAME="%k", OPTIONS+="all_partitions"
+SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTRS{media}=="floppy", \
+ OPTIONS+="all_partitions"
+
+# SCSI devices
+SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
+
+# USB devices
+SUBSYSTEMS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", \
+ ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \
+ SYMLINK+="pilot"
+
+# usbfs-like devices
+SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", \
+ NAME="%c"
+SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"
+
+# serial devices
+KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
+KERNEL=="capi[0-9]*", NAME="capi/%n"
+
+# video devices
+KERNEL=="dvb*", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}", ACTION=="add", \
+ NAME="%c"
+KERNEL=="card[0-9]*", NAME="dri/%k"
+
+# misc devices
+KERNEL=="hw_random", NAME="hwrng"
+KERNEL=="tun", NAME="net/%k"
+KERNEL=="evtchn", NAME="xen/%k"
+
+KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
+KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
+KERNEL=="pktcdvd", NAME="pktcdvd/control"
+
+KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
+KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
+KERNEL=="microcode", NAME="cpu/microcode"
+
+KERNEL=="umad*", NAME="infiniband/%k"
+KERNEL=="issm*", NAME="infiniband/%k"
+KERNEL=="uverbs*", NAME="infiniband/%k"
+KERNEL=="ucm*", NAME="infiniband/%k"
+KERNEL=="rdma_ucm", NAME="infiniband/%k"
+
+# ALSA devices
+KERNEL=="controlC[0-9]*", NAME="snd/%k"
+KERNEL=="hwC[D0-9]*", NAME="snd/%k"
+KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
+KERNEL=="midiC[D0-9]*", NAME="snd/%k"
+KERNEL=="timer", NAME="snd/%k"
+KERNEL=="seq", NAME="snd/%k"
+
+# ieee1394 devices
+KERNEL=="dv1394*", NAME="dv1394/%n"
+KERNEL=="video1394*", NAME="video1394/%n"
+
+# input devices
+KERNEL=="mice", NAME="input/%k"
+KERNEL=="mouse[0-9]*", NAME="input/%k"
+KERNEL=="event[0-9]*", NAME="input/%k"
+KERNEL=="js[0-9]*", NAME="input/%k"
+KERNEL=="ts[0-9]*", NAME="input/%k"
+KERNEL=="uinput", NAME="input/%k"
+
+# Zaptel
+KERNEL=="zapctl", NAME="zap/ctl"
+KERNEL=="zaptimer", NAME="zap/timer"
+KERNEL=="zapchannel", NAME="zap/channel"
+KERNEL=="zappseudo", NAME="zap/pseudo"
+KERNEL=="zap[0-9]*", NAME="zap/%n"
+
+# AOE character devices
+SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k"
+
+# device mapper creates its own device nodes, so ignore these
+KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
+KERNEL=="device-mapper", NAME="mapper/control"
+
+KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
+
+# Firmware Helper
+#ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware.sh"
+
+# Samsung UARTS
+KERNEL=="s3c2410_serial[0-9]", NAME="ttySAC%n"
+
+# MXC UARTs
+KERNEL=="ttymxc[0-4]", NAME="ttymxc%n"
+
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/udevtrigger_add_devname_filtering.patch b/meta-openvuplus/recipes-core/udev/udev-124/udevtrigger_add_devname_filtering.patch
new file mode 100644
index 0000000..5182542
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/udevtrigger_add_devname_filtering.patch
@@ -0,0 +1,99 @@
+diff -pru udev-124.orig/udevtrigger.c udev-124/udevtrigger.c
+--- udev-124.orig/udevtrigger.c 2008-06-12 06:24:30.000000000 +0100
++++ udev-124/udevtrigger.c 2008-07-07 15:10:09.000000000 +0100
+@@ -42,6 +42,8 @@ static int dry_run;
+ LIST_HEAD(device_list);
+ LIST_HEAD(filter_subsystem_match_list);
+ LIST_HEAD(filter_subsystem_nomatch_list);
++LIST_HEAD(filter_kernel_match_list);
++LIST_HEAD(filter_kernel_nomatch_list);
+ LIST_HEAD(filter_attr_match_list);
+ LIST_HEAD(filter_attr_nomatch_list);
+ static int sock = -1;
+@@ -331,6 +333,26 @@ static int attr_match(const char *path,
+ return 0;
+ }
+
++static int kernel_filtered(const char *kernel)
++{
++ struct name_entry *loop_name;
++
++ /* skip devices matching the prohibited kernel device names */
++ list_for_each_entry(loop_name, &filter_kernel_nomatch_list, node)
++ if (fnmatch(loop_name->name, kernel, 0) == 0)
++ return 1;
++
++ /* skip devices not matching the listed kernel device names */
++ if (!list_empty(&filter_kernel_match_list)) {
++ list_for_each_entry(loop_name, &filter_kernel_match_list, node)
++ if (fnmatch(loop_name->name, kernel, 0) == 0)
++ return 0;
++ return 1;
++ }
++
++ return 0;
++}
++
+ static int attr_filtered(const char *path)
+ {
+ struct name_entry *loop_name;
+@@ -409,6 +431,9 @@ static void scan_subsystem(const char *s
+ if (dent2->d_name[0] == '.')
+ continue;
+
++ if (kernel_filtered(dent2->d_name))
++ continue;
++
+ strlcpy(dirname2, dirname, sizeof(dirname2));
+ strlcat(dirname2, "/", sizeof(dirname2));
+ strlcat(dirname2, dent2->d_name, sizeof(dirname2));
+@@ -465,6 +490,9 @@ static void scan_block(void)
+ if (!strcmp(dent2->d_name,"device"))
+ continue;
+
++ if (kernel_filtered(dent2->d_name))
++ continue;
++
+ strlcpy(dirname2, dirname, sizeof(dirname2));
+ strlcat(dirname2, "/", sizeof(dirname2));
+ strlcat(dirname2, dent2->d_name, sizeof(dirname2));
+@@ -576,6 +604,8 @@ int udevtrigger(int argc, char *argv[],
+ { "subsystem-nomatch", 1, NULL, 'S' },
+ { "attr-match", 1, NULL, 'a' },
+ { "attr-nomatch", 1, NULL, 'A' },
++ { "kernel-match", 1, NULL, 'k' },
++ { "kernel-nomatch", 1, NULL, 'K' },
+ { "env", 1, NULL, 'e' },
+ {}
+ };
+@@ -622,6 +652,12 @@ int udevtrigger(int argc, char *argv[],
+ case 'A':
+ name_list_add(&filter_attr_nomatch_list, optarg, 0);
+ break;
++ case 'k':
++ name_list_add(&filter_kernel_match_list, optarg, 0);
++ break;
++ case 'K':
++ name_list_add(&filter_kernel_nomatch_list, optarg, 0);
++ break;
+ case 'h':
+ printf("Usage: udevadm trigger OPTIONS\n"
+ " --verbose print the list of devices while running\n"
+@@ -632,6 +668,8 @@ int udevtrigger(int argc, char *argv[],
+ " --env=<KEY>=<value> pass an additional key (works only with --socket=)\n"
+ " --subsystem-match=<subsystem> trigger devices from a matching subystem\n"
+ " --subsystem-nomatch=<subsystem> exclude devices from a matching subystem\n"
++ " --kernel-match=<subsystem> trigger devices from a matching kernel device name\n"
++ " --kernel-nomatch=<subsystem> exclude devices from a matching kernel device name\n"
+ " --attr-match=<file[=<value>]> trigger devices with a matching sysfs\n"
+ " attribute\n"
+ " --attr-nomatch=<file[=<value>]> exclude devices with a matching sysfs\n"
+@@ -701,6 +739,8 @@ int udevtrigger(int argc, char *argv[],
+ exit:
+ name_list_cleanup(&filter_subsystem_match_list);
+ name_list_cleanup(&filter_subsystem_nomatch_list);
++ name_list_cleanup(&filter_kernel_match_list);
++ name_list_cleanup(&filter_kernel_nomatch_list);
+ name_list_cleanup(&filter_attr_match_list);
+ name_list_cleanup(&filter_attr_nomatch_list);
+
diff --git a/meta-openvuplus/recipes-core/udev/udev-124/vol_id_ld.patch b/meta-openvuplus/recipes-core/udev/udev-124/vol_id_ld.patch
new file mode 100644
index 0000000..11126ee
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev-124/vol_id_ld.patch
@@ -0,0 +1,17 @@
+---
+ extras/volume_id/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: udev-115/extras/volume_id/Makefile
+===================================================================
+--- udev-115.orig/extras/volume_id/Makefile 2007-09-20 18:17:59.000000000 +0200
++++ udev-115/extras/volume_id/Makefile 2007-09-20 18:18:08.000000000 +0200
+@@ -44,7 +44,7 @@
+ ifeq ($(strip $(VOLUME_ID_STATIC)),true)
+ $(Q) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) lib/libvolume_id.a $(LIB_OBJS)
+ else
+- $(Q) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) -Llib -lvolume_id $(LIB_OBJS)
++ $(Q) $(LD) -Llib $(LDFLAGS) -o $@ $@.o $(LIBUDEV) -lvolume_id $(LIB_OBJS)
+ endif
+
+ # man pages
diff --git a/meta-openvuplus/recipes-core/udev/udev-182/init b/meta-openvuplus/recipes-core/udev/udev-182/init
deleted file mode 100644
index 45e1fc3..0000000
--- a/meta-openvuplus/recipes-core/udev/udev-182/init
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-
-### BEGIN INIT INFO
-# Provides: udev
-# Required-Start: mountvirtfs
-# Required-Stop:
-# Default-Start: S
-# Default-Stop:
-# Short-Description: Start udevd, populate /dev (symlinks only) and load drivers.
-### END INIT INFO
-
-export TZ=/etc/localtime
-
-[ -d /sys/class ] || exit 1
-[ -r /proc/mounts ] || exit 1
-[ -x /lib/udev/udevd ] || exit 1
-[ -f /etc/default/udev ] && . /etc/default/udev
-[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
-
-kill_udevd() {
- pid=`pidof -x udevd`
- [ -n "$pid" ] && kill $pid
-}
-
-export ACTION=add
-
-echo "Starting udev"
-
-if [ ! -e "/lib/modules/$(uname -r)"/modules.dep ] ; then
- mkdir -p /lib/modules/$(uname -r)
- depmod -ae
-fi
-
-# make_extra_nodes
-kill_udevd > "/dev/null" 2>&1
-
-# trigger the sorted events
-echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
-/lib/udev/udevd -d
-
-/usr/bin/udevadm control --env STARTUP=1
-/usr/bin/udevadm trigger --action=add
-#/usr/bin/udevadm settle
-
-exit 0
diff --git a/meta-openvuplus/recipes-core/udev/udev_124.bb b/meta-openvuplus/recipes-core/udev/udev_124.bb
new file mode 100644
index 0000000..f3060da
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev_124.bb
@@ -0,0 +1,74 @@
+DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
+/dev/, handles hotplug events and loads drivers at boot time. It replaces \
+the hotplug package and requires a kernel not older than 2.6.12."
+RPROVIDES_${PN} = "hotplug"
+PR = "r31"
+
+SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
+ file://noasmlinkage.patch;patch=1 \
+ file://flags.patch;patch=1 \
+ file://vol_id_ld.patch;patch=1 \
+ file://udevtrigger_add_devname_filtering.patch;patch=1 \
+ file://libvolume-id-soname.patch;patch=1 \
+ file://mtd-exclude-persistent.patch;patch=1 \
+ file://mount.blacklist \
+ file://run.rules \
+ file://default \
+ file://local.rules \
+ "
+
+SRC_URI_append_vuplus = " \
+ file://40-od-devfs-compatibility.rules \
+ file://42-od-oled-compatibility.rules \
+ file://41-od-linux-2.6.18-misc.rules \
+"
+
+require udev_124.inc
+
+INITSCRIPT_PARAMS = "start 04 S ."
+
+FILES_${PN} += "${base_libdir}/udev/*"
+FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
+UDEV_EXTRAS = "extras/firmware/ extras/scsi_id/ extras/volume_id/"
+EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
+
+do_install () {
+ install -d ${D}${usrsbindir} \
+ ${D}${sbindir}
+ oe_runmake 'DESTDIR=${D}' INSTALL=install install
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
+
+ install -d ${D}${sysconfdir}/default
+ install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/udev
+
+ install -d ${D}${sysconfdir}/udev/rules.d/
+
+ install -m 0644 ${WORKDIR}/mount.blacklist ${D}${sysconfdir}/udev/
+ install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
+ install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
+ install -m 0644 ${WORKDIR}/run.rules ${D}${sysconfdir}/udev/rules.d/run.rules
+ install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
+ install -m 0644 ${WORKDIR}/links.conf ${D}${sysconfdir}/udev/links.conf
+ if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
+ install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
+ fi
+
+ touch ${D}${sysconfdir}/udev/saved.uname
+ touch ${D}${sysconfdir}/udev/saved.cmdline
+ touch ${D}${sysconfdir}/udev/saved.atags
+
+ install -d ${D}${sysconfdir}/udev/scripts/
+
+ install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
+ install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
+
+ install -d ${D}${base_libdir}/udev/
+}
+
+do_install_append() {
+ install -m 0644 ${WORKDIR}/??-od-*.rules ${D}${sysconfdir}/udev/rules.d/
+}
+
+SRC_URI[md5sum] = "2ea9229208154229c5d6df6222f74ad7"
+SRC_URI[sha256sum] = "cc9f58ff58fbd3f5868e1f1e368e3c93e1f441afd0ac1dcbd5d01a9ce5b5b0d7"
diff --git a/meta-openvuplus/recipes-core/udev/udev_124.inc b/meta-openvuplus/recipes-core/udev/udev_124.inc
new file mode 100644
index 0000000..32e59a2
--- /dev/null
+++ b/meta-openvuplus/recipes-core/udev/udev_124.inc
@@ -0,0 +1,67 @@
+DESCRIPTION ?= "udev is a program which dynamically creates and removes device nodes from \
+/dev/. It responds to /sbin/hotplug device events and requires a 2.6 kernel."
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe"
+
+SRC_URI += " \
+ file://udev.rules \
+ file://devfs-udev.rules \
+ file://links.conf \
+ file://permissions.rules \
+ file://mount.sh \
+ file://network.sh \
+ file://local.rules \
+ file://init"
+
+inherit update-rc.d autotools pkgconfig
+
+PARALLEL_MAKE = ""
+UDEV_DEVFS_RULES ?= "0"
+PKG_libvolume-id-dev = "libvolume-id-dev"
+
+INITSCRIPT_NAME = "udev"
+INITSCRIPT_PARAMS = "start 04 S ."
+
+export CROSS = "${TARGET_PREFIX}"
+export HOSTCC = "${BUILD_CC}"
+export udevdir ?= "/dev"
+export usrbindir := "${bindir}"
+export usrsbindir := "${sbindir}"
+export etcdir = "${sysconfdir}"
+LD = "${CC}"
+bindir = "/bin"
+sbindir = "/sbin"
+
+UDEV_EXTRAS = "<override me>"
+EXTRA_OEMAKE = "-e \
+ 'EXTRAS=${UDEV_EXTRAS}' \
+ 'STRIP=echo'"
+
+do_install () {
+ install -d ${D}${usrsbindir} \
+ ${D}${sbindir}
+ oe_runmake 'DESTDIR=${D}' INSTALL=install install
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
+
+ install -d ${D}${sysconfdir}/udev/rules.d/
+
+ install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
+ install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
+ install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
+ if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
+ install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
+ fi
+
+ install -d ${D}${sysconfdir}/udev/scripts/
+
+ install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
+ install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
+}
+
+PACKAGES =+ "udev-utils libvolume-id libvolume-id-dev"
+FILES_libvolume-id-dev = "${includedir}/libvolume_id.h ${libdir}/libvolume_id.a ${libdir}/libvolume_id.so ${libdir}/pkgconfig/libvolume_id.pc"
+FILES_udev-utils = "${usrbindir}/udevinfo ${sbindir}/udevadm ${usrbindir}/udevtest"
+FILES_libvolume-id = "${base_libdir}/libvolume_id.so.*"
+FILES_${PN} += "${usrbindir}/* ${usrsbindir}/udevd"
+FILES_${PN}-dbg += "${usrbindir}/.debug ${usrsbindir}/.debug"
diff --git a/meta-openvuplus/recipes-core/udev/udev_182.bbappend b/meta-openvuplus/recipes-core/udev/udev_182.bbappend
deleted file mode 100644
index 7f533e4..0000000
--- a/meta-openvuplus/recipes-core/udev/udev_182.bbappend
+++ /dev/null
@@ -1,18 +0,0 @@
-PR .= "-dream1"
-
-SRC_URI += " \
- file://init \
-"
-
-inherit update-rc.d
-
-INITSCRIPT_NAME = "udev"
-INITSCRIPT_PARAMS = "start 03 S ."
-
-do_install_append () {
- rm ${D}${sysconfdir}/udev/rules.d/*.rules || /bin/true
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
-}
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/${P}:"
diff --git a/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers-2.6.31/0001-implement-TIF_RESTORE_SIGMASK-support-and-enable-the.patch b/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers-2.6.31/0001-implement-TIF_RESTORE_SIGMASK-support-and-enable-the.patch
new file mode 100644
index 0000000..1dee314
--- /dev/null
+++ b/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers-2.6.31/0001-implement-TIF_RESTORE_SIGMASK-support-and-enable-the.patch
@@ -0,0 +1,429 @@
+Path: news.gmane.org!not-for-mail
+From: Mikael Pettersson <mikpe@it.uu.se>
+Newsgroups: gmane.linux.ports.arm.kernel
+Subject: [PATCH][v3] ARM support for
+ TIF_RESTORE_SIGMASK/pselect6/ppoll/epoll_pwait
+Date: Sat, 15 Aug 2009 13:09:28 +0200 (MEST)
+Lines: 362
+Approved: news@gmane.org
+Message-ID: <200908151109.n7FB9Sbs000150@pilspetsen.it.uu.se>
+NNTP-Posting-Host: lo.gmane.org
+Mime-Version: 1.0
+Content-Type: text/plain; charset="us-ascii"
+Content-Transfer-Encoding: 7bit
+X-Trace: ger.gmane.org 1250334940 22899 80.91.229.12 (15 Aug 2009 11:15:40 GMT)
+X-Complaints-To: usenet@ger.gmane.org
+NNTP-Posting-Date: Sat, 15 Aug 2009 11:15:40 +0000 (UTC)
+To: linux-arm-kernel@lists.arm.linux.org.uk
+Original-X-From: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.arm.linux.org.uk Sat Aug 15 13:15:33 2009
+Return-path: <linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.arm.linux.org.uk>
+Envelope-to: linux-arm-kernel@m.gmane.org
+Original-Received: from zeniv.linux.org.uk ([195.92.253.2])
+ by lo.gmane.org with esmtp (Exim 4.50)
+ id 1McHER-0000U2-PG
+ for linux-arm-kernel@m.gmane.org; Sat, 15 Aug 2009 13:15:31 +0200
+Original-Received: from [2002:4e20:1eda:1:201:3dff:fe00:156] (helo=lists.arm.linux.org.uk)
+ by ZenIV.linux.org.uk with esmtpsa (Exim 4.69 #1 (Red Hat Linux))
+ id 1McH9u-0005LV-3W; Sat, 15 Aug 2009 11:10:57 +0000
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+ d=arm.linux.org.uk; s=lists; h=Date:Message-Id:From:To:Subject:
+ List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:
+ List-Subscribe:MIME-Version:Content-Type:
+ Content-Transfer-Encoding; bh=RVq9hPAexlUcptd3h6j5nomOyoEIjcDWAP
+ VeJtlhsa4=; b=HAoqRMC9svNzKlR0f938E0cRlLoJZvG2aSun171woWZAClu/Ud
+ IYN0iD2vm4eF+kYQkTYD6PGFCMbNnugmZe6gCpS0QhijoKyOzRBdykQHJuOLQtLE
+ q9KJzp24cQ/vwsV2+O1OqcmIFboIg2L5JQaUuv0djS7OkdspH0ysmi1lg=
+Original-Received: from [::1] (helo=lists.arm.linux.org.uk)
+ by lists.arm.linux.org.uk with esmtp (Exim 4.69)
+ (envelope-from <linux-arm-kernel-bounces@lists.arm.linux.org.uk>)
+ id 1McH9o-0002us-34; Sat, 15 Aug 2009 12:10:44 +0100
+Original-Received: from aun.it.uu.se ([130.238.12.36] ident=root)
+ by lists.arm.linux.org.uk with esmtps (TLSv1:AES256-SHA:256)
+ (Exim 4.69) (envelope-from <mikpe@user.it.uu.se>) id 1McH8h-0002uj-Ck
+ for linux-arm-kernel@lists.arm.linux.org.uk;
+ Sat, 15 Aug 2009 12:09:35 +0100
+Original-Received: from pilspetsen.it.uu.se (daemon@pilspetsen.it.uu.se [130.238.18.39])
+ by aun.it.uu.se (8.13.6/8.13.6) with ESMTP id n7FB9S04005839
+ for <linux-arm-kernel@lists.arm.linux.org.uk>;
+ Sat, 15 Aug 2009 13:09:28 +0200 (MEST)
+Original-Received: (from mikpe@localhost)
+ by pilspetsen.it.uu.se (8.13.8+Sun/8.13.7) id n7FB9Sbs000150
+ for linux-arm-kernel@lists.arm.linux.org.uk;
+ Sat, 15 Aug 2009 13:09:28 +0200 (MEST)
+X-BeenThere: linux-arm-kernel@lists.arm.linux.org.uk
+X-Mailman-Version: 2.1.9
+Precedence: list
+List-Id: ARM Linux kernel discussions <linux-arm-kernel.lists.arm.linux.org.uk>
+List-Unsubscribe: <http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.arm.linux.org.uk?subject=unsubscribe>
+List-Archive: <http://lists.arm.linux.org.uk/lurker/list/linux-arm-kernel.html>
+List-Post: <mailto:linux-arm-kernel@lists.arm.linux.org.uk>
+List-Help: <mailto:linux-arm-kernel-request@lists.arm.linux.org.uk?subject=help>
+List-Subscribe: <http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel>,
+ <mailto:linux-arm-kernel-request@lists.arm.linux.org.uk?subject=subscribe>
+Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.arm.linux.org.uk
+Xref: news.gmane.org gmane.linux.ports.arm.kernel:64340
+Archived-At: <http://permalink.gmane.org/gmane.linux.ports.arm.kernel/64340>
+
+This patch adds support for TIF_RESTORE_SIGMASK to ARM's signal handling,
+which allows to hook up the pselect6, ppoll, and epoll_pwait syscalls on ARM.
+
+Tested here with eabi userspace and a test program with a deliberate race
+between a child's exit and the parent's sigprocmask/select sequence.
+Using sys_pselect6() instead of sigprocmask/select reliably prevents the race.
+
+The other arch's support for TIF_RESTORE_SIGMASK has evolved over time:
+
+In 2.6.16:
+- add TIF_RESTORE_SIGMASK which parallels TIF_SIGPENDING
+- test both when checking for pending signal [bad, changed later]
+- reimplement sys_sigsuspend() to use current->saved_sigmask,
+ TIF_RESTORE_SIGMASK [changed later], and -ERESTARTNOHAND;
+ ditto for sys_rt_sigsuspend(), but drop private code and
+ use common code via __ARCH_WANT_SYS_RT_SIGSUSPEND;
+- there are now no "extra" calls to do_signal() so its oldset
+ parameter is always &current->blocked so need not be passed,
+ also its return value is changed to void
+- change handle_signal() to return 0/-errno
+- change do_signal() to honor TIF_RESTORE_SIGMASK:
+ + get oldset from current->saved_sigmask if TIF_RESTORE_SIGMASK is set
+ + if handle_signal() was successful then clear TIF_RESTORE_SIGMASK
+ + if no signal was delivered and TIF_RESTORE_SIGMASK is set then
+ clear it and restore the sigmask
+- hook up sys_pselect6() and sys_ppoll()
+
+In 2.6.19:
+- hook up sys_epoll_pwait()
+
+In 2.6.26:
+- allow archs to override how TIF_RESTORE_SIGMASK is implemented;
+ default set_restore_sigmask() sets both TIF_RESTORE_SIGMASK and
+ TIF_SIGPENDING; archs need now just test TIF_SIGPENDING again
+ when checking for pending signal work; some archs now implement
+ TIF_RESTORE_SIGMASK as a secondary/non-atomic thread flag bit
+- call set_restore_sigmask() in sys_sigsuspend() instead of setting
+ TIF_RESTORE_SIGMASK
+
+In 2.6.29-rc:
+- kill sys_pselect7() which no arch wanted
+
+So for 2.6.31-rc6/ARM this patch does the following:
+- Add TIF_RESTORE_SIGMASK. Use the generic set_restore_sigmask()
+ which sets both TIF_SIGPENDING and TIF_RESTORE_SIGMASK, so
+ TIF_RESTORE_SIGMASK need not claim one of the scarce low thread
+ flags, and existing TIF_SIGPENDING and _TIF_WORK_MASK tests need
+ not be extended for TIF_RESTORE_SIGMASK.
+- sys_sigsuspend() is reimplemented to use current->saved_sigmask and
+ set_restore_sigmask(), making it identical to most other archs.
+- The private code for sys_rt_sigsuspend() is removed, instead generic
+ code supplies it via __ARCH_WANT_SYS_RT_SIGSUSPEND.
+- sys_sigsuspend() and sys_rt_sigsuspend() no longer need a pt_regs
+ parameter, so their assembly code wrappers are removed.
+- handle_signal() is changed to return 0 on success or -errno.
+- The oldset parameter to do_signal() is now redundant and removed,
+ and the return value is now also redundant so it's changed to void.
+- do_signal() is changed to honor TIF_RESTORE_SIGMASK:
+ + get oldset from current->saved_sigmask if TIF_RESTORE_SIGMASK is set
+ + if handle_signal() was successful then clear TIF_RESTORE_SIGMASK
+ + if no signal was delivered and TIF_RESTORE_SIGMASK is set then
+ clear it and restore the sigmask
+- Hook up sys_pselect6, sys_ppoll, and sys_epoll_pwait.
+
+Signed-off-by: Mikael Pettersson
+---
+Changes from previous versions:
+
+v2 (only posted as incremental diff against v1):
+- moved sigmask restoration in no-signal-delivered case into
+ "if (syscall)" block for extra protection against exception
+ path also invoking do_signal()
+v3 (this version):
+- moved oldset initialisation into "if (signr > 0)" block,
+ as requested by Russell
+
+ arch/arm/include/asm/thread_info.h | 2
+ arch/arm/include/asm/unistd.h | 7 +--
+ arch/arm/kernel/calls.S | 10 ++--
+ arch/arm/kernel/entry-common.S | 10 ----
+ arch/arm/kernel/signal.c | 86 +++++++++++++++----------------------
+ 5 files changed, 48 insertions(+), 67 deletions(-)
+
+diff -rupN linux-2.6.31-rc6/arch/arm/include/asm/thread_info.h linux-2.6.31-rc6.arm-restore-sigmask-v3/arch/arm/include/asm/thread_info.h
+--- linux-2.6.31-rc6/arch/arm/include/asm/thread_info.h 2009-08-14 11:11:10.000000000 +0200
++++ linux-2.6.31-rc6.arm-restore-sigmask-v3/arch/arm/include/asm/thread_info.h 2009-08-14 11:26:44.000000000 +0200
+@@ -140,6 +140,7 @@ extern void vfp_sync_state(struct thread
+ #define TIF_USING_IWMMXT 17
+ #define TIF_MEMDIE 18
+ #define TIF_FREEZE 19
++#define TIF_RESTORE_SIGMASK 20
+
+ #define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
+ #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
+@@ -147,6 +148,7 @@ extern void vfp_sync_state(struct thread
+ #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)
+ #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT)
+ #define _TIF_FREEZE (1 << TIF_FREEZE)
++#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK)
+
+ /*
+ * Change these and you break ASM code in entry-common.S
+diff -rupN linux-2.6.31-rc6/arch/arm/include/asm/unistd.h linux-2.6.31-rc6.arm-restore-sigmask-v3/arch/arm/include/asm/unistd.h
+--- linux-2.6.31-rc6/arch/arm/include/asm/unistd.h 2009-08-14 11:11:10.000000000 +0200
++++ linux-2.6.31-rc6.arm-restore-sigmask-v3/arch/arm/include/asm/unistd.h 2009-08-14 11:26:44.000000000 +0200
+@@ -360,8 +360,8 @@
+ #define __NR_readlinkat (__NR_SYSCALL_BASE+332)
+ #define __NR_fchmodat (__NR_SYSCALL_BASE+333)
+ #define __NR_faccessat (__NR_SYSCALL_BASE+334)
+- /* 335 for pselect6 */
+- /* 336 for ppoll */
++#define __NR_pselect6 (__NR_SYSCALL_BASE+335)
++#define __NR_ppoll (__NR_SYSCALL_BASE+336)
+ #define __NR_unshare (__NR_SYSCALL_BASE+337)
+ #define __NR_set_robust_list (__NR_SYSCALL_BASE+338)
+ #define __NR_get_robust_list (__NR_SYSCALL_BASE+339)
+@@ -372,7 +372,7 @@
+ #define __NR_vmsplice (__NR_SYSCALL_BASE+343)
+ #define __NR_move_pages (__NR_SYSCALL_BASE+344)
+ #define __NR_getcpu (__NR_SYSCALL_BASE+345)
+- /* 346 for epoll_pwait */
++#define __NR_epoll_pwait (__NR_SYSCALL_BASE+346)
+ #define __NR_kexec_load (__NR_SYSCALL_BASE+347)
+ #define __NR_utimensat (__NR_SYSCALL_BASE+348)
+ #define __NR_signalfd (__NR_SYSCALL_BASE+349)
+@@ -432,6 +432,7 @@
+ #define __ARCH_WANT_SYS_SIGPENDING
+ #define __ARCH_WANT_SYS_SIGPROCMASK
+ #define __ARCH_WANT_SYS_RT_SIGACTION
++#define __ARCH_WANT_SYS_RT_SIGSUSPEND
+
+ #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT)
+ #define __ARCH_WANT_SYS_TIME
+diff -rupN linux-2.6.31-rc6/arch/arm/kernel/calls.S linux-2.6.31-rc6.arm-restore-sigmask-v3/arch/arm/kernel/calls.S
+--- linux-2.6.31-rc6/arch/arm/kernel/calls.S 2009-08-14 11:11:10.000000000 +0200
++++ linux-2.6.31-rc6.arm-restore-sigmask-v3/arch/arm/kernel/calls.S 2009-08-14 11:26:44.000000000 +0200
+@@ -81,7 +81,7 @@
+ CALL(sys_ni_syscall) /* was sys_ssetmask */
+ /* 70 */ CALL(sys_setreuid16)
+ CALL(sys_setregid16)
+- CALL(sys_sigsuspend_wrapper)
++ CALL(sys_sigsuspend)
+ CALL(sys_sigpending)
+ CALL(sys_sethostname)
+ /* 75 */ CALL(sys_setrlimit)
+@@ -188,7 +188,7 @@
+ CALL(sys_rt_sigpending)
+ CALL(sys_rt_sigtimedwait)
+ CALL(sys_rt_sigqueueinfo)
+- CALL(sys_rt_sigsuspend_wrapper)
++ CALL(sys_rt_sigsuspend)
+ /* 180 */ CALL(ABI(sys_pread64, sys_oabi_pread64))
+ CALL(ABI(sys_pwrite64, sys_oabi_pwrite64))
+ CALL(sys_chown16)
+@@ -344,8 +344,8 @@
+ CALL(sys_readlinkat)
+ CALL(sys_fchmodat)
+ CALL(sys_faccessat)
+-/* 335 */ CALL(sys_ni_syscall) /* eventually pselect6 */
+- CALL(sys_ni_syscall) /* eventually ppoll */
++/* 335 */ CALL(sys_pselect6)
++ CALL(sys_ppoll)
+ CALL(sys_unshare)
+ CALL(sys_set_robust_list)
+ CALL(sys_get_robust_list)
+@@ -355,7 +355,7 @@
+ CALL(sys_vmsplice)
+ CALL(sys_move_pages)
+ /* 345 */ CALL(sys_getcpu)
+- CALL(sys_ni_syscall) /* eventually epoll_pwait */
++ CALL(sys_epoll_pwait)
+ CALL(sys_kexec_load)
+ CALL(sys_utimensat)
+ CALL(sys_signalfd)
+diff -rupN linux-2.6.31-rc6/arch/arm/kernel/entry-common.S linux-2.6.31-rc6.arm-restore-sigmask-v3/arch/arm/kernel/entry-common.S
+--- linux-2.6.31-rc6/arch/arm/kernel/entry-common.S 2009-08-14 11:11:10.000000000 +0200
++++ linux-2.6.31-rc6.arm-restore-sigmask-v3/arch/arm/kernel/entry-common.S 2009-08-14 11:26:44.000000000 +0200
+@@ -373,16 +373,6 @@ sys_clone_wrapper:
+ b sys_clone
+ ENDPROC(sys_clone_wrapper)
+
+-sys_sigsuspend_wrapper:
+- add r3, sp, #S_OFF
+- b sys_sigsuspend
+-ENDPROC(sys_sigsuspend_wrapper)
+-
+-sys_rt_sigsuspend_wrapper:
+- add r2, sp, #S_OFF
+- b sys_rt_sigsuspend
+-ENDPROC(sys_rt_sigsuspend_wrapper)
+-
+ sys_sigreturn_wrapper:
+ add r0, sp, #S_OFF
+ b sys_sigreturn
+diff -rupN linux-2.6.31-rc6/arch/arm/kernel/signal.c linux-2.6.31-rc6.arm-restore-sigmask-v3/arch/arm/kernel/signal.c
+--- linux-2.6.31-rc6/arch/arm/kernel/signal.c 2009-08-14 11:11:10.000000000 +0200
++++ linux-2.6.31-rc6.arm-restore-sigmask-v3/arch/arm/kernel/signal.c 2009-08-14 11:26:44.000000000 +0200
+@@ -47,57 +47,22 @@ const unsigned long sigreturn_codes[7] =
+ MOV_R7_NR_RT_SIGRETURN, SWI_SYS_RT_SIGRETURN, SWI_THUMB_RT_SIGRETURN,
+ };
+
+-static int do_signal(sigset_t *oldset, struct pt_regs * regs, int syscall);
+-
+ /*
+ * atomically swap in the new signal mask, and wait for a signal.
+ */
+-asmlinkage int sys_sigsuspend(int restart, unsigned long oldmask, old_sigset_t mask, struct pt_regs *regs)
++asmlinkage int sys_sigsuspend(int restart, unsigned long oldmask, old_sigset_t mask)
+ {
+- sigset_t saveset;
+-
+ mask &= _BLOCKABLE;
+ spin_lock_irq(&current->sighand->siglock);
+- saveset = current->blocked;
++ current->saved_sigmask = current->blocked;
+ siginitset(&current->blocked, mask);
+ recalc_sigpending();
+ spin_unlock_irq(&current->sighand->siglock);
+- regs->ARM_r0 = -EINTR;
+-
+- while (1) {
+- current->state = TASK_INTERRUPTIBLE;
+- schedule();
+- if (do_signal(&saveset, regs, 0))
+- return regs->ARM_r0;
+- }
+-}
+-
+-asmlinkage int
+-sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, struct pt_regs *regs)
+-{
+- sigset_t saveset, newset;
+-
+- /* XXX: Don't preclude handling different sized sigset_t's. */
+- if (sigsetsize != sizeof(sigset_t))
+- return -EINVAL;
+-
+- if (copy_from_user(&newset, unewset, sizeof(newset)))
+- return -EFAULT;
+- sigdelsetmask(&newset, ~_BLOCKABLE);
+-
+- spin_lock_irq(&current->sighand->siglock);
+- saveset = current->blocked;
+- current->blocked = newset;
+- recalc_sigpending();
+- spin_unlock_irq(&current->sighand->siglock);
+- regs->ARM_r0 = -EINTR;
+
+- while (1) {
+- current->state = TASK_INTERRUPTIBLE;
+- schedule();
+- if (do_signal(&saveset, regs, 0))
+- return regs->ARM_r0;
+- }
++ current->state = TASK_INTERRUPTIBLE;
++ schedule();
++ set_restore_sigmask();
++ return -ERESTARTNOHAND;
+ }
+
+ asmlinkage int
+@@ -545,7 +510,7 @@ static inline void setup_syscall_restart
+ /*
+ * OK, we're invoking a handler
+ */
+-static void
++static int
+ handle_signal(unsigned long sig, struct k_sigaction *ka,
+ siginfo_t *info, sigset_t *oldset,
+ struct pt_regs * regs, int syscall)
+@@ -596,7 +561,7 @@ handle_signal(unsigned long sig, struct
+
+ if (ret != 0) {
+ force_sigsegv(sig, tsk);
+- return;
++ return ret;
+ }
+
+ /*
+@@ -610,6 +575,7 @@ handle_signal(unsigned long sig, struct
+ recalc_sigpending();
+ spin_unlock_irq(&tsk->sighand->siglock);
+
++ return 0;
+ }
+
+ /*
+@@ -621,7 +587,7 @@ handle_signal(unsigned long sig, struct
+ * the kernel can handle, and then we build all the user-level signal handling
+ * stack-frames in one go after that.
+ */
+-static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall)
++static void do_signal(struct pt_regs *regs, int syscall)
+ {
+ struct k_sigaction ka;
+ siginfo_t info;
+@@ -634,7 +600,7 @@ static int do_signal(sigset_t *oldset, s
+ * if so.
+ */
+ if (!user_mode(regs))
+- return 0;
++ return;
+
+ if (try_to_freeze())
+ goto no_signal;
+@@ -643,9 +609,24 @@ static int do_signal(sigset_t *oldset, s
+
+ signr = get_signal_to_deliver(&info, &ka, regs, NULL);
+ if (signr > 0) {
+- handle_signal(signr, &ka, &info, oldset, regs, syscall);
++ sigset_t *oldset;
++
++ if (test_thread_flag(TIF_RESTORE_SIGMASK))
++ oldset = &current->saved_sigmask;
++ else
++ oldset = &current->blocked;
++ if (handle_signal(signr, &ka, &info, oldset, regs, syscall) == 0) {
++ /*
++ * A signal was successfully delivered; the saved
++ * sigmask will have been stored in the signal frame,
++ * and will be restored by sigreturn, so we can simply
++ * clear the TIF_RESTORE_SIGMASK flag.
++ */
++ if (test_thread_flag(TIF_RESTORE_SIGMASK))
++ clear_thread_flag(TIF_RESTORE_SIGMASK);
++ }
+ single_step_set(current);
+- return 1;
++ return;
+ }
+
+ no_signal:
+@@ -697,14 +678,21 @@ static int do_signal(sigset_t *oldset, s
+ regs->ARM_r0 == -ERESTARTNOINTR) {
+ setup_syscall_restart(regs);
+ }
++
++ /* If there's no signal to deliver, we just put the saved sigmask
++ * back.
++ */
++ if (test_thread_flag(TIF_RESTORE_SIGMASK)) {
++ clear_thread_flag(TIF_RESTORE_SIGMASK);
++ sigprocmask(SIG_SETMASK, &current->saved_sigmask, NULL);
++ }
+ }
+ single_step_set(current);
+- return 0;
+ }
+
+ asmlinkage void
+ do_notify_resume(struct pt_regs *regs, unsigned int thread_flags, int syscall)
+ {
+ if (thread_flags & _TIF_SIGPENDING)
+- do_signal(&current->blocked, regs, syscall);
++ do_signal(regs, syscall);
+ }
+
+-------------------------------------------------------------------
+List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
+FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
+Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
+
diff --git a/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers-2.6.31/dvbapi-5.3.patch b/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers-2.6.31/dvbapi-5.3.patch
new file mode 100644
index 0000000..876801e
--- /dev/null
+++ b/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers-2.6.31/dvbapi-5.3.patch
@@ -0,0 +1,190 @@
+diff --git a/include/linux/dvb/audio.h b/include/linux/dvb/audio.h
+index fec66bd..24cca40 100644
+--- a/include/linux/dvb/audio.h
++++ b/include/linux/dvb/audio.h
+@@ -24,7 +24,7 @@
+ #ifndef _DVBAUDIO_H_
+ #define _DVBAUDIO_H_
+
+-#include <linux/types.h>
++#include <asm/types.h>
+
+ typedef enum {
+ AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
+diff --git a/include/linux/dvb/dmx.h b/include/linux/dvb/dmx.h
+index fef9437..698fe94 100644
+--- a/include/linux/dvb/dmx.h
++++ b/include/linux/dvb/dmx.h
+@@ -24,7 +24,7 @@
+ #ifndef _DVBDMX_H_
+ #define _DVBDMX_H_
+
+-#include <linux/types.h>
++#include <asm/types.h>
+ #ifdef __KERNEL__
+ #include <linux/time.h>
+ #else
+@@ -151,5 +151,7 @@ struct dmx_stc {
+ #define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t)
+ #define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t)
+ #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc)
++#define DMX_ADD_PID _IOW('o', 51, __u16)
++#define DMX_REMOVE_PID _IOW('o', 52, __u16)
+
+ #endif /*_DVBDMX_H_*/
+diff --git a/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h
+index 51c8d2d..0de9dc2 100644
+--- a/include/linux/dvb/frontend.h
++++ b/include/linux/dvb/frontend.h
+@@ -26,7 +26,7 @@
+ #ifndef _DVBFRONTEND_H_
+ #define _DVBFRONTEND_H_
+
+-#include <linux/types.h>
++#include <asm/types.h>
+
+ typedef enum fe_type {
+ FE_QPSK,
+@@ -62,6 +62,7 @@ typedef enum fe_caps {
+ FE_CAN_8VSB = 0x200000,
+ FE_CAN_16VSB = 0x400000,
+ FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
++ FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
+ FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */
+ FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
+ FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
+@@ -173,14 +174,21 @@ typedef enum fe_modulation {
+ typedef enum fe_transmit_mode {
+ TRANSMISSION_MODE_2K,
+ TRANSMISSION_MODE_8K,
+- TRANSMISSION_MODE_AUTO
++ TRANSMISSION_MODE_AUTO,
++ TRANSMISSION_MODE_4K,
++ TRANSMISSION_MODE_1K,
++ TRANSMISSION_MODE_16K,
++ TRANSMISSION_MODE_32K,
+ } fe_transmit_mode_t;
+
+ typedef enum fe_bandwidth {
+ BANDWIDTH_8_MHZ,
+ BANDWIDTH_7_MHZ,
+ BANDWIDTH_6_MHZ,
+- BANDWIDTH_AUTO
++ BANDWIDTH_AUTO,
++ BANDWIDTH_5_MHZ,
++ BANDWIDTH_10_MHZ,
++ BANDWIDTH_1_712_MHZ,
+ } fe_bandwidth_t;
+
+
+@@ -189,7 +197,10 @@ typedef enum fe_guard_interval {
+ GUARD_INTERVAL_1_16,
+ GUARD_INTERVAL_1_8,
+ GUARD_INTERVAL_1_4,
+- GUARD_INTERVAL_AUTO
++ GUARD_INTERVAL_AUTO,
++ GUARD_INTERVAL_1_128,
++ GUARD_INTERVAL_19_128,
++ GUARD_INTERVAL_19_256,
+ } fe_guard_interval_t;
+
+
+@@ -268,15 +279,44 @@ struct dvb_frontend_event {
+ #define DTV_FE_CAPABILITY 16
+ #define DTV_DELIVERY_SYSTEM 17
+
+-#define DTV_API_VERSION 35
+-#define DTV_API_VERSION 35
+-#define DTV_CODE_RATE_HP 36
+-#define DTV_CODE_RATE_LP 37
+-#define DTV_GUARD_INTERVAL 38
+-#define DTV_TRANSMISSION_MODE 39
+-#define DTV_HIERARCHY 40
++/* ISDB-T and ISDB-Tsb */
++#define DTV_ISDBT_PARTIAL_RECEPTION 18
++#define DTV_ISDBT_SOUND_BROADCASTING 19
+
+-#define DTV_MAX_COMMAND DTV_HIERARCHY
++#define DTV_ISDBT_SB_SUBCHANNEL_ID 20
++#define DTV_ISDBT_SB_SEGMENT_IDX 21
++#define DTV_ISDBT_SB_SEGMENT_COUNT 22
++
++#define DTV_ISDBT_LAYERA_FEC 23
++#define DTV_ISDBT_LAYERA_MODULATION 24
++#define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25
++#define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26
++
++#define DTV_ISDBT_LAYERB_FEC 27
++#define DTV_ISDBT_LAYERB_MODULATION 28
++#define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29
++#define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30
++
++#define DTV_ISDBT_LAYERC_FEC 31
++#define DTV_ISDBT_LAYERC_MODULATION 32
++#define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33
++#define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34
++
++#define DTV_API_VERSION 35
++
++#define DTV_CODE_RATE_HP 36
++#define DTV_CODE_RATE_LP 37
++#define DTV_GUARD_INTERVAL 38
++#define DTV_TRANSMISSION_MODE 39
++#define DTV_HIERARCHY 40
++
++#define DTV_ISDBT_LAYER_ENABLED 41
++
++#define DTV_ISDBS_TS_ID 42
++
++#define DTV_DVBT2_PLP_ID 43
++
++#define DTV_MAX_COMMAND DTV_DVBT2_PLP_ID
+
+ typedef enum fe_pilot {
+ PILOT_ON,
+@@ -308,6 +348,7 @@ typedef enum fe_delivery_system {
+ SYS_DMBTH,
+ SYS_CMMB,
+ SYS_DAB,
++ SYS_DVBT2,
+ } fe_delivery_system_t;
+
+ struct dtv_cmds_h {
+diff --git a/include/linux/dvb/net.h b/include/linux/dvb/net.h
+index f451e7e..59ed3fe 100644
+--- a/include/linux/dvb/net.h
++++ b/include/linux/dvb/net.h
+@@ -24,7 +24,7 @@
+ #ifndef _DVBNET_H_
+ #define _DVBNET_H_
+
+-#include <linux/types.h>
++#include <asm/types.h>
+
+ struct dvb_net_if {
+ __u16 pid;
+diff --git a/include/linux/dvb/version.h b/include/linux/dvb/version.h
+index 25b823b..1421cc8 100644
+--- a/include/linux/dvb/version.h
++++ b/include/linux/dvb/version.h
+@@ -24,6 +24,6 @@
+ #define _DVBVERSION_H_
+
+ #define DVB_API_VERSION 5
+-#define DVB_API_VERSION_MINOR 0
++#define DVB_API_VERSION_MINOR 3
+
+ #endif /*_DVBVERSION_H_*/
+diff --git a/include/linux/dvb/video.h b/include/linux/dvb/video.h
+index 1d750c0..3fccd5d 100644
+--- a/include/linux/dvb/video.h
++++ b/include/linux/dvb/video.h
+@@ -137,7 +137,7 @@ struct video_event {
+ #define VIDEO_EVENT_FRAME_RATE_CHANGED 2
+ #define VIDEO_EVENT_DECODER_STOPPED 3
+ #define VIDEO_EVENT_VSYNC 4
+- __kernel_time_t timestamp;
++ time_t timestamp;
+ union {
+ video_size_t size;
+ unsigned int frame_rate; /* in frames per 1000sec */
diff --git a/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers/connector-msg-size-fix.patch b/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers/connector-msg-size-fix.patch
deleted file mode 100644
index 5d531d6..0000000
--- a/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers/connector-msg-size-fix.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-Currently default header is linux-libc-header, which leads the dismatch
-with wrs kernel.
-
-The different headers for same file cause trouble between kerenl module and
-user level binary. E.g. segfault in v86d due to different
-CONNECTOR_MAX_MSG_SIZE in connector.h from the one used by uvesafb.
-
-This fix is work around to sync with wrs kernel headers, and should be removed
-after switching to linux-libc-headers-wrs.
-
-[BUGID #279] fixed by this.
-
-Signed-off-by: Zhai Edwin <edwin.zhai@intel.com>
-
-Index: linux-2.6.34/include/linux/connector.h
-===================================================================
---- linux-2.6.34.orig/include/linux/connector.h 2010-09-30 14:15:25.000000000 +0800
-+++ linux-2.6.34/include/linux/connector.h 2010-09-30 14:15:43.000000000 +0800
-@@ -48,7 +48,7 @@
- /*
- * Maximum connector's message size.
- */
--#define CONNECTOR_MAX_MSG_SIZE 16384
-+#define CONNECTOR_MAX_MSG_SIZE 65536
-
- /*
- * idx and val are unique identifiers which
diff --git a/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers.inc b/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers_2.6.31.bb
index 83b4604..0bbc5e7 100644
--- a/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers.inc
+++ b/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers_2.6.31.bb
@@ -1,19 +1,25 @@
-DESCRIPTION = "Sanitized set of kernel headers for the C library's use."
+DESCRIPTION = "Sanitized set of 2.6 kernel headers for the C library's use."
SECTION = "devel"
LICENSE = "GPLv2"
-
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
-python __anonymous () {
- major = d.getVar("PV",True).split('.')[0]
- if major == "3":
- d.setVar("HEADER_FETCH_VER", "3.0")
- else:
- d.setVar("HEADER_FETCH_VER", "2.6")
-}
+PR = "r0"
+
+DEPENDS += "unifdef-native"
+RDEPENDS_${PN}-dev = ""
+RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPV})"
+
+INHIBIT_DEFAULT_DEPS = "1"
+DEFAULT_PREFERENCE = "-1"
-SRC_URI = "http://archive.vuplus.com/download/kernel/linux-${KV}_${SRCREV}.tar.bz2"
+SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
+ file://0001-implement-TIF_RESTORE_SIGMASK-support-and-enable-the.patch;patch=1 \
+ file://dvbapi-5.3.patch;patch=1;pnum=1 \
+"
+SRC_URI[md5sum] = "84c077a37684e4cbfa67b18154390d8a"
+SRC_URI[sha256sum] = "0acd83f7b85db7ee18c2b0b7505e1ba6fd722c36f49a8870a831c851660e3512"
+
S = "${WORKDIR}/linux-${PV}"
set_arch() {
@@ -32,9 +38,8 @@ set_arch() {
sparc64*) ARCH=sparc64 ;;
sparc*) ARCH=sparc ;;
x86_64*) ARCH=x86_64 ;;
- avr32*) ARCH=avr32 ;;
- bfin*) ARCH=blackfin ;;
- microblaze*) ARCH=microblaze ;;
+ avr32*) ARCH=avr32 ;;
+ bfin*) ARCH=blackfin ;;
esac
}
@@ -50,17 +55,10 @@ do_install() {
set_arch
oe_runmake headers_install INSTALL_HDR_PATH=${D}${exec_prefix} ARCH=$ARCH
# Kernel should not be exporting this header
- rm -f ${D}${exec_prefix}/include/scsi/scsi.h
+ rm -rf ${D}${includedir}/scsi
# The ..install.cmd conflicts between various configure runs
- find ${D}${includedir} -name ..install.cmd | xargs rm -f
+ #find ${D}${includedir} -name ..install.cmd | xargs rm -f
}
BBCLASSEXTEND = "nativesdk"
-
-#DEPENDS = "cross-linkage"
-RDEPENDS_${PN}-dev = ""
-RRECOMMENDS_${PN}-dbg = "${PN}-dev (= ${EXTENDPKGV})"
-
-INHIBIT_DEFAULT_DEPS = "1"
-DEPENDS += "unifdef-native"
diff --git a/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers_3.1.1.bb b/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers_3.1.1.bb
deleted file mode 100644
index 4806ec5..0000000
--- a/meta-openvuplus/recipes-kernel/linux-libc-headers/linux-libc-headers_3.1.1.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-require linux-libc-headers.inc
-
-KV = "3.1.1"
-SRCREV = "r2"
-
-SRC_URI[md5sum] = "4dc3ac322453abbfaade7020cddea205"
-SRC_URI[sha256sum] = "1d18eb39677a23eace6b27ee25656c25f21b57be7e77a2adcdd15c76d1c3e875"