/[smeserver]/rpms/hal/sme7/hal-osspec.patch
ViewVC logotype

Annotation of /rpms/hal/sme7/hal-osspec.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Thu Mar 22 16:11:10 2012 UTC (12 years, 2 months ago) by slords
Branch: MAIN
CVS Tags: hal-0_4_2-9_0_el4_sme, hal-0_4_2-8_EL4, hal-0_4_2-9_el4_sme, HEAD
Import

1 slords 1.1 --- hal-0.4.2/hald/linux/osspec.c.hotplug 2005-12-01 15:17:29.000000000 -0500
2     +++ hal-0.4.2/hald/linux/osspec.c 2005-12-01 15:18:04.000000000 -0500
3     @@ -1443,15 +1443,21 @@
4     struct hald_helper_msg *msg;
5    
6     trynext:
7     - if (hotplug_counter > 0)
8     - return;
9    
10     /* Empty the list of events received while sleeping on the first hotplug event (this list is sorted) */
11     if (hotplug_queue_first != NULL) {
12     msg = (struct hald_helper_msg *) hotplug_queue_first->data;
13     HAL_INFO (("Processing event around first hotplug with SEQNUM=%llu", msg->seqnum));
14     - hald_helper_hotplug (msg->action, msg->seqnum, g_strdup (msg->subsystem),
15     - g_strdup (msg->sysfs_path), msg);
16     + if (msg->type == HALD_DEVD) {
17     + hald_helper_device_name (msg->action, msg->seqnum, g_strdup (msg->subsystem),
18     + g_strdup (msg->sysfs_path), g_strdup (msg->device_name), msg);
19     + } else if (hotplug_counter == 0) {
20     + hald_helper_hotplug (msg->action, msg->seqnum, g_strdup (msg->subsystem),
21     + g_strdup (msg->sysfs_path), msg);
22     + } else {
23     + /* nothing else we can do until hotplug semaphore gets released */
24     + return;
25     + }
26     g_free (msg);
27     hotplug_queue_first = g_list_delete_link (hotplug_queue_first, hotplug_queue_first);
28     goto trynext;
29     @@ -1460,26 +1466,40 @@
30     for (i = hotplug_queue; i != NULL; i = g_list_next (i)) {
31     msg = (struct hald_helper_msg *) i->data;
32    
33     - /* check for dupes (user may have several hal.hotplug helpers (!) */
34     - if (msg->seqnum == last_hotplug_seqnum) {
35     - HAL_WARNING (("******************************************"));
36     - HAL_WARNING (("Ignoring duplicate event with SEQNUM=%d", msg->seqnum));
37     - HAL_WARNING (("******************************************"));
38     + if ((msg->seqnum <= last_hotplug_seqnum) && (msg->type == HALD_DEVD)) {
39     + /*
40     + * we can process these messages even when hotplug_counter > 0, but we want
41     + * to wait until we are processing the associated hotplug event to do so
42     + */
43     + hald_helper_device_name (msg->action, msg->seqnum, g_strdup (msg->subsystem),
44     + g_strdup (msg->sysfs_path), g_strdup (msg->device_name), msg);
45     g_free (msg);
46     hotplug_queue = g_list_delete_link (hotplug_queue, i);
47     goto trynext;
48     - }
49    
50     + } else if (hotplug_counter == 0) {
51    
52     - if (msg->seqnum == last_hotplug_seqnum + 1) {
53     - /* yup, found it */
54     - last_hotplug_seqnum = msg->seqnum;
55     - last_hotplug_time_stamp = msg->time_stamp;
56     - hald_helper_hotplug (msg->action, msg->seqnum, g_strdup (msg->subsystem),
57     - g_strdup (msg->sysfs_path), msg);
58     - g_free (msg);
59     - hotplug_queue = g_list_delete_link (hotplug_queue, i);
60     - goto trynext;
61     + /* check for dupes (user may have several hal.hotplug helpers (!) */
62     + if (msg->seqnum == last_hotplug_seqnum) {
63     + HAL_WARNING (("******************************************"));
64     + HAL_WARNING (("Ignoring duplicate event with SEQNUM=%d", msg->seqnum));
65     + HAL_WARNING (("******************************************"));
66     + g_free (msg);
67     + hotplug_queue = g_list_delete_link (hotplug_queue, i);
68     + goto trynext;
69     + }
70     +
71     +
72     + if (msg->seqnum == last_hotplug_seqnum + 1) {
73     + /* yup, found it */
74     + last_hotplug_seqnum = msg->seqnum;
75     + last_hotplug_time_stamp = msg->time_stamp;
76     + hald_helper_hotplug (msg->action, msg->seqnum, g_strdup (msg->subsystem),
77     + g_strdup (msg->sysfs_path), msg);
78     + g_free (msg);
79     + hotplug_queue = g_list_delete_link (hotplug_queue, i);
80     + goto trynext;
81     + }
82     }
83     }
84     }
85     @@ -1608,6 +1628,9 @@
86     const struct hald_helper_msg *a = (const struct hald_helper_msg *) pa;
87     const struct hald_helper_msg *b = (const struct hald_helper_msg *) pb;
88    
89     + if (a->seqnum == b->seqnum) {
90     + return (gint) (a->type == HALD_DEVD ? 1 : -1);
91     + }
92     return (gint) (a->seqnum - b->seqnum);
93     }
94    
95     @@ -1676,9 +1699,6 @@
96    
97     switch (msg.type) {
98     case HALD_DEVD:
99     - hald_helper_device_name (msg.action, msg.seqnum, g_strdup (msg.subsystem),
100     - g_strdup (msg.sysfs_path), g_strdup (msg.device_name), &msg);
101     - break;
102     case HALD_HOTPLUG:
103     /* need to process hotplug events in proper sequence */
104    

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed