summaryrefslogtreecommitdiff
path: root/core/udev
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-03-18 00:02:54 +0000
committerroot <root@rshg054.dnsready.net>2012-03-18 00:02:54 +0000
commitd14a25fc4f65ae3d6e62f4668e9cb88d74834255 (patch)
tree7c4f618283e9b502f0d9cfb5059ce38daa7738be /core/udev
parent9a940818cc3edb82afac4d73a6474e6e3374f987 (diff)
Sun Mar 18 00:02:53 UTC 2012
Diffstat (limited to 'core/udev')
-rw-r--r--core/udev/0001-reinstate-TIMEOUT-handling.patch126
-rw-r--r--core/udev/PKGBUILD18
2 files changed, 137 insertions, 7 deletions
diff --git a/core/udev/0001-reinstate-TIMEOUT-handling.patch b/core/udev/0001-reinstate-TIMEOUT-handling.patch
new file mode 100644
index 000000000..9b251b283
--- /dev/null
+++ b/core/udev/0001-reinstate-TIMEOUT-handling.patch
@@ -0,0 +1,126 @@
+From 86617453cd78bf88d347f0e75a5be8b5ebac6c2e Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Thu, 15 Mar 2012 02:12:43 +0100
+Subject: [PATCH] reinstate TIMEOUT= handling
+
+This reverts 43d5c5f03645c4b842659f9b5bd0ae465e885e92 and
+57c6f8ae5f52a6e8ffc66a54966346f733dded39.
+
+Signed-off-by: Tom Gundersen <teg@jklm.no>
+---
+ src/libudev-device.c | 19 +++++++++++++++++++
+ src/libudev-private.h | 1 +
+ src/udevd.c | 13 ++++++++++---
+ 3 files changed, 30 insertions(+), 3 deletions(-)
+
+diff --git a/src/libudev-device.c b/src/libudev-device.c
+index 10f28b8..639c367 100644
+--- a/src/libudev-device.c
++++ b/src/libudev-device.c
+@@ -68,6 +68,7 @@ struct udev_device {
+ struct udev_list tags_list;
+ unsigned long long int seqnum;
+ unsigned long long int usec_initialized;
++ int timeout;
+ int devlink_priority;
+ int refcount;
+ dev_t devnum;
+@@ -160,6 +161,21 @@ static int udev_device_set_devnum(struct udev_device *udev_device, dev_t devnum)
+ return 0;
+ }
+
++int udev_device_get_timeout(struct udev_device *udev_device)
++{
++ return udev_device->timeout;
++}
++
++static int udev_device_set_timeout(struct udev_device *udev_device, int timeout)
++{
++ char num[32];
++
++ udev_device->timeout = timeout;
++ snprintf(num, sizeof(num), "%u", timeout);
++ udev_device_add_property(udev_device, "TIMEOUT", num);
++ return 0;
++}
++
+ const char *udev_device_get_devpath_old(struct udev_device *udev_device)
+ {
+ return udev_device->devpath_old;
+@@ -414,6 +430,8 @@ void udev_device_add_property_from_string_parse(struct udev_device *udev_device,
+ udev_device_set_devpath_old(udev_device, &property[12]);
+ } else if (strncmp(property, "SEQNUM=", 7) == 0) {
+ udev_device_set_seqnum(udev_device, strtoull(&property[7], NULL, 10));
++ } else if (strncmp(property, "TIMEOUT=", 8) == 0) {
++ udev_device_set_timeout(udev_device, strtoull(&property[8], NULL, 10));
+ } else if (strncmp(property, "IFINDEX=", 8) == 0) {
+ udev_device_set_ifindex(udev_device, strtoull(&property[8], NULL, 10));
+ } else if (strncmp(property, "DEVMODE=", 8) == 0) {
+@@ -599,6 +617,7 @@ struct udev_device *udev_device_new(struct udev *udev)
+ udev_list_init(udev, &udev_device->sysattr_value_list, true);
+ udev_list_init(udev, &udev_device->sysattr_list, false);
+ udev_list_init(udev, &udev_device->tags_list, true);
++ udev_device->timeout = -1;
+ udev_device->watch_handle = -1;
+ /* copy global properties */
+ udev_list_entry_foreach(list_entry, udev_get_properties_list_entry(udev))
+diff --git a/src/libudev-private.h b/src/libudev-private.h
+index 5f5c64a..ec63b67 100644
+--- a/src/libudev-private.h
++++ b/src/libudev-private.h
+@@ -87,6 +87,7 @@ const char *udev_device_get_id_filename(struct udev_device *udev_device);
+ void udev_device_set_is_initialized(struct udev_device *udev_device);
+ int udev_device_add_tag(struct udev_device *udev_device, const char *tag);
+ void udev_device_cleanup_tags_list(struct udev_device *udev_device);
++int udev_device_get_timeout(struct udev_device *udev_device);
+ unsigned long long udev_device_get_usec_initialized(struct udev_device *udev_device);
+ void udev_device_set_usec_initialized(struct udev_device *udev_device, unsigned long long usec_initialized);
+ int udev_device_get_devlink_priority(struct udev_device *udev_device);
+diff --git a/src/udevd.c b/src/udevd.c
+index 1702217..88e9272 100644
+--- a/src/udevd.c
++++ b/src/udevd.c
+@@ -401,7 +401,7 @@ out:
+ }
+ }
+
+-static void event_run(struct event *event)
++static void event_run(struct event *event, bool force)
+ {
+ struct udev_list_node *loop;
+
+@@ -427,7 +427,7 @@ static void event_run(struct event *event)
+ return;
+ }
+
+- if (children >= children_max) {
++ if (!force && children >= children_max) {
+ if (children_max > 1)
+ info(event->udev, "maximum number (%i) of children reached\n", children);
+ return;
+@@ -461,6 +461,13 @@ static int event_queue_insert(struct udev_device *dev)
+
+ event->state = EVENT_QUEUED;
+ udev_list_node_append(&event->node, &event_list);
++
++ /* run all events with a timeout set immediately */
++ if (udev_device_get_timeout(dev) > 0) {
++ event_run(event, true);
++ return 0;
++ }
++
+ return 0;
+ }
+
+@@ -577,7 +584,7 @@ static void event_queue_start(struct udev *udev)
+ continue;
+ }
+
+- event_run(event);
++ event_run(event, false);
+ }
+ }
+
+--
+1.7.9.4
+
diff --git a/core/udev/PKGBUILD b/core/udev/PKGBUILD
index bc45f9f4e..114f524b9 100644
--- a/core/udev/PKGBUILD
+++ b/core/udev/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 153480 2012-03-14 23:26:14Z tomegun $
+# $Id: PKGBUILD 153633 2012-03-16 22:34:33Z tomegun $
# Maintainer: Tom Gundersen <teg@jklm.no>
# Contributor: Aaron Griffin <aaron@archlinux.org>
# Contributor: Tobias Powalowski <tpowa@archlinux.org>
@@ -6,14 +6,15 @@
pkgname=udev
pkgver=181
-pkgrel=4
+pkgrel=5
pkgdesc="The userspace dev tools (udev)"
-depends=('util-linux' 'libusb-compat' 'glib2' 'kmod' 'pciutils' 'usbutils' 'pciutils' 'acl')
+depends=('util-linux' 'libusb-compat' 'glib2' 'kmod' 'pciutils' 'usbutils' 'acl')
install=udev.install
arch=(i686 x86_64)
license=('GPL')
makedepends=('gobject-introspection' 'gperf' 'libxslt' 'usbutils' 'kmod')
source=(ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/$pkgname-$pkgver.tar.xz
+ 0001-reinstate-TIMEOUT-handling.patch
initcpio-hooks-udev
initcpio-install-udev)
url="http://git.kernel.org/?p=linux/hotplug/udev.git;a=summary"
@@ -24,6 +25,8 @@ options=(!makeflags !libtool)
build() {
cd $srcdir/$pkgname-$pkgver
+ patch -p1 -i ../0001-reinstate-TIMEOUT-handling.patch
+
./configure --prefix=/usr \
--with-rootprefix= \
--sysconfdir=/etc \
@@ -39,6 +42,10 @@ package() {
cd $srcdir/$pkgname-$pkgver
make DESTDIR=${pkgdir} install
+ # install the mkinitpcio hook
+ install -D -m644 ../initcpio-hooks-udev ${pkgdir}/usr/lib/initcpio/hooks/udev
+ install -D -m644 ../initcpio-install-udev ${pkgdir}/usr/lib/initcpio/install/udev
+
# udevd moved, symlink to make life easy for restarting udevd manually
ln -s ../../lib/udev/udevd ${pkgdir}/usr/bin/udevd
@@ -52,11 +59,8 @@ package() {
s#GROUP="tape"#GROUP="storage"#g;
s#GROUP="cdrom"#GROUP="optical"#g' $i
done
-
- # install the mkinitpcio hook
- install -D -m644 ../initcpio-hooks-udev ${pkgdir}/lib/initcpio/hooks/udev
- install -D -m644 ../initcpio-install-udev ${pkgdir}/lib/initcpio/install/udev
}
md5sums=('0d7af750702620a871b9f9b98d8ad859'
+ 'f758b3e62ab77a1a6b7be12bb900cb2d'
'a4dd853050bf2e0ae6b2e3d2c75499c2'
'ee0bfe91a20fff12cc25ab1d1e024853')