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.
+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.
udev 055
========
We support an unlimited count of symlinks now.
+ /* 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)
/* sort message by sequence number into list */
list_for_each_entry_reverse(loop_msg, &msg_list, node) {
if (loop_msg->seqnum < msg->seqnum)
if (msg->devpath == NULL)
return NULL;
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;
list_for_each_entry(loop_msg, &running_list, node) {
if (loop_msg->devpath == NULL)
continue;
if (strncmp(key, "PHYSDEVPATH=", 12) == 0)
msg->physdevpath = &key[12];
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;
}
msg->envp[i++] = "UDEVD_EVENT=1";
msg->envp[i] = NULL;
char *subsystem;
unsigned long long seqnum;
char *physdevpath;
char *subsystem;
unsigned long long seqnum;
char *physdevpath;
char *envp[HOTPLUG_NUM_ENVP+1];
char envbuf[];
};
char *envp[HOTPLUG_NUM_ENVP+1];
char envbuf[];
};