From: Kay Sievers <kay.sievers@vrfy.org>
To: linux-hotplug@vger.kernel.org
Subject: [patch] pass SEQNUM trough udevd
Date: Sun, 29 Aug 2004 20:24:30 +0000 [thread overview]
Message-ID: <20040829202430.GA15492@vrfy.org> (raw)
[-- Attachment #1: Type: text/plain, Size: 254 bytes --]
Hi,
here we change udevd to pass the SEQNUM from the hotplug environment
to udev and the dev.d/ scripts. We need this for HAL to match the
hotplug event with the dev.d/ events.
It also changes the type from int to long to match the kernel.
Thanks,
Kay
[-- Attachment #2: udev-seqnum-02.patch --]
[-- Type: text/plain, Size: 4885 bytes --]
===== udev.h 1.58 vs edited =====
--- 1.58/udev.h 2004-08-05 00:43:58 +02:00
+++ edited/udev.h 2004-08-29 22:08:39 +02:00
@@ -33,9 +33,10 @@
#define GROUP_SIZE 30
#define MODE_SIZE 8
-#define ACTION_SIZE 30
-#define DEVPATH_SIZE 255
-#define SUBSYSTEM_SIZE 30
+#define ACTION_SIZE 32
+#define DEVPATH_SIZE 256
+#define SUBSYSTEM_SIZE 32
+#define SEQNUM_SIZE 32
/* length of public data */
#define UDEVICE_LEN (offsetof(struct udevice, bus_id))
===== udev_lib.h 1.6 vs edited =====
--- 1.6/udev_lib.h 2004-04-22 16:45:13 +02:00
+++ edited/udev_lib.h 2004-08-29 22:20:20 +02:00
@@ -59,6 +59,12 @@ do { \
snprintf((to) + strlen(to), maxsize - strlen(to)-1, "%u", i); \
} while (0)
+#define strlongcat(to, i) \
+do { \
+ to[sizeof(to)-1] = '\0'; \
+ snprintf((to) + strlen(to), sizeof(to) - strlen(to)-1, "%li", i); \
+} while (0)
+
#define foreach_strpart(str, separator, pos, len) \
for(pos = str, len = 0; \
(pos) < ((str) + strlen(str)); \
===== udevd.c 1.34 vs edited =====
--- 1.34/udevd.c 2004-08-05 00:47:59 +02:00
+++ edited/udevd.c 2004-08-29 22:19:49 +02:00
@@ -44,7 +44,7 @@
#include "logging.h"
static int pipefds[2];
-static int expected_seqnum = 0;
+static long expected_seqnum = 0;
volatile static int children_waiting;
volatile static int run_msg_q;
volatile static int sig_flag;
@@ -82,7 +82,7 @@ static void msg_dump_queue(void)
struct hotplug_msg *msg;
list_for_each_entry(msg, &msg_list, list)
- dbg("sequence %d in queue", msg->seqnum);
+ dbg("sequence %li in queue", msg->seqnum);
#endif
}
@@ -120,7 +120,7 @@ static void msg_queue_insert(struct hotp
msg->queue_time = info.uptime;
list_add(&msg->list, &loop_msg->list);
- dbg("queued message seq %d", msg->seqnum);
+ dbg("queued message seq %li", msg->seqnum);
/* run msg queue manager */
run_msg_q = 1;
@@ -134,12 +134,15 @@ static void udev_run(struct hotplug_msg
pid_t pid;
char action[ACTION_SIZE];
char devpath[DEVPATH_SIZE];
- char *env[] = { action, devpath, NULL };
+ char seqnum[SEQNUM_SIZE];
+ char *env[] = { action, devpath, seqnum, NULL };
strcpy(action, "ACTION=");
strfieldcat(action, msg->action);
strcpy(devpath, "DEVPATH=");
strfieldcat(devpath, msg->devpath);
+ strcpy(seqnum, "SEQNUM=");
+ strlongcat(seqnum, msg->seqnum);
pid = fork();
switch (pid) {
@@ -158,7 +161,7 @@ static void udev_run(struct hotplug_msg
break;
default:
/* get SIGCHLD in main loop */
- dbg("==> exec seq %d [%d] working at '%s'", msg->seqnum, pid, msg->devpath);
+ dbg("==> exec seq %li [%d] working at '%s'", msg->seqnum, pid, msg->devpath);
msg->pid = pid;
}
}
@@ -186,9 +189,9 @@ static void exec_queue_manager()
/* move event to run list */
list_move_tail(&loop_msg->list, &running_list);
udev_run(loop_msg);
- dbg("moved seq %d to running list", loop_msg->seqnum);
+ dbg("moved seq %li to running list", loop_msg->seqnum);
} else {
- dbg("delay seq %d, cause seq %d already working on '%s'",
+ dbg("delay seq %li, cause seq %li already working on '%s'",
loop_msg->seqnum, msg->seqnum, msg->devpath);
}
}
@@ -199,7 +202,7 @@ static void msg_move_exec(struct hotplug
list_move_tail(&msg->list, &exec_list);
run_exec_q = 1;
expected_seqnum = msg->seqnum+1;
- dbg("moved seq %d to exec, next expected is %d",
+ dbg("moved seq %li to exec, next expected is %li",
msg->seqnum, expected_seqnum);
}
@@ -211,7 +214,7 @@ static void msg_queue_manager()
struct sysinfo info;
long msg_age = 0;
- dbg("msg queue manager, next expected is %d", expected_seqnum);
+ dbg("msg queue manager, next expected is %li", expected_seqnum);
recheck:
list_for_each_entry_safe(loop_msg, tmp_msg, &msg_list, list) {
/* move event with expected sequence to the exec list */
@@ -223,7 +226,7 @@ recheck:
/* move event with expired timeout to the exec list */
sysinfo(&info);
msg_age = info.uptime - loop_msg->queue_time;
- dbg("seq %d is %li seconds old", loop_msg->seqnum, msg_age);
+ dbg("seq %li is %li seconds old", loop_msg->seqnum, msg_age);
if (msg_age > EVENT_TIMEOUT_SEC-1) {
msg_move_exec(loop_msg);
goto recheck;
@@ -350,9 +353,9 @@ static void udev_done(int pid)
list_for_each_entry(msg, &running_list, list) {
if (msg->pid == pid) {
- dbg("<== exec seq %d came back", msg->seqnum);
+ dbg("<== exec seq %li came back", msg->seqnum);
run_queue_delete(msg);
-
+
/* we want to run the exec queue manager since there may
* be events waiting with the devpath of the one that
* just finished
===== udevd.h 1.10 vs edited =====
--- 1.10/udevd.h 2004-04-02 12:35:39 +02:00
+++ edited/udevd.h 2004-08-29 22:08:40 +02:00
@@ -33,7 +33,7 @@ struct hotplug_msg {
char magic[20];
struct list_head list;
pid_t pid;
- int seqnum;
+ long seqnum;
long queue_time;
char action[ACTION_SIZE];
char devpath[DEVPATH_SIZE];
next reply other threads:[~2004-08-29 20:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-29 20:24 Kay Sievers [this message]
2004-09-05 8:08 ` [patch] pass SEQNUM trough udevd Greg KH
2004-09-06 9:08 ` Kay Sievers
2004-09-09 23:58 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040829202430.GA15492@vrfy.org \
--to=kay.sievers@vrfy.org \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.