mirror of
https://github.com/systemd/systemd.git
synced 2025-03-19 22:50:17 +03:00
[PATCH] udevd: don't delay events with TIMEOUT in the environment
On Tue, 2005-03-15 at 09:25 +0100, Hannes Reinecke wrote: > The current implementation of the firmware class breaks a fundamental > assumption in udevd: that the physical device can be initialised fully > prior to executing the next event for that device. Thanks to Hannes for the patch.
This commit is contained in:
parent
92ebb398ed
commit
7f7ae03a62
@ -1,3 +1,9 @@
|
||||
udev 056
|
||||
========
|
||||
Possible use of a system-wide klibc:
|
||||
make USE_KLIB=true KLCC=/usr/bin/klcc all
|
||||
will link against an external klibc and our own version will be ignored.
|
||||
|
||||
udev 055
|
||||
========
|
||||
We support an unlimited count of symlinks now.
|
||||
|
15
udevd.c
15
udevd.c
@ -113,6 +113,14 @@ static void msg_queue_insert(struct hotplug_msg *msg)
|
||||
return;
|
||||
}
|
||||
|
||||
/* don't delay messages with timeout set */
|
||||
if (msg->timeout) {
|
||||
dbg("move seq %llu with timeout %u to exec queue", msg->seqnum, msg->timeout);
|
||||
list_add(&msg->node, &exec_list);
|
||||
run_exec_q = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
/* sort message by sequence number into list */
|
||||
list_for_each_entry_reverse(loop_msg, &msg_list, node) {
|
||||
if (loop_msg->seqnum < msg->seqnum)
|
||||
@ -293,6 +301,10 @@ static struct hotplug_msg *running_with_devpath(struct hotplug_msg *msg)
|
||||
if (msg->devpath == NULL)
|
||||
return NULL;
|
||||
|
||||
/* skip any events with a timeout set */
|
||||
if (msg->timeout)
|
||||
return NULL;
|
||||
|
||||
list_for_each_entry(loop_msg, &running_list, node) {
|
||||
if (loop_msg->devpath == NULL)
|
||||
continue;
|
||||
@ -490,6 +502,9 @@ static struct hotplug_msg *get_udevsend_msg(void)
|
||||
|
||||
if (strncmp(key, "PHYSDEVPATH=", 12) == 0)
|
||||
msg->physdevpath = &key[12];
|
||||
|
||||
if (strncmp(key, "TIMEOUT=", 8) == 0)
|
||||
msg->timeout = strtoull(&key[8], NULL, 10);
|
||||
}
|
||||
msg->envp[i++] = "UDEVD_EVENT=1";
|
||||
msg->envp[i] = NULL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user