A standardized way of reporting kernel events to userspace

From: Arvid Brodin
Date: Fri May 27 2011 - 19:19:05 EST


Hi,

After I asked on linux-usb for a way for userspace to catch over-current events
on the usb bus, it turned out that Juergen Beisert had had the need to do the
exact same thing some time ago. He posted this patch using a uevent to notify
userspace:

Signed-off-by: Juergen Beisert <jbe@xxxxxxxxxxxxxx>
Signed-off-by: Michael Grzeschik <m.grzeschik@xxxxxxxxxxxxxx>
---
drivers/usb/core/hub.c | 4 ++++
1 file changed, 4 insertions(+), 0 deletions(-)

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 84c18971..c615292 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -3372,9 +3372,13 @@ static void hub_events(void)
}

if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
+ char event[] = "POWERFAIL=1";
+ char *envp[] = { event, NULL };
+
dev_err (hub_dev,
"over-current change on port %d\n",
i);
+ kobject_uevent_env(&hub->intfdev->kobj, KOBJ_CHANGE, envp);
clear_port_feature(hdev, i,
USB_PORT_FEAT_C_OVER_CURRENT);
hub_power_on(hub, true);


Alan Stern noted that having a standardized, accepted way for the kernel to
report important hardware or software events to userspace could be useful, and
suggested we start a discussion about this here on lkml. He noted some
things to consider:

The type of event (hardware failure, data structure corruption,
imminent data loss, imminent hardware destruction...).

Whether or not the user can do anything to fix the problem.

Whatever else you can think of.


So, please feel free to comment on this, and perhaps with time some kind of
consensus can be reached on how to report issues like this to userspace.

(My initial email to linux-usb: http://www.spinics.net/lists/linux-usb/msg47088.html)

--
Arvid Brodin
Enea Services Stockholm AB
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/