Hello community,
here is the log from the commit of package udev for openSUSE:Factory
checked in at Fri Jun 4 14:50:45 CEST 2010.
--------
--- udev/udev.changes 2010-05-25 12:36:20.000000000 +0200
+++ /mounts/work_src_done/STABLE/udev/udev.changes 2010-06-02 13:49:00.000000000 +0200
@@ -1,0 +2,9 @@
+Wed Jun 2 13:45:52 CEST 2010 - kay.sievers@novell.com
+
+- Update to version 157
+ - support kernel commandline debug switches to help debugging
+ kernel module load system crashes at bootup
+ - allow to import properties from kernel commandline
+- move kms rules from tarball to package
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
udev-156.tar.bz2
New:
----
79-kms.rules
udev-157.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ udev.spec ++++++
--- /var/tmp/diff_new_pack.1Kui83/_old 2010-06-04 14:50:20.000000000 +0200
+++ /var/tmp/diff_new_pack.1Kui83/_new 2010-06-04 14:50:20.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package udev (Version 156)
+# spec file for package udev (Version 157)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
@@ -20,7 +20,7 @@
Name: udev
Url: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
-Version: 156
+Version: 157
Release: 1
License: LGPLv2.1+
Group: System/Kernel
@@ -38,6 +38,7 @@
Source0: ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/%{name}-%{version}.tar.bz2
Source1: udev-rpmlintrc
Source2: baselibs.conf
+Source10: 79-kms.rules
Source60: boot.udev
Source61: boot.udev_retry
@@ -97,10 +98,8 @@
find . -name "*.[78]" -exec touch '{}' \;
export V=1
%configure \
- --prefix=%{_prefix} \
--sysconfdir=%{_sysconfdir} \
--sbindir=/sbin \
- --libdir=%{_libdir} \
--with-rootlibdir=/%{_lib} \
--libexecdir=/lib/udev \
--docdir=%{_docdir}/udev \
@@ -114,15 +113,15 @@
rm -f $RPM_BUILD_ROOT/%{_libdir}/libgudev-1.0.la
cp -ax README $RPM_BUILD_ROOT%{_docdir}/udev
%ifarch ppc ppc64
-cp rules/packages/40-ppc.rules $RPM_BUILD_ROOT/lib/udev/rules.d/
+cp rules/arch/40-ppc.rules $RPM_BUILD_ROOT/lib/udev/rules.d/
%endif
%ifarch ia64
-cp rules/packages/40-ia64.rules $RPM_BUILD_ROOT/lib/udev/rules.d/
+cp rules/arch/40-ia64.rules $RPM_BUILD_ROOT/lib/udev/rules.d/
%endif
%ifarch s390 s390x
-cp rules/packages/40-s390.rules $RPM_BUILD_ROOT/lib/udev/rules.d/
+cp rules/arch/40-s390.rules $RPM_BUILD_ROOT/lib/udev/rules.d/
%endif
-cp rules/suse/79-kms.rules $RPM_BUILD_ROOT/lib/udev/rules.d/
+cp %{S:10} $RPM_BUILD_ROOT/lib/udev/rules.d/
install -m755 -D %{S:60} $RPM_BUILD_ROOT/etc/init.d/boot.udev
install -m755 -D %{S:61} $RPM_BUILD_ROOT/etc/init.d/boot.udev_retry
# install static device nodes (nodes are in the files section below)
@@ -178,28 +177,7 @@
/sbin/udevd
/sbin/udevadm
%dir /lib/udev/
-/lib/udev/ata_id
-/lib/udev/cdrom_id
-/lib/udev/edd_id
-/lib/udev/path_id
-/lib/udev/usb_id
-/lib/udev/input_id
-/lib/udev/scsi_id
-/lib/udev/fstab_import
-/lib/udev/create_floppy_devices
-/lib/udev/firmware
-/lib/udev/collect
-/lib/udev/write_cd_rules
-/lib/udev/write_net_rules
-/lib/udev/rule_generator.functions
-/lib/udev/v4l_id
-/lib/udev/mobile-action-modeswitch
-/lib/udev/pci-db
-/lib/udev/usb-db
-/lib/udev/udev-acl
-/lib/udev/hid2hci
-/lib/udev/keymap
-/lib/udev/findkeyboards
+/lib/udev/*
%dir /lib/udev/keymaps
/lib/udev/keymaps/*
/lib/udev/keyboard-force-release.sh
@@ -216,9 +194,7 @@
%{_mandir}/man?/*.[0-9]*
%{_datadir}/pkgconfig/udev.pc
%doc %{_docdir}/udev
-# static devices, copied to /dev at every bootup
%dir /lib/udev/devices/
-%dir /lib/udev/devices/net/
%attr(666,root,root) %dev(c,10,200) /lib/udev/devices/net/tun
%attr(660,root,root) %dev(c,108,0) /lib/udev/devices/ppp
%attr(660,root,lp) %dev(c,6,0) /lib/udev/devices/lp0
++++++ 79-kms.rules ++++++
# do not edit this file, it will be overwritten on update
ACTION=="add", SUBSYSTEM=="pci", ATTR{class}=="0x030000", ENV{MODALIAS}=""
++++++ boot.udev ++++++
--- /var/tmp/diff_new_pack.1Kui83/_old 2010-06-04 14:50:20.000000000 +0200
+++ /var/tmp/diff_new_pack.1Kui83/_new 2010-06-04 14:50:20.000000000 +0200
@@ -15,8 +15,6 @@
. /etc/rc.status
PATH="/sbin:/bin"
-DAEMON=/sbin/udevd
-udevd_args="--daemon"
udev_timeout=180
root_symlink_rule() {
@@ -40,7 +38,7 @@
# start udevd
echo -n "Starting udevd: "
- $DAEMON $udevd_args
+ /sbin/udevd --daemon
if [ $? -ne 0 ]; then
rc_status -v
rc_exit
@@ -58,13 +56,13 @@
;;
stop)
echo -n "Stopping udevd: "
- killproc $DAEMON
+ killproc /sbin/udevd
rc_status -v
;;
restart)
echo -n "Restarting udevd: "
- killproc $DAEMON
- $DAEMON $udevd_args
+ killproc /sbin/udevd
+ /sbin/udevd --daemon
rc_status -v
;;
status)
@@ -79,10 +77,10 @@
;;
force-reload)
echo -n "Restarting udev and reconfiguring all devices: "
- killproc $DAEMON
+ killproc /sbin/udevd
rm -rf /dev/.udev /dev/disk
root_symlink_rule
- $DAEMON $udevd_args
+ /sbin/udevd --daemon
/sbin/udevadm trigger --action=add
/sbin/udevadm settle --timeout=$udev_timeout
rc_status -v
++++++ udev-156.tar.bz2 -> udev-157.tar.bz2 ++++++
++++ 1670 lines of diff (skipped)
++++ retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/ChangeLog new/udev-157/ChangeLog
--- old/udev-156/ChangeLog 2010-05-25 12:20:43.000000000 +0200
+++ new/udev-157/ChangeLog 2010-06-02 13:49:41.000000000 +0200
@@ -1,3 +1,42 @@
+Summary of changes from v156 to v157
+============================================
+
+Harald Hoyer (1):
+ 40-redhat.rules: removed file
+
+Jerone Young (3):
+ Fix wlan key on Inspirion 1210
+ Fix wlan key on Inspiron 910
+ Fix wlan key on Inspiron 1010 & 1110
+
+Kay Sievers (25):
+ configure.ac: version bump
+ Makefile.am: silent build mkdir
+ rules: mount fuse control filesystem
+ fix compilation with --enable-debug
+ while (1) -> for (;;)
+ childs -> children
+ udevd: replace --debug-trace with --children-max
+ udevd: fix comments
+ rules: add -v to modprobe calls to be able see what will be loaded
+ udevd: read debug settings from kernel commandline
+ update NEWS
+ rules: delete pilot rules and remove redhat directory
+ man: add static device nodes and udevd debug options
+ man: add kernel command line parameters
+ man: udevd - update intro
+ rules: rename packages -> arch
+ rules: SUSE - move last distro rule to package
+ rules: add misc/30-kernel-compat.rules
+ make: mkdir /lib/udev/devices/
+ make: fix rules/ subdir names
+ udevd: set umask before creating files/directories
+ add IMPORT{cmdline}
+ IMPORT{cmdline}: start at first char after '='
+ libudev: doc - fix typo
+ update NEWS
+
+
Summary of changes from v155 to v156
============================================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/Makefile.am new/udev-157/Makefile.am
--- old/udev-156/Makefile.am 2010-05-25 12:14:25.000000000 +0200
+++ new/udev-157/Makefile.am 2010-05-30 15:15:15.000000000 +0200
@@ -91,11 +91,11 @@
# ------------------------------------------------------------------------------
install-data-local:
-mkdir -p $(DESTDIR)$(sysconfdir)/udev/rules.d
+ -mkdir -p $(DESTDIR)$(libexecdir)/devices
EXTRA_DIST += \
- rules/packages \
- rules/redhat \
- rules/suse \
+ rules/arch \
+ rules/misc \
rules/gentoo
udevrulesdir = $(libexecdir)/rules.d
@@ -545,7 +545,7 @@
extras/keymap/force-release-maps/common-volume-keys
extras/keymap/keys.txt: $(INCLUDE_PREFIX)/linux/input.h
- mkdir -p extras/keymap
+ $(AM_V_at)mkdir -p extras/keymap
$(AM_V_GEN)$(AWK) '/^#define.*KEY_[^ ]+[ \t]+[0-9]/ { if ($$2 != "KEY_MAX") { print $$2 } }' < $< | sed 's/^KEY_COFFEE$$/KEY_SCREENLOCK/' > $@
extras/keymap/keys-from-name.gperf: extras/keymap/keys.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/NEWS new/udev-157/NEWS
--- old/udev-156/NEWS 2010-05-25 12:21:08.000000000 +0200
+++ new/udev-157/NEWS 2010-05-31 10:59:44.000000000 +0200
@@ -1,3 +1,20 @@
+udev 157
+========
+Bugfixes.
+
+The option --debug-trace and the environemnt variable UDEVD_MAX_CHILDS=
+was removed from udevd.
+
+Udevd now checks the kernel commandline for the following variables:
+ udev.log-priority=<syslog priority>
+ udev.children-max=<maximum number of workers>
+ udev.exec-delay=
+to help debuging coldplug setups where the loading of a kernel
+module crashes the system.
+
+The subdirectory in the source tree rules/packages has been renamed to
+rules/arch, anc contains only architecture specific rules now.
+
udev 156
========
Bugfixes.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/configure.ac new/udev-157/configure.ac
--- old/udev-156/configure.ac 2010-05-25 06:50:46.000000000 +0200
+++ new/udev-157/configure.ac 2010-05-25 12:37:13.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT([udev], [156], [linux-hotplug@vger.kernel.org])
+AC_INIT([udev], [157], [linux-hotplug@vger.kernel.org])
AC_PREREQ(2.60)
AM_INIT_AUTOMAKE([check-news foreign 1.10 dist-bzip2 subdir-objects])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/extras/gudev/docs/html/index.html new/udev-157/extras/gudev/docs/html/index.html
--- old/udev-156/extras/gudev/docs/html/index.html 2010-05-25 12:24:58.000000000 +0200
+++ new/udev-157/extras/gudev/docs/html/index.html 2010-06-02 13:52:31.000000000 +0200
@@ -32,11 +32,11 @@
</p></div></div>
</div>
</div></div>
-<div><p class="releaseinfo">For GUdev version 156
+<div><p class="releaseinfo">For GUdev version 157
</p></div>
<div><p class="copyright">Copyright © 2009 The GUDev Authors</p></div>
<div><div class="legalnotice" title="Legal Notice">
-<a name="id297277"></a><p>
+<a name="id297294"></a><p>
Permission is granted to copy, distribute and/or modify this
document under the terms of the <em class="citetitle">GNU Free
Documentation License</em>, Version 1.1 or any later
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/extras/gudev/docs/html/ix01.html new/udev-157/extras/gudev/docs/html/ix01.html
--- old/udev-156/extras/gudev/docs/html/ix01.html 2010-05-25 12:24:58.000000000 +0200
+++ new/udev-157/extras/gudev/docs/html/ix01.html 2010-06-02 13:52:31.000000000 +0200
@@ -20,7 +20,7 @@
</tr></table>
<div class="index" title="Index">
<div class="titlepage"><div><div><h2 class="title">
-<a name="id296415"></a>Index</h2></div></div></div>
+<a name="id296430"></a>Index</h2></div></div></div>
<div class="index"><div class="indexdiv">
<h3>G</h3>
<dl>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/extras/gudev/docs/version.xml new/udev-157/extras/gudev/docs/version.xml
--- old/udev-156/extras/gudev/docs/version.xml 2010-05-25 12:24:20.000000000 +0200
+++ new/udev-157/extras/gudev/docs/version.xml 2010-06-02 13:50:40.000000000 +0200
@@ -1 +1 @@
-156
+157
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/extras/keymap/95-keymap.rules new/udev-157/extras/keymap/95-keymap.rules
--- old/udev-156/extras/keymap/95-keymap.rules 2010-05-07 22:41:31.000000000 +0200
+++ new/udev-157/extras/keymap/95-keymap.rules 2010-06-02 13:49:13.000000000 +0200
@@ -53,7 +53,7 @@
LABEL="keyboard_vendorcheck"
ENV{DMI_VENDOR}=="Dell*", RUN+="keymap $name dell"
-ENV{DMI_VENDOR}=="Dell*", ATTR{[dmi/id]product_name}=="Inspiron 1011", RUN+="keymap $name 0x84 wlan"
+ENV{DMI_VENDOR}=="Dell*", ATTR{[dmi/id]product_name}=="Inspiron 910|Inspiron 1010|Inspiron 1011|Inspiron 1012|Inspiron 1110|Inspiron 1210", RUN+="keymap $name 0x84 wlan"
ENV{DMI_VENDOR}=="Compaq*", ATTR{[dmi/id]product_name}=="*E500*|*Evo N*", RUN+="keymap $name compaq-e_evo"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/libudev/docs/html/ch01.html new/udev-157/libudev/docs/html/ch01.html
--- old/udev-156/libudev/docs/html/ch01.html 2010-05-25 12:24:58.000000000 +0200
+++ new/udev-157/libudev/docs/html/ch01.html 2010-06-02 13:52:30.000000000 +0200
@@ -21,7 +21,7 @@
</tr></table>
<div class="chapter" title="libudev">
<div class="titlepage"><div><div><h2 class="title">
-<a name="id334463"></a>libudev</h2></div></div></div>
+<a name="id334471"></a>libudev</h2></div></div></div>
<div class="toc"><dl>
<dt>
<span class="refentrytitle"><a href="libudev-udev.html">udev</a></span><span class="refpurpose"> — libudev context</span>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/libudev/docs/html/index.html new/udev-157/libudev/docs/html/index.html
--- old/udev-156/libudev/docs/html/index.html 2010-05-25 12:24:58.000000000 +0200
+++ new/udev-157/libudev/docs/html/index.html 2010-06-02 13:52:30.000000000 +0200
@@ -14,7 +14,7 @@
<div class="titlepage">
<div>
<div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">libudev Reference Manual</p></th></tr></table></div>
-<div><p class="releaseinfo">for libudev version 156
+<div><p class="releaseinfo">for libudev version 157
</p></div>
<div><p class="copyright">Copyright © 2009-2010 Kay Sievers <kay.sievers@vrfy.org></p></div>
</div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/libudev/docs/html/libudev-udev-queue.html new/udev-157/libudev/docs/html/libudev-udev-queue.html
--- old/udev-156/libudev/docs/html/libudev-udev-queue.html 2010-05-25 12:24:58.000000000 +0200
+++ new/udev-157/libudev/docs/html/libudev-udev-queue.html 2010-06-02 13:52:30.000000000 +0200
@@ -61,9 +61,9 @@
<div class="refsect1" title="Description">
<a name="libudev-udev-queue.description"></a><h2>Description</h2>
<p>
-The udev daemon processes event asynchronously. All events which do not have
-interdependencies are run in parallel. This exports the current state of the
-event processing queue, and the currently event sequence numbers from the kernel
+The udev daemon processes events asynchronously. All events which do not have
+interdependencies run in parallel. This exports the current state of the
+event processing queue, and the current event sequence numbers from the kernel
and the udev daemon.
</p>
</div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/libudev/docs/version.xml new/udev-157/libudev/docs/version.xml
--- old/udev-156/libudev/docs/version.xml 2010-05-25 12:24:20.000000000 +0200
+++ new/udev-157/libudev/docs/version.xml 2010-06-02 13:50:40.000000000 +0200
@@ -1 +1 @@
-156
+157
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/libudev/libudev-ctrl.c new/udev-157/libudev/libudev-ctrl.c
--- old/udev-156/libudev/libudev-ctrl.c 2009-12-03 13:45:03.000000000 +0100
+++ new/udev-157/libudev/libudev-ctrl.c 2010-05-27 17:27:41.000000000 +0200
@@ -32,8 +32,7 @@
UDEV_CTRL_START_EXEC_QUEUE,
UDEV_CTRL_RELOAD_RULES,
UDEV_CTRL_SET_ENV,
- UDEV_CTRL_SET_MAX_CHILDS,
- UDEV_CTRL_SET_MAX_CHILDS_RUNNING,
+ UDEV_CTRL_SET_CHILDREN_MAX,
UDEV_CTRL_SETTLE,
};
@@ -185,9 +184,9 @@
return ctrl_send(uctrl, UDEV_CTRL_SET_ENV, 0, key);
}
-int udev_ctrl_send_set_max_childs(struct udev_ctrl *uctrl, int count)
+int udev_ctrl_send_set_children_max(struct udev_ctrl *uctrl, int count)
{
- return ctrl_send(uctrl, UDEV_CTRL_SET_MAX_CHILDS, count, NULL);
+ return ctrl_send(uctrl, UDEV_CTRL_SET_CHILDREN_MAX, count, NULL);
}
int udev_ctrl_send_settle(struct udev_ctrl *uctrl)
@@ -306,9 +305,9 @@
return NULL;
}
-int udev_ctrl_get_set_max_childs(struct udev_ctrl_msg *ctrl_msg)
+int udev_ctrl_get_set_children_max(struct udev_ctrl_msg *ctrl_msg)
{
- if (ctrl_msg->ctrl_msg_wire.type == UDEV_CTRL_SET_MAX_CHILDS)
+ if (ctrl_msg->ctrl_msg_wire.type == UDEV_CTRL_SET_CHILDREN_MAX)
return ctrl_msg->ctrl_msg_wire.intval;
return -1;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/libudev/libudev-private.h new/udev-157/libudev/libudev-private.h
--- old/udev-156/libudev/libudev-private.h 2010-05-20 08:43:51.000000000 +0200
+++ new/udev-157/libudev/libudev-private.h 2010-05-27 17:25:20.000000000 +0200
@@ -127,7 +127,7 @@
int udev_ctrl_send_reload_rules(struct udev_ctrl *uctrl);
int udev_ctrl_send_settle(struct udev_ctrl *uctrl);
int udev_ctrl_send_set_env(struct udev_ctrl *uctrl, const char *key);
-int udev_ctrl_send_set_max_childs(struct udev_ctrl *uctrl, int count);
+int udev_ctrl_send_set_children_max(struct udev_ctrl *uctrl, int count);
struct udev_ctrl_msg;
struct udev_ctrl_msg *udev_ctrl_msg(struct udev_ctrl *uctrl);
struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl *uctrl);
@@ -139,7 +139,7 @@
int udev_ctrl_get_reload_rules(struct udev_ctrl_msg *ctrl_msg);
pid_t udev_ctrl_get_settle(struct udev_ctrl_msg *ctrl_msg);
const char *udev_ctrl_get_set_env(struct udev_ctrl_msg *ctrl_msg);
-int udev_ctrl_get_set_max_childs(struct udev_ctrl_msg *ctrl_msg);
+int udev_ctrl_get_set_children_max(struct udev_ctrl_msg *ctrl_msg);
/* libudev-list.c */
struct udev_list_node {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/libudev/libudev-queue.c new/udev-157/libudev/libudev-queue.c
--- old/udev-156/libudev/libudev-queue.c 2010-05-25 12:01:45.000000000 +0200
+++ new/udev-157/libudev/libudev-queue.c 2010-05-31 11:16:02.000000000 +0200
@@ -28,9 +28,9 @@
* SECTION:libudev-queue
* @short_description: access to currently active events
*
- * The udev daemon processes event asynchronously. All events which do not have
- * interdependencies are run in parallel. This exports the current state of the
- * event processing queue, and the currently event sequence numbers from the kernel
+ * The udev daemon processes events asynchronously. All events which do not have
+ * interdependencies run in parallel. This exports the current state of the
+ * event processing queue, and the current event sequence numbers from the kernel
* and the udev daemon.
*/
@@ -243,7 +243,7 @@
if (queue_file == NULL)
return 0;
- while (1) {
+ for (;;) {
unsigned long long int seqnum;
ssize_t devpath_len;
@@ -435,7 +435,7 @@
if (queue_file == NULL)
return NULL;
- while (1) {
+ for (;;) {
char syspath[UTIL_PATH_SIZE];
char *s;
size_t l;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/libudev/libudev-util-private.c new/udev-157/libudev/libudev-util-private.c
--- old/udev-156/libudev/libudev-util-private.c 2010-05-20 08:24:28.000000000 +0200
+++ new/udev-157/libudev/libudev-util-private.c 2010-05-27 17:27:41.000000000 +0200
@@ -84,7 +84,7 @@
if (pos == p || pos == NULL)
return 0;
- while (1) {
+ for (;;) {
*pos = '\0';
pos = strrchr(p, '/');
@@ -454,7 +454,7 @@
if (errpipe[READ_END] > 0)
close(errpipe[READ_END]);
- /* return the childs stdout string */
+ /* return the child's stdout string */
if (result) {
result[respos] = '\0';
dbg(udev, "result='%s'\n", result);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/libudev/libudev-util.c new/udev-157/libudev/libudev-util.c
--- old/udev-156/libudev/libudev-util.c 2010-04-22 17:52:41.000000000 +0200
+++ new/udev-157/libudev/libudev-util.c 2010-05-28 12:07:13.000000000 +0200
@@ -87,13 +87,13 @@
int prio;
prio = strtol(priority, &endptr, 10);
- if (endptr[0] == '\0')
+ if (endptr[0] == '\0' || isspace(endptr[0]))
return prio;
if (strncmp(priority, "err", 3) == 0)
return LOG_ERR;
- if (strcmp(priority, "info") == 0)
+ if (strncmp(priority, "info", 4) == 0)
return LOG_INFO;
- if (strcmp(priority, "debug") == 0)
+ if (strncmp(priority, "debug", 5) == 0)
return LOG_DEBUG;
return 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/libudev/test-libudev.c new/udev-157/libudev/test-libudev.c
--- old/udev-156/libudev/test-libudev.c 2009-12-03 13:45:03.000000000 +0100
+++ new/udev-157/libudev/test-libudev.c 2010-05-27 15:10:26.000000000 +0200
@@ -242,7 +242,7 @@
fd = udev_monitor_get_fd(udev_monitor);
FD_ZERO(&readfds);
- while (1) {
+ for (;;) {
struct udev_device *device;
int fdcount;
@@ -422,7 +422,7 @@
udev_set_log_fn(udev, log_fn);
printf("set log: %p\n", log_fn);
- while (1) {
+ for (;;) {
int option;
option = getopt_long(argc, argv, "+dhV", options, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/arch/40-ia64.rules new/udev-157/rules/arch/40-ia64.rules
--- old/udev-156/rules/arch/40-ia64.rules 1970-01-01 01:00:00.000000000 +0100
+++ new/udev-157/rules/arch/40-ia64.rules 2009-12-03 13:45:03.000000000 +0100
@@ -0,0 +1,4 @@
+# do not edit this file, it will be overwritten on update
+
+KERNEL=="sgi_*", MODE="0666"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/arch/40-ppc.rules new/udev-157/rules/arch/40-ppc.rules
--- old/udev-156/rules/arch/40-ppc.rules 1970-01-01 01:00:00.000000000 +0100
+++ new/udev-157/rules/arch/40-ppc.rules 2009-12-03 13:45:03.000000000 +0100
@@ -0,0 +1,6 @@
+# do not edit this file, it will be overwritten on update
+
+KERNEL=="iseries/ibmsis*", GROUP="disk"
+KERNEL=="iseries/nvt*", GROUP="disk"
+KERNEL=="iseries/vt*", GROUP="disk"
+KERNEL=="iseries/vtty*, GROUP="dialout"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/arch/40-s390.rules new/udev-157/rules/arch/40-s390.rules
--- old/udev-156/rules/arch/40-s390.rules 1970-01-01 01:00:00.000000000 +0100
+++ new/udev-157/rules/arch/40-s390.rules 2009-12-03 13:45:03.000000000 +0100
@@ -0,0 +1,4 @@
+# do not edit this file, it will be overwritten on update
+
+KERNEL=="z90crypt", MODE="0666"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/misc/30-kernel-compat.rules new/udev-157/rules/misc/30-kernel-compat.rules
--- old/udev-156/rules/misc/30-kernel-compat.rules 1970-01-01 01:00:00.000000000 +0100
+++ new/udev-157/rules/misc/30-kernel-compat.rules 2010-05-30 15:03:30.000000000 +0200
@@ -0,0 +1,100 @@
+# do not edit this file, it will be overwritten on update
+
+# Rules to support older kernels, which migth miss functionality needed
+# for the recent udev version.
+#
+# This file is used and maintained by Gentoo.
+
+ACTION=="remove", GOTO="kernel_compat_end"
+
+#
+# sysfs timing rules
+#
+
+# needed for kernels <2.6.30
+SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", WAIT_FOR_SYSFS="descriptors"
+
+#
+# naming device rules
+#
+
+# dvb device naming
+# needed for kernels <2.6.29-rc1
+SUBSYSTEM=="dvb", ENV{DVB_ADAPTER_NUM}=="", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}'", NAME="%c", GROUP="video"
+
+# naming rules for kernels <2.6.31
+
+# alsa names
+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"
+
+KERNEL=="mwave", NAME="modems/mwave"
+
+KERNEL=="mouse*|mice|event*", NAME="input/%k"
+KERNEL=="ts[0-9]*|uinput", NAME="input/%k"
+KERNEL=="js[0-9]*", NAME="input/%k"
+
+KERNEL=="card[0-9]*", NAME="dri/%k"
+
+SUBSYSTEM=="dvb", ENV{DVB_ADAPTER_NUM}=="?*", NAME="dvb/adapter$env{DVB_ADAPTER_NUM}/$env{DVB_DEVICE_TYPE}$env{DVB_DEVICE_NUM}"
+
+# libusb device nodes
+SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"
+
+# printer
+SUBSYSTEM=="usb", KERNEL=="lp*", NAME="usb/%k"
+
+# block
+KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%k"
+KERNEL=="pktcdvd", NAME="pktcdvd/control"
+
+KERNEL=="rawctl", NAME="raw/rawctl"
+SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", NAME="raw/%k"
+SUBSYSTEM=="bsg", NAME="bsg/%k"
+SUBSYSTEM=="aoe", NAME="etherd/%k"
+
+# network
+KERNEL=="tun", NAME="net/%k"
+
+# CPU
+KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
+KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
+KERNEL=="microcode", NAME="cpu/microcode", MODE="0600"
+
+# miscellaneous
+KERNEL=="auer[0-9]*", NAME="usb/%k"
+KERNEL=="hw_random", NAME="hwrng"
+KERNEL=="sxctl", NAME="specialix_sxctl"
+KERNEL=="rioctl", NAME="specialix_rioctl"
+KERNEL=="iowarrior[0-9]*", NAME="usb/%k"
+KERNEL=="hiddev[0-9]*", NAME="usb/%k"
+KERNEL=="legousbtower[0-9]*", NAME="usb/%k"
+KERNEL=="dabusb[0-9]*", NAME="usb/%k"
+KERNEL=="usbdpfp[0-9]*", NAME="usb/%k"
+KERNEL=="cpad[0-9]*", NAME="usb/%k"
+
+# end of naming rules for kernel <2.6.31
+
+
+#
+# module loading rules
+#
+ACTION!="add", GOTO="kernel_compat_end"
+
+# No need for more code, as MODALIAS is present
+ENV{MODALIAS}=="?*", GOTO="kernel_compat_end"
+
+# needed for kernel <2.6.30-rc1
+SUBSYSTEM=="scsi", ATTR{type}=="8", RUN+="/sbin/modprobe -b ch"
+SUBSYSTEM=="mmc", RUN+="/sbin/modprobe -b mmc_block"
+
+# needed for kernel <2.6.27-rc5
+# acpi will do on newer kernels
+SUBSYSTEM=="pnp", DRIVER!="?*", \
+ RUN{ignore_error}+="/bin/sh -c '/sbin/modprobe -a $$(while read id; do echo pnp:d$$id; done < /sys$devpath/id)'"
+
+LABEL="kernel_compat_end"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/packages/40-ia64.rules new/udev-157/rules/packages/40-ia64.rules
--- old/udev-156/rules/packages/40-ia64.rules 2009-12-03 13:45:03.000000000 +0100
+++ new/udev-157/rules/packages/40-ia64.rules 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-# do not edit this file, it will be overwritten on update
-
-KERNEL=="sgi_*", MODE="0666"
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/packages/40-pilot-links.rules new/udev-157/rules/packages/40-pilot-links.rules
--- old/udev-156/rules/packages/40-pilot-links.rules 2009-12-03 13:45:03.000000000 +0100
+++ new/udev-157/rules/packages/40-pilot-links.rules 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-# do not edit this file, it will be overwritten on update
-
-KERNEL=="ttyUSB*", ATTRS{product}=="[Hh]andspring*Treo*|[Hh]andspring*Visor*|[Pp]alm*Handheld*", SYMLINK+="pilot"
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/packages/40-ppc.rules new/udev-157/rules/packages/40-ppc.rules
--- old/udev-156/rules/packages/40-ppc.rules 2009-12-03 13:45:03.000000000 +0100
+++ new/udev-157/rules/packages/40-ppc.rules 1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +0,0 @@
-# do not edit this file, it will be overwritten on update
-
-KERNEL=="iseries/ibmsis*", GROUP="disk"
-KERNEL=="iseries/nvt*", GROUP="disk"
-KERNEL=="iseries/vt*", GROUP="disk"
-KERNEL=="iseries/vtty*, GROUP="dialout"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/packages/40-s390.rules new/udev-157/rules/packages/40-s390.rules
--- old/udev-156/rules/packages/40-s390.rules 2009-12-03 13:45:03.000000000 +0100
+++ new/udev-157/rules/packages/40-s390.rules 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-# do not edit this file, it will be overwritten on update
-
-KERNEL=="z90crypt", MODE="0666"
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/redhat/40-redhat.rules new/udev-157/rules/redhat/40-redhat.rules
--- old/udev-156/rules/redhat/40-redhat.rules 2009-12-03 13:45:03.000000000 +0100
+++ new/udev-157/rules/redhat/40-redhat.rules 1970-01-01 01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
-# do not edit this file, it will be overwritten on update
-
-KERNEL=="hd*[!0-9]", SUBSYSTEMS=="ide", ATTRS{media}=="floppy", SYMLINK+="floppy floppy-%k", OPTIONS+="ignore_remove"
-KERNEL=="hd*[0-9]", ATTRS{media}=="floppy", ATTRS{removable}=="1", SYMLINK+="floppy-%k", OPTIONS+="ignore_remove"
-
-KERNEL=="fw*", PROGRAM="fw_unit_symlinks.sh %k %n", SYMLINK+="$result"
-
-ACTION=="add", KERNEL=="sg[0-9]*", BUS=="scsi", ATTRS{type}=="3|6", SYMLINK+="scanner scanner-%k", MODE="0660"
-
-ACTION=="add", KERNEL=="sg[0-9]*", BUS=="scsi", ATTRS{type}=="8", SYMLINK+="changer changer-%k", MODE="0660", GROUP="disk"
-
-BUS=="usb", KERNEL=="sd*", ATTRS{bInterfaceClass}=="08", ATTRS{bInterfaceSubClass}=="04", GROUP="floppy", MODE="0660", SYMLINK+="floppy floppy-%k"
-
-KERNEL=="fd[0-9]*", SYMLINK+="floppy floppy-%k"
-
-ACTION=="add", SUBSYSTEM=="scsi_device", ATTRS{type}=="0|7|14", \
- RUN+="/sbin/modprobe sd_mod"
-ACTION=="add", SUBSYSTEM=="scsi_device", ATTRS{type}=="[45]", \
- RUN+="/sbin/modprobe sr_mod"
-
-KERNEL=="vcs", OWNER="vcsa", GROUP="tty"
-KERNEL=="vcs[0-9]*", OWNER="vcsa", GROUP="tty"
-KERNEL=="vcsa", OWNER="vcsa", GROUP="tty"
-KERNEL=="vcsa[0-9]*", OWNER="vcsa", GROUP="tty"
-KERNEL=="vcc/*", OWNER="vcsa", GROUP="tty"
-
-KERNEL=="event*", ATTRS{idVendor}=="03f0", ATTRS{interface}=="Virtual Mouse", ATTRS{bInterfaceProtocol}=="02", SYMLINK+="input/hp_ilo_mouse"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/rules.d/50-udev-default.rules new/udev-157/rules/rules.d/50-udev-default.rules
--- old/udev-156/rules/rules.d/50-udev-default.rules 2010-05-20 15:34:43.000000000 +0200
+++ new/udev-157/rules/rules.d/50-udev-default.rules 2010-05-25 14:43:05.000000000 +0200
@@ -104,8 +104,9 @@
# CPU
KERNEL=="cpu[0-9]*", MODE="0444"
-# miscellaneous
-KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse"
+KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse" \
+ RUN+="/bin/mount -t fusectl fusectl /sys/fs/fuse/connections"
+
SUBSYSTEM=="rtc", DRIVERS=="rtc_cmos", SYMLINK+="rtc"
KERNEL=="mmtimer", MODE="0644"
KERNEL=="rflash[0-9]*", MODE="0400"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/rules.d/80-drivers.rules new/udev-157/rules/rules.d/80-drivers.rules
--- old/udev-156/rules/rules.d/80-drivers.rules 2010-04-13 12:20:55.000000000 +0200
+++ new/udev-157/rules/rules.d/80-drivers.rules 2010-05-27 18:51:51.000000000 +0200
@@ -2,12 +2,12 @@
ACTION=="remove", GOTO="drivers_end"
-DRIVER!="?*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe -b $env{MODALIAS}"
-SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN+="/sbin/modprobe -b tifm_sd"
-SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN+="/sbin/modprobe -b tifm_ms"
-SUBSYSTEM=="memstick", RUN+="/sbin/modprobe -b --all ms_block mspro_block"
-SUBSYSTEM=="i2o", RUN+="/sbin/modprobe -b i2o_block"
-SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe -b sg"
-SUBSYSTEM=="module", KERNEL=="parport_pc", RUN+="/sbin/modprobe -b ppdev"
+DRIVER!="?*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe -bv $env{MODALIAS}"
+SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN+="/sbin/modprobe -bv tifm_sd"
+SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN+="/sbin/modprobe -bv tifm_ms"
+SUBSYSTEM=="memstick", RUN+="/sbin/modprobe -bv --all ms_block mspro_block"
+SUBSYSTEM=="i2o", RUN+="/sbin/modprobe -bv i2o_block"
+SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe -bv sg"
+SUBSYSTEM=="module", KERNEL=="parport_pc", RUN+="/sbin/modprobe -bv ppdev"
LABEL="drivers_end"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/rules/suse/79-kms.rules new/udev-157/rules/suse/79-kms.rules
--- old/udev-156/rules/suse/79-kms.rules 2010-01-21 11:38:04.000000000 +0100
+++ new/udev-157/rules/suse/79-kms.rules 1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +0,0 @@
-# do not edit this file, it will be overwritten on update
-
-ACTION=="add", SUBSYSTEM=="pci", ATTR{class}=="0x030000", ENV{MODALIAS}=""
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udev-event.c new/udev-157/udev/udev-event.c
--- old/udev-156/udev/udev-event.c 2010-05-20 14:45:53.000000000 +0200
+++ new/udev-157/udev/udev-event.c 2010-05-28 12:07:13.000000000 +0200
@@ -111,7 +111,7 @@
s = dest;
l = size;
- while (1) {
+ for (;;) {
enum subst_type type = SUBST_UNKNOWN;
char attrbuf[UTIL_PATH_SIZE];
char *attr = NULL;
@@ -681,6 +681,10 @@
udev_event_apply_format(event, cmd, program, sizeof(program));
envp = udev_device_get_properties_envp(event->dev);
+ if (event->exec_delay > 0) {
+ info(event->udev, "delay execution of '%s'\n", program);
+ sleep(event->exec_delay);
+ }
if (util_run_program(event->udev, program, envp, NULL, 0, NULL, sigmask, true) != 0) {
if (udev_list_entry_get_flags(list_entry))
err = -1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udev-rules.c new/udev-157/udev/udev-rules.c
--- old/udev-156/udev/udev-rules.c 2010-05-20 17:07:36.000000000 +0200
+++ new/udev-157/udev/udev-rules.c 2010-05-31 10:10:59.000000000 +0200
@@ -143,6 +143,7 @@
TK_M_IMPORT_FILE, /* val */
TK_M_IMPORT_PROG, /* val */
TK_M_IMPORT_DB, /* val */
+ TK_M_IMPORT_CMDLINE, /* val */
TK_M_IMPORT_PARENT, /* val */
TK_M_RESULT, /* val */
TK_M_MAX,
@@ -276,6 +277,7 @@
[TK_M_IMPORT_FILE] = "M IMPORT_FILE",
[TK_M_IMPORT_PROG] = "M IMPORT_PROG",
[TK_M_IMPORT_DB] = "M IMPORT_DB",
+ [TK_M_IMPORT_CMDLINE] = "M IMPORT_CMDLINE",
[TK_M_IMPORT_PARENT] = "M IMPORT_PARENT",
[TK_M_RESULT] = "M RESULT",
[TK_M_MAX] = "M MAX",
@@ -321,11 +323,10 @@
const char *tk_ptr = (char *)token;
unsigned int idx = (tk_ptr - tks_ptr) / sizeof(struct token);
- dbg(rules->udev, "* RULE %s:%u, token: %u, count: %u, label: '%s', flags: 0x%02x\n",
+ dbg(rules->udev, "* RULE %s:%u, token: %u, count: %u, label: '%s'\n",
&rules->buf[token->rule.filename_off], token->rule.filename_line,
idx, token->rule.token_count,
- &rules->buf[token->rule.label_off],
- token->rule.flags);
+ &rules->buf[token->rule.label_off]);
break;
}
case TK_M_ACTION:
@@ -343,6 +344,7 @@
case TK_M_IMPORT_FILE:
case TK_M_IMPORT_PROG:
case TK_M_IMPORT_DB:
+ case TK_M_IMPORT_CMDLINE:
case TK_M_IMPORT_PARENT:
case TK_M_RESULT:
case TK_A_NAME:
@@ -895,7 +897,7 @@
return -1;
*key = linepos;
- while (1) {
+ for (;;) {
linepos++;
if (linepos[0] == '\0')
return -1;
@@ -1011,6 +1013,7 @@
case TK_M_IMPORT_FILE:
case TK_M_IMPORT_PROG:
case TK_M_IMPORT_DB:
+ case TK_M_IMPORT_CMDLINE:
case TK_M_IMPORT_PARENT:
case TK_M_RESULT:
case TK_A_OWNER:
@@ -1181,7 +1184,7 @@
rule_tmp.rule.rule.filename_line = lineno;
linepos = line;
- while (1) {
+ for (;;) {
char *key;
char *value;
enum operation_type op;
@@ -1403,6 +1406,9 @@
} else if (attr != NULL && strstr(attr, "db")) {
dbg(rules->udev, "IMPORT will include db values\n");
rule_add_key(&rule_tmp, TK_M_IMPORT_DB, op, value, NULL);
+ } else if (attr != NULL && strstr(attr, "cmdline")) {
+ dbg(rules->udev, "IMPORT will include db values\n");
+ rule_add_key(&rule_tmp, TK_M_IMPORT_CMDLINE, op, value, NULL);
} else if (attr != NULL && strstr(attr, "parent")) {
dbg(rules->udev, "IMPORT will include the parent values\n");
rule_add_key(&rule_tmp, TK_M_IMPORT_PARENT, op, value, NULL);
@@ -1708,7 +1714,7 @@
return -1;
}
- while (1) {
+ for (;;) {
struct dirent *dent;
dent = readdir(dir);
@@ -1941,7 +1947,7 @@
split = &rules->buf[token->key.value_off];
len = strlen(val);
- while (1) {
+ for (;;) {
const char *next;
next = strchr(split, '|');
@@ -2183,7 +2189,7 @@
/* loop over parents */
event->dev_parent = event->dev;
- while (1) {
+ for (;;) {
struct token *key;
dbg(event->udev, "parent: '%s'\n", udev_device_get_syspath(event->dev_parent));
@@ -2330,6 +2336,49 @@
}
break;
}
+ case TK_M_IMPORT_CMDLINE:
+ {
+ FILE *f;
+ bool imported = false;
+
+ f = fopen("/proc/cmdline", "r");
+ if (f != NULL) {
+ char cmdline[4096];
+
+ if (fgets(cmdline, sizeof(cmdline), f) != NULL) {
+ const char *key = &rules->buf[cur->key.value_off];
+ char *pos;
+
+ pos = strstr(cmdline, key);
+ if (pos != NULL) {
+ struct udev_list_entry *entry;
+
+ pos += strlen(key);
+ if (pos[0] == '\0' || isspace(pos[0])) {
+ /* we import simple flags as 'FLAG=1' */
+ entry = udev_device_add_property(event->dev, key, "1");
+ udev_list_entry_set_flags(entry, 1);
+ imported = true;
+ } else if (pos[0] == '=') {
+ const char *value;
+
+ pos++;
+ value = pos;
+ while (pos[0] != '\0' && !isspace(pos[0]))
+ pos++;
+ pos[0] = '\0';
+ entry = udev_device_add_property(event->dev, key, value);
+ udev_list_entry_set_flags(entry, 1);
+ imported = true;
+ }
+ }
+ }
+ fclose(f);
+ }
+ if (!imported && cur->key.op != OP_NOMATCH)
+ goto nomatch;
+ break;
+ }
case TK_M_IMPORT_PARENT:
{
char import[UTIL_PATH_SIZE];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udev.7 new/udev-157/udev/udev.7
--- old/udev-156/udev/udev.7 2010-05-25 12:24:28.000000000 +0200
+++ new/udev-157/udev/udev.7 2010-06-02 13:51:33.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: udev
.\" Author: [see the "Author" section]
.\" Generator: DocBook XSL Stylesheets v1.75.2 http://docbook.sf.net/
-.\" Date: 05/25/2010
+.\" Date: 06/02/2010
.\" Manual: udev
.\" Source: udev
.\" Language: English
.\"
-.TH "UDEV" "7" "05/25/2010" "udev" "udev"
+.TH "UDEV" "7" "06/02/2010" "udev" "udev"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
@@ -279,6 +279,11 @@
Import a single property specified as the assigned value from the current device database\&. This works only if the database is already populated by an earlier event\&.
.RE
.PP
+\fBcmdline\fR
+.RS 4
+Import a single property from the kernel commandline\&. For simple flags the value of the property will be set to \'1\'\&.
+.RE
+.PP
\fBparent\fR
.RS 4
Import the stored keys from the parent device by reading the database entry of the parent device\&. The value assigned to
@@ -317,6 +322,12 @@
Usually control and other possibly unsafe characters are replaced in strings used for device naming\&. The mode of replacement can be specified with this option\&.
.RE
.PP
+\fBstatic_node=\fR
+.RS 4
+Apply the permissions specified in this rule to a static device node with the specified name\&. Static device nodes might be provided by kernel modules, or copied from
+/lib/udev/devices\&. These nodes might not have a corresponding kernel device at the time udevd is started, and allow to trigger automatic kernel module on\-demand loading\&.
+.RE
+.PP
\fBwatch\fR
.RS 4
Watch the device node with inotify, when closed after being opened for writing, a change uevent will be synthesised\&.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udev.h new/udev-157/udev/udev.h
--- old/udev-156/udev/udev.h 2010-05-20 16:46:10.000000000 +0200
+++ new/udev-157/udev/udev.h 2010-05-28 12:01:00.000000000 +0200
@@ -43,6 +43,7 @@
uid_t uid;
gid_t gid;
struct udev_list_node run_list;
+ int exec_delay;
bool group_final;
bool owner_final;
bool mode_final;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udev.xml new/udev-157/udev/udev.xml
--- old/udev-156/udev/udev.xml 2010-05-24 16:59:22.000000000 +0200
+++ new/udev-157/udev/udev.xml 2010-05-31 01:12:37.000000000 +0200
@@ -438,6 +438,13 @@
</listitem>
</varlistentry>
<varlistentry>
+ <term><option>cmdline</option></term>
+ <listitem>
+ <para>Import a single property from the kernel commandline. For simple flags
+ the value of the property will be set to '1'.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term><option>parent</option></term>
<listitem>
<para>Import the stored keys from the parent device by reading
@@ -490,6 +497,16 @@
</listitem>
</varlistentry>
<varlistentry>
+ <term><option>static_node=</option></term>
+ <listitem>
+ <para>Apply the permissions specified in this rule to a static device node with
+ the specified name. Static device nodes might be provided by kernel modules,
+ or copied from <filename>/lib/udev/devices</filename>. These nodes might not have
+ a corresponding kernel device at the time udevd is started, and allow to trigger
+ automatic kernel module on-demand loading.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term><option>watch</option></term>
<listitem>
<para>Watch the device node with inotify, when closed after being opened for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevadm-control.c new/udev-157/udev/udevadm-control.c
--- old/udev-156/udev/udevadm-control.c 2009-12-03 13:45:05.000000000 +0100
+++ new/udev-157/udev/udevadm-control.c 2010-05-27 17:27:41.000000000 +0200
@@ -35,7 +35,7 @@
" --start-exec-queue execute events, flush queue\n"
" --reload-rules reloads the rules files\n"
" --property=<KEY>=<value> set a global property for all events\n"
- " --max-childs=<N> maximum number of childs\n"
+ " --children-max=<N> maximum number of children\n"
" --help print this help text\n\n");
}
@@ -52,7 +52,7 @@
{ "reload-rules", no_argument, NULL, 'R' },
{ "property", required_argument, NULL, 'p' },
{ "env", required_argument, NULL, 'p' },
- { "max-childs", required_argument, NULL, 'm' },
+ { "children-max", required_argument, NULL, 'm' },
{ "help", no_argument, NULL, 'h' },
{}
};
@@ -66,7 +66,7 @@
if (uctrl == NULL)
return 2;
- while (1) {
+ for (;;) {
int option;
int i;
char *endp;
@@ -121,7 +121,7 @@
fprintf(stderr, "invalid number '%s'\n", optarg);
goto exit;
}
- if (udev_ctrl_send_set_max_childs(uctrl, i) < 0)
+ if (udev_ctrl_send_set_children_max(uctrl, i) < 0)
rc = 2;
else
rc = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevadm-info.c new/udev-157/udev/udevadm-info.c
--- old/udev-156/udev/udevadm-info.c 2010-04-22 06:24:47.000000000 +0200
+++ new/udev-157/udev/udevadm-info.c 2010-05-27 15:10:26.000000000 +0200
@@ -238,7 +238,7 @@
QUERY_ALL,
} query = QUERY_NONE;
- while (1) {
+ for (;;) {
int option;
struct stat statbuf;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevadm-monitor.c new/udev-157/udev/udevadm-monitor.c
--- old/udev-156/udev/udevadm-monitor.c 2010-04-22 17:52:41.000000000 +0200
+++ new/udev-157/udev/udevadm-monitor.c 2010-05-27 15:10:26.000000000 +0200
@@ -92,7 +92,7 @@
udev_list_init(&subsystem_match_list);
udev_list_init(&tag_match_list);
- while (1) {
+ for (;;) {
option = getopt_long(argc, argv, "pekus:t:h", options, NULL);
if (option == -1)
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevadm-settle.c new/udev-157/udev/udevadm-settle.c
--- old/udev-156/udev/udevadm-settle.c 2009-12-03 13:45:05.000000000 +0100
+++ new/udev-157/udev/udevadm-settle.c 2010-05-27 15:10:26.000000000 +0200
@@ -84,7 +84,7 @@
sigaddset(&mask, SIGALRM);
sigprocmask(SIG_UNBLOCK, &mask, NULL);
- while (1) {
+ for (;;) {
int option;
int seconds;
@@ -181,7 +181,7 @@
}
}
- while (1) {
+ for (;;) {
struct stat statbuf;
const struct timespec duration = { 0 , 1000 * 1000 * 1000 / LOOP_PER_SECOND };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevadm-test.c new/udev-157/udev/udevadm-test.c
--- old/udev-156/udev/udevadm-test.c 2009-12-25 15:13:39.000000000 +0100
+++ new/udev-157/udev/udevadm-test.c 2010-05-27 15:10:26.000000000 +0200
@@ -50,7 +50,7 @@
info(udev, "version %s\n", VERSION);
- while (1) {
+ for (;;) {
int option;
option = getopt_long(argc, argv, "a:s:fh", options, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevadm-trigger.c new/udev-157/udev/udevadm-trigger.c
--- old/udev-156/udev/udevadm-trigger.c 2010-05-14 14:39:29.000000000 +0200
+++ new/udev-157/udev/udevadm-trigger.c 2010-05-27 15:10:26.000000000 +0200
@@ -122,7 +122,7 @@
goto exit;
}
- while (1) {
+ for (;;) {
int option;
const char *key;
const char *val;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevadm.8 new/udev-157/udev/udevadm.8
--- old/udev-156/udev/udevadm.8 2010-05-25 12:24:28.000000000 +0200
+++ new/udev-157/udev/udevadm.8 2010-06-02 13:51:33.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: udevadm
.\" Author: [see the "Author" section]
.\" Generator: DocBook XSL Stylesheets v1.75.2 http://docbook.sf.net/
-.\" Date: 05/25/2010
+.\" Date: 06/02/2010
.\" Manual: udevadm
.\" Source: udev
.\" Language: English
.\"
-.TH "UDEVADM" "8" "05/25/2010" "udev" "udevadm"
+.TH "UDEVADM" "8" "06/02/2010" "udev" "udevadm"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
@@ -245,7 +245,7 @@
Set a global property for all events\&.
.RE
.PP
-\fB\-\-max\-childs=\fR\fIvalue\fR
+\fB\-\-children\-max=\fR\fIvalue\fR
.RS 4
Set the maximum number of events, udevd will handle at the same time\&.
.RE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevadm.c new/udev-157/udev/udevadm.c
--- old/udev-156/udev/udevadm.c 2009-12-25 16:09:53.000000000 +0100
+++ new/udev-157/udev/udevadm.c 2010-05-27 15:10:26.000000000 +0200
@@ -146,7 +146,7 @@
udev_set_log_fn(udev, log_fn);
udev_selinux_init(udev);
- while (1) {
+ for (;;) {
int option;
option = getopt_long(argc, argv, "+dhV", options, NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevadm.xml new/udev-157/udev/udevadm.xml
--- old/udev-156/udev/udevadm.xml 2010-05-24 16:57:42.000000000 +0200
+++ new/udev-157/udev/udevadm.xml 2010-05-27 17:25:20.000000000 +0200
@@ -315,7 +315,7 @@
</listitem>
</varlistentry>
<varlistentry>
- <term><option>--max-childs=</option><replaceable>value</replaceable></term>
+ <term><option>--children-max=</option><replaceable>value</replaceable></term>
<listitem>
<para>Set the maximum number of events, udevd will handle at the
same time.</para>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevd.8 new/udev-157/udev/udevd.8
--- old/udev-156/udev/udevd.8 2010-05-25 12:24:28.000000000 +0200
+++ new/udev-157/udev/udevd.8 2010-06-02 13:51:32.000000000 +0200
@@ -2,12 +2,12 @@
.\" Title: udevd
.\" Author: [see the "Author" section]
.\" Generator: DocBook XSL Stylesheets v1.75.2 http://docbook.sf.net/
-.\" Date: 05/25/2010
+.\" Date: 06/02/2010
.\" Manual: udevd
.\" Source: udev
.\" Language: English
.\"
-.TH "UDEVD" "8" "05/25/2010" "udev" "udevd"
+.TH "UDEVD" "8" "06/02/2010" "udev" "udevd"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
@@ -22,10 +22,18 @@
udevd \- event managing daemon
.SH "SYNOPSIS"
.HP \w'\fBudevd\fR\ 'u
-\fBudevd\fR [\fB\-\-daemon\fR] [\fB\-\-debug\-trace\fR] [\fB\-\-debug\fR] [\fB\-\-version\fR] [\fB\-\-resolve\-names=early|late|never\fR] [\fB\-\-help\fR]
+\fBudevd\fR [\fB\-\-daemon\fR] [\fB\-\-debug\fR] [\fB\-\-children\-max=\fR] [\fB\-\-exec\-delay=\fR] [\fB\-\-resolve\-names=early|late|never\fR] [\fB\-\-version\fR] [\fB\-\-help\fR]
.SH "DESCRIPTION"
.PP
-udevd listens to kernel uevents and passes the incoming events to udev\&. It ensures the correct event order and takes care, that events for child devices are delayed until the parent event has finished the device handling\&. The behavior of the running daemon can be changed with
+udevd listens to kernel uevents\&. For every event, udevd executes matching instructions specified in udev rules\&. See
+\fBudev\fR(7)\&.
+.PP
+On startup the content of the directory
+/lib/udev/devices
+is copied to
+/dev\&. If kernel modules specify static device nodes, these nodes are created even wihtout a corresponding kernel device, to allow on\-demand loading of kernel modules\&. Matching permissions specified in udev rules are applied to these static device nodes\&.
+.PP
+The behavior of the running daemon can be changed with
\fBudevadm control\fR\&.
.SH "OPTIONS"
.PP
@@ -34,17 +42,22 @@
Detach and run in the background\&.
.RE
.PP
-\fB\-\-debug\-trace\fR
+\fB\-\-debug\fR
.RS 4
-Run all events completely serialized\&. This may be useful if udev triggers actions or loads kernel modules which cause problems and a slow but continuous operation is needed, where no events are processed in parallel\&.
+Print debug messages to stderr\&.
.RE
.PP
-\fB\-\-debug\fR
+\fB\-\-children\-max=\fR
.RS 4
-Print debug messages to stderr\&.
+Limit the number of parallel executed events\&.
+.RE
+.PP
+\fB\-\-exec\-delay=\fR
+.RS 4
+Number of seconds to delay the execution of RUN instructions\&. This might be useful when debugging system crashes during coldplug cause by loading non\-working kernel modules\&.
.RE
.PP
-\fB\-\-resolve\-names\fR
+\fB\-\-resolve\-names=\fR
.RS 4
Specify when udevd should resolve names of users and groups\&. When set to
\fBearly\fR
@@ -66,9 +79,25 @@
.RE
.SH "ENVIRONMENT"
.PP
-\fBUDEV_LOG\fR
+\fIUDEV_LOG=\fR
+.RS 4
+Set the logging priority\&.
+.RE
+.SH "KERNEL COMMAND LINE"
+.PP
+\fIudev\&.log\-priority=\fR
+.RS 4
+Set the logging priority\&.
+.RE
+.PP
+\fIudev\&.children\-max=\fR
+.RS 4
+Limit the number of parallel executed events\&.
+.RE
+.PP
+\fIudev\&.exec\-delay=\fR
.RS 4
-Overrides the syslog priority specified in the config file\&.
+Number of seconds to delay the execution of RUN instructions\&. This might be useful when debugging system crashes during coldplug cause by loading non\-working kernel modules\&.
.RE
.SH "AUTHOR"
.PP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevd.c new/udev-157/udev/udevd.c
--- old/udev-156/udev/udevd.c 2010-05-25 06:55:38.000000000 +0200
+++ new/udev-157/udev/udevd.c 2010-05-30 23:42:47.000000000 +0200
@@ -69,7 +69,6 @@
}
}
-static bool debug_trace;
static struct udev_rules *rules;
static struct udev_queue_export *udev_queue_export;
static struct udev_ctrl *udev_ctrl;
@@ -78,8 +77,9 @@
static pid_t settle_pid;
static bool stop_exec_queue;
static bool reload_config;
-static int max_childs;
-static int childs;
+static int children;
+static int children_max;
+static int exec_delay;
static sigset_t orig_sigmask;
static struct udev_list_node event_list;
static struct udev_list_node worker_list;
@@ -205,7 +205,7 @@
udev_list_node_remove(&worker->node);
udev_monitor_unref(worker->monitor);
- childs--;
+ children--;
info(worker->udev, "worker [%u] cleaned up\n", worker->pid);
free(worker);
}
@@ -286,6 +286,9 @@
/* set timeout to prevent hanging processes */
alarm(UDEV_EVENT_TIMEOUT);
+ if (exec_delay > 0)
+ udev_event->exec_delay = exec_delay;
+
/* apply rules, create node, symlinks */
err = udev_event_execute_rules(udev_event, rules);
@@ -355,7 +358,7 @@
worker->event = event;
event->state = EVENT_RUNNING;
udev_list_node_append(&worker->node, &worker_list);
- childs++;
+ children++;
info(event->udev, "seq %llu forked new worker [%u]\n", udev_device_get_seqnum(event->dev), pid);
break;
}
@@ -386,8 +389,9 @@
return;
}
- if (!force && childs >= max_childs) {
- info(event->udev, "maximum number (%i) of childs reached\n", childs);
+ if (!force && children >= children_max) {
+ if (children_max > 1)
+ info(event->udev, "maximum number (%i) of children reached\n", children);
return;
}
@@ -431,10 +435,10 @@
struct udev_list_node *loop;
int max;
- if (childs <= retain)
+ if (children <= retain)
return;
- max = childs - retain;
+ max = children - retain;
udev_list_node_foreach(loop, &worker_list) {
struct worker *worker = node_to_worker(loop);
@@ -536,7 +540,7 @@
static void worker_returned(void)
{
- while (1) {
+ for (;;) {
struct worker_message msg;
ssize_t size;
struct udev_list_node *loop;
@@ -625,10 +629,10 @@
worker_kill(udev, 0);
}
- i = udev_ctrl_get_set_max_childs(ctrl_msg);
+ i = udev_ctrl_get_set_children_max(ctrl_msg);
if (i >= 0) {
- info(udev, "udevd message (SET_MAX_CHILDS) received, max_childs=%i\n", i);
- max_childs = i;
+ info(udev, "udevd message (SET_MAX_CHILDREN) received, children_max=%i\n", i);
+ children_max = i;
}
settle_pid = udev_ctrl_get_settle(ctrl_msg);
@@ -709,7 +713,7 @@
udev_exit = true;
break;
case SIGCHLD:
- while (1) {
+ for (;;) {
pid_t pid;
int status;
struct udev_list_node *loop, *tmp;
@@ -952,16 +956,16 @@
int fd;
FILE *f;
sigset_t mask;
- const char *value;
int daemonize = false;
int resolve_names = 1;
static const struct option options[] = {
{ "daemon", no_argument, NULL, 'd' },
- { "debug-trace", no_argument, NULL, 't' },
{ "debug", no_argument, NULL, 'D' },
+ { "children-max", required_argument, NULL, 'c' },
+ { "exec-delay", required_argument, NULL, 'e' },
+ { "resolve-names", required_argument, NULL, 'N' },
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, 'V' },
- { "resolve-names", required_argument, NULL, 'N' },
{}
};
int rc = 1;
@@ -975,10 +979,10 @@
info(udev, "version %s\n", VERSION);
udev_selinux_init(udev);
- while (1) {
+ for (;;) {
int option;
- option = getopt_long(argc, argv, "dDthV", options, NULL);
+ option = getopt_long(argc, argv, "cdeDthV", options, NULL);
if (option == -1)
break;
@@ -986,8 +990,11 @@
case 'd':
daemonize = true;
break;
- case 't':
- debug_trace = true;
+ case 'c':
+ children_max = strtoul(optarg, NULL, 0);
+ break;
+ case 'e':
+ exec_delay = strtoul(optarg, NULL, 0);
break;
case 'D':
debug = true;
@@ -1008,8 +1015,15 @@
}
break;
case 'h':
- printf("Usage: udevd [--help] [--daemon] [--debug-trace] [--debug] "
- "[--resolve-names=early|late|never] [--version]\n");
+ printf("Usage: udevd OPTIONS\n"
+ " --daemon\n"
+ " --debug\n"
+ " --children-max=<maximum number of workers>\n"
+ " --exec-delay=\n"
+ " --resolve-names=early|late|never\n"
+ " --version\n"
+ " --help\n"
+ "\n");
goto exit;
case 'V':
printf("%s\n", VERSION);
@@ -1019,13 +1033,51 @@
}
}
+ /*
+ * read the kernel commandline, in case we need to get into debug mode
+ * udev.log-priority=<level> syslog priority
+ * udev.children-max=<number of workers> events are fully serialized if set to 1
+ *
+ */
+ f = fopen("/proc/cmdline", "r");
+ if (f != NULL) {
+ char cmdline[4096];
+
+ if (fgets(cmdline, sizeof(cmdline), f) != NULL) {
+ char *pos;
+
+ pos = strstr(cmdline, "udev.log-priority=");
+ if (pos != NULL) {
+ pos += strlen("udev.log-priority=");
+ udev_set_log_priority(udev, util_log_priority(pos));
+ }
+
+ pos = strstr(cmdline, "udev.children-max=");
+ if (pos != NULL) {
+ pos += strlen("udev.children-max=");
+ children_max = strtoul(pos, NULL, 0);
+ }
+
+ pos = strstr(cmdline, "udev.exec-delay=");
+ if (pos != NULL) {
+ pos += strlen("udev.exec-delay=");
+ exec_delay = strtoul(pos, NULL, 0);
+ }
+ }
+ fclose(f);
+ }
+
if (getuid() != 0) {
fprintf(stderr, "root privileges required\n");
err(udev, "root privileges required\n");
goto exit;
}
- /* make sure std{in,out,err} fd's are in a sane state */
+ /* set umask before creating any file/directory */
+ chdir("/");
+ umask(022);
+
+ /* before opening new files, make sure std{in,out,err} fds are in a sane state */
fd = open("/dev/null", O_RDWR);
if (fd < 0) {
fprintf(stderr, "cannot open /dev/null\n");
@@ -1036,7 +1088,6 @@
if (write(STDERR_FILENO, 0, 0) < 0)
dup2(fd, STDERR_FILENO);
- /* init control socket, bind() ensures, that only one udevd instance is running */
udev_ctrl = udev_ctrl_new_from_socket(udev, UDEV_CTRL_SOCK_PATH);
if (udev_ctrl == NULL) {
fprintf(stderr, "error initializing control socket");
@@ -1127,6 +1178,14 @@
goto exit;
}
+ if (!debug) {
+ dup2(fd, STDIN_FILENO);
+ dup2(fd, STDOUT_FILENO);
+ dup2(fd, STDERR_FILENO);
+ }
+ if (fd > STDERR_FILENO)
+ close(fd);
+
if (daemonize) {
pid_t pid;
@@ -1144,28 +1203,17 @@
}
}
+ /* set scheduling priority for the main daemon process */
+ setpriority(PRIO_PROCESS, 0, UDEVD_PRIORITY);
+
+ setsid();
+
f = fopen("/dev/kmsg", "w");
if (f != NULL) {
fprintf(f, "<6>udev: starting version " VERSION "\n");
fclose(f);
}
- /* redirect std{out,err} */
- if (!debug && !debug_trace) {
- dup2(fd, STDIN_FILENO);
- dup2(fd, STDOUT_FILENO);
- dup2(fd, STDERR_FILENO);
- }
- if (fd > STDERR_FILENO)
- close(fd);
-
- /* set scheduling priority for the daemon */
- setpriority(PRIO_PROCESS, 0, UDEVD_PRIORITY);
-
- chdir("/");
- umask(022);
- setsid();
-
/* OOM_DISABLE == -17 */
fd = open("/proc/self/oom_adj", O_RDWR);
if (fd < 0) {
@@ -1175,23 +1223,16 @@
close(fd);
}
- /* in trace mode run one event after the other */
- if (debug_trace) {
- max_childs = 1;
- } else {
+ if (children_max <= 0) {
int memsize = mem_size_mb();
+ /* set value depending on the amount of RAM */
if (memsize > 0)
- max_childs = 128 + (memsize / 8);
+ children_max = 128 + (memsize / 8);
else
- max_childs = 128;
+ children_max = 128;
}
-
- /* possibly overwrite maximum limit of executed events */
- value = getenv("UDEVD_MAX_CHILDS");
- if (value)
- max_childs = strtoul(value, NULL, 10);
- info(udev, "initialize max_childs to %u\n", max_childs);
+ info(udev, "set children_max to %u\n", children_max);
static_dev_create(udev);
static_dev_create_from_modules(udev);
@@ -1205,7 +1246,7 @@
int timeout;
/* set timeout to kill idle workers */
- if (udev_list_is_empty(&event_list) && childs > 2)
+ if (udev_list_is_empty(&event_list) && children > 2)
timeout = 3 * 1000;
else
timeout = -1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/udev-156/udev/udevd.xml new/udev-157/udev/udevd.xml
--- old/udev-156/udev/udevd.xml 2010-05-24 16:57:42.000000000 +0200
+++ new/udev-157/udev/udevd.xml 2010-05-29 22:51:34.000000000 +0200
@@ -23,19 +23,26 @@
<cmdsynopsis>
<command>udevd</command>
<arg><option>--daemon</option></arg>
- <arg><option>--debug-trace</option></arg>
<arg><option>--debug</option></arg>
- <arg><option>--version</option></arg>
+ <arg><option>--children-max=</option></arg>
+ <arg><option>--exec-delay=</option></arg>
<arg><option>--resolve-names=early|late|never</option></arg>
+ <arg><option>--version</option></arg>
<arg><option>--help</option></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1><title>Description</title>
- <para>udevd listens to kernel uevents and passes the incoming events to
- udev. It ensures the correct event order and takes care, that events for child
- devices are delayed until the parent event has finished the device handling.
- The behavior of the running daemon can be changed with
+ <para>udevd listens to kernel uevents. For every event, udevd executes matching
+ instructions specified in udev rules. See <citerefentry>
+ <refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum>
+ </citerefentry>.</para>
+ <para>On startup the content of the directory <filename>/lib/udev/devices</filename>
+ is copied to <filename>/dev</filename>. If kernel modules specify static device
+ nodes, these nodes are created even wihtout a corresponding kernel device, to
+ allow on-demand loading of kernel modules. Matching permissions specified in udev
+ rules are applied to these static device nodes.</para>
+ <para>The behavior of the running daemon can be changed with
<command>udevadm control</command>.</para>
</refsect1>
@@ -48,22 +55,27 @@
</listitem>
</varlistentry>
<varlistentry>
- <term><option>--debug-trace</option></term>
+ <term><option>--debug</option></term>
<listitem>
- <para>Run all events completely serialized. This may be useful if udev triggers
- actions or loads kernel modules which cause problems and a slow but continuous
- operation is needed, where no events are processed in parallel.
- </para>
+ <para>Print debug messages to stderr.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>--debug</option></term>
+ <term><option>--children-max=</option></term>
<listitem>
- <para>Print debug messages to stderr.</para>
+ <para>Limit the number of parallel executed events.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term><option>--resolve-names</option></term>
+ <term><option>--exec-delay=</option></term>
+ <listitem>
+ <para>Number of seconds to delay the execution of RUN instructions.
+ This might be useful when debugging system crashes during coldplug
+ cause by loading non-working kernel modules.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><option>--resolve-names=</option></term>
<listitem>
<para>Specify when udevd should resolve names of users and groups.
When set to <option>early</option> (the default) names will be
@@ -91,9 +103,34 @@
<refsect1><title>Environment</title>
<variablelist>
<varlistentry>
- <term><option>UDEV_LOG</option></term>
+ <term><varname>UDEV_LOG=</varname></term>
+ <listitem>
+ <para>Set the logging priority.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1><title>Kernel command line</title>
+ <variablelist>
+ <varlistentry>
+ <term><varname>udev.log-priority=</varname></term>
+ <listitem>
+ <para>Set the logging priority.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>udev.children-max=</varname></term>
+ <listitem>
+ <para>Limit the number of parallel executed events.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><varname>udev.exec-delay=</varname></term>
<listitem>
- <para>Overrides the syslog priority specified in the config file.</para>
+ <para>Number of seconds to delay the execution of RUN instructions.
+ This might be useful when debugging system crashes during coldplug
+ cause by loading non-working kernel modules.</para>
</listitem>
</varlistentry>
</variablelist>
@@ -107,8 +144,7 @@
<title>See Also</title>
<para><citerefentry>
<refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum>
- </citerefentry>,
- <citerefentry>
+ </citerefentry>, <citerefentry>
<refentrytitle>udevadm</refentrytitle><manvolnum>8</manvolnum>
</citerefentry></para>
</refsect1>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org