linux-hotplug.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch] pass SEQNUM trough udevd
@ 2004-08-29 20:24 Kay Sievers
  2004-09-05  8:08 ` Greg KH
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Kay Sievers @ 2004-08-29 20:24 UTC (permalink / raw)
  To: linux-hotplug

[-- 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];

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patch] pass SEQNUM trough udevd
  2004-08-29 20:24 [patch] pass SEQNUM trough udevd Kay Sievers
@ 2004-09-05  8:08 ` Greg KH
  2004-09-06  9:08 ` Kay Sievers
  2004-09-09 23:58 ` Greg KH
  2 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2004-09-05  8:08 UTC (permalink / raw)
  To: linux-hotplug

On Sun, Aug 29, 2004 at 10:24:30PM +0200, Kay Sievers wrote:
> 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.

Applied, thanks.

Hm, shouldn't that be unsigned long?

thanks,

greg k-h


-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_idP47&alloc_id\x10808&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patch] pass SEQNUM trough udevd
  2004-08-29 20:24 [patch] pass SEQNUM trough udevd Kay Sievers
  2004-09-05  8:08 ` Greg KH
@ 2004-09-06  9:08 ` Kay Sievers
  2004-09-09 23:58 ` Greg KH
  2 siblings, 0 replies; 4+ messages in thread
From: Kay Sievers @ 2004-09-06  9:08 UTC (permalink / raw)
  To: linux-hotplug

On Sun, 2004-09-05 at 10:08 +0200, Greg KH wrote:
> On Sun, Aug 29, 2004 at 10:24:30PM +0200, Kay Sievers wrote:
> > 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.
> 
> Applied, thanks.
> 
> Hm, shouldn't that be unsigned long?

Yes, right, it should. But we currently use a -1 if we want to skip the
udevd reordering, so I didn't change that to unsigned.

With the SEQNUM-in-sysfs patch, the kernel will use u64 and starts with
1 as the first SEQNUM, right?
I will catch up to unsigned long long with the upcoming patch, that will
add the seqnum init with the sysfs value to udevd.

Thank,
Kay



-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_idP47&alloc_id\x10808&op=click
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [patch] pass SEQNUM trough udevd
  2004-08-29 20:24 [patch] pass SEQNUM trough udevd Kay Sievers
  2004-09-05  8:08 ` Greg KH
  2004-09-06  9:08 ` Kay Sievers
@ 2004-09-09 23:58 ` Greg KH
  2 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2004-09-09 23:58 UTC (permalink / raw)
  To: linux-hotplug

On Mon, Sep 06, 2004 at 11:08:50AM +0200, Kay Sievers wrote:
> 
> With the SEQNUM-in-sysfs patch, the kernel will use u64 and starts with
> 1 as the first SEQNUM, right?

Yes.

thanks,

greg k-h


-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
_______________________________________________
Linux-hotplug-devel mailing list  http://linux-hotplug.sourceforge.net
Linux-hotplug-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-09-09 23:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-29 20:24 [patch] pass SEQNUM trough udevd Kay Sievers
2004-09-05  8:08 ` Greg KH
2004-09-06  9:08 ` Kay Sievers
2004-09-09 23:58 ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).