[PATCH 13/15] rfkill: add uevent notifications

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <linux-kernel@...>
Cc: Ivo van Doorn <IvDoorn@...>, Thomas Renninger <trenn@...>, Henrique de Moraes Holschuh <hmh@...>, Dmitry Torokhov <dtor@...>
Date: Sunday, May 18, 2008 - 2:48 pm

Use the notification chains to also send uevents, so that userspace can be
notified of state changes of every rfkill switch.

Userspace should use these events for OSD/status report applications and
rfkill GUI frontends.  HAL might want to broadcast them over DBUS, for
example.  It might be also useful for userspace implementations of
rfkill-input, or to use HAL as the platform driver which promotes rfkill
switch change events into input events (to synchronize all other switches)
when necessary for platforms that lack a convenient platform-specific
kernel module to do it.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: Ivo van Doorn <IvDoorn@gmail.com>
Cc: Dmitry Torokhov <dtor@mail.ru>
---
 net/rfkill/rfkill.c |   42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diff --git a/net/rfkill/rfkill.c b/net/rfkill/rfkill.c
index 4ed8d19..ba25bde 100644
--- a/net/rfkill/rfkill.c
+++ b/net/rfkill/rfkill.c
@@ -382,12 +382,51 @@ static int rfkill_resume(struct device *dev)
 #define rfkill_resume NULL
 #endif
 
+static int rfkill_blocking_uevent_notifier(struct notifier_block *nb,
+					unsigned long eventid,
+					void *data)
+{
+	struct rfkill *rfkill = (struct rfkill *)data;
+
+	switch (eventid) {
+	case RFKILL_STATE_CHANGED:
+		kobject_uevent(&rfkill->dev.kobj, KOBJ_CHANGE);
+		break;
+	default:
+		break;
+	}
+
+	return NOTIFY_DONE;
+}
+
+static struct notifier_block rfkill_blocking_uevent_nb = {
+	.notifier_call	= rfkill_blocking_uevent_notifier,
+	.priority	= 0,
+};
+
+static int rfkill_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
+{
+	struct rfkill *rfkill = to_rfkill(dev);
+	int error;
+
+	error = add_uevent_var(env, "RFKILL_NAME=%s", rfkill->name);
+	if (error)
+		return error;
+	error = add_uevent_var(env, "RFKILL_TYPE=%s",
+				rfkill_get_type_str(rfkill->type));
+	if (error)
+		return error;
+	error = add_uevent_var(env, "RFKILL_STATE=%u", rfkill->state);
+	return error;
+}
+
 static struct class rfkill_class = {
 	.name		= "rfkill",
 	.dev_release	= rfkill_release,
 	.dev_attrs	= rfkill_dev_attrs,
 	.suspend	= rfkill_suspend,
 	.resume		= rfkill_resume,
+	.dev_uevent	= rfkill_dev_uevent,
 };
 
 static int rfkill_add_switch(struct rfkill *rfkill)
@@ -562,11 +601,14 @@ static int __init rfkill_init(void)
 		return error;
 	}
 
+	register_rfkill_notifier(&rfkill_blocking_uevent_nb);
+
 	return 0;
 }
 
 static void __exit rfkill_exit(void)
 {
+	unregister_rfkill_notifier(&rfkill_blocking_uevent_nb);
 	class_unregister(&rfkill_class);
 }
 
-- 
1.5.5.1

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC] rfkill class rework, Henrique de Moraes Holschuh..., (Sun May 18, 2:47 pm)
[PATCH 08/15] rfkill: add read-write rfkill switch support, Henrique de Moraes Holschuh..., (Sun May 18, 2:47 pm)
[PATCH 15/15] rfkill: document rw rfkill switches and clarif..., Henrique de Moraes Holschuh..., (Sun May 18, 2:48 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and cl..., Henrique de Moraes Holschuh..., (Tue May 20, 11:54 am)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and cl..., Henrique de Moraes Holschuh..., (Tue May 20, 9:44 pm)
[PATCH 15/15] rfkill: document rw rfkill switches and clarif..., Henrique de Moraes Holschuh..., (Wed May 28, 8:45 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and cl..., Henrique de Moraes Holschuh..., (Thu May 29, 12:26 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and cl..., Henrique de Moraes Holschuh..., (Thu May 29, 1:22 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and cl..., Henrique de Moraes Holschuh..., (Tue Jun 3, 11:11 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and cl..., Henrique de Moraes Holschuh..., (Thu May 29, 1:46 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and cl..., Henrique de Moraes Holschuh..., (Thu May 29, 5:16 pm)
[PATCH] Input: rename SW_RADIO to SW_RFKILL_ALL (v2), Henrique de Moraes Holschuh..., (Thu May 29, 5:25 pm)
Re: [PATCH 15/15] rfkill: document rw rfkill switches and cl..., Henrique de Moraes Holschuh..., (Mon May 19, 6:04 pm)
[PATCH 14/15] rfkill: do not allow userspace to override ALL..., Henrique de Moraes Holschuh..., (Sun May 18, 2:48 pm)
Re: [PATCH 14/15] rfkill: do not allow userspace to override..., Henrique de Moraes Holschuh..., (Thu May 22, 4:51 pm)
Re: [PATCH 14/15] rfkill: do not allow userspace to override..., Henrique de Moraes Holschuh..., (Tue May 27, 10:08 am)
Re: [PATCH 14/15] rfkill: do not allow userspace to override..., Henrique de Moraes Holschuh..., (Tue May 27, 1:41 pm)
[PATCH 11/15] rfkill: add notifier chains support, Henrique de Moraes Holschuh..., (Sun May 18, 2:48 pm)
Re: [PATCH 11/15] rfkill: add notifier chains support, Ivo van Doorn, (Tue May 20, 6:09 am)
Re: [PATCH 11/15] rfkill: add notifier chains support, Thomas Renninger, (Mon May 19, 4:44 am)
Re: [PATCH 11/15] rfkill: add notifier chains support, Henrique de Moraes Holschuh..., (Mon May 19, 9:10 am)
[PATCH 10/15] rfkill: rework suspend and resume handlers, Henrique de Moraes Holschuh..., (Sun May 18, 2:48 pm)
[PATCH 09/15] rfkill: add the WWAN radio type, Henrique de Moraes Holschuh..., (Sun May 18, 2:47 pm)
Re: [PATCH 09/15] rfkill: add the WWAN radio type, Ivo van Doorn, (Tue May 20, 6:08 am)
Re: [PATCH 09/15] rfkill: add the WWAN radio type, Henrique de Moraes Holschuh..., (Tue May 20, 9:12 pm)
Re: [PATCH 09/15] rfkill: add the WWAN radio type, Inaky Perez-Gonzalez, (Tue May 20, 11:35 pm)
Re: [PATCH 09/15] rfkill: add the WWAN radio type, Henrique de Moraes Holschuh..., (Tue May 20, 11:42 pm)
Re: [PATCH 09/15] rfkill: add the WWAN radio type, Inaky Perez-Gonzalez, (Wed May 21, 2:48 am)
Re: [PATCH 09/15] rfkill: add the WWAN radio type, Henrique de Moraes Holschuh..., (Wed May 21, 10:07 am)
[PATCH 13/15] rfkill: add uevent notifications, Henrique de Moraes Holschuh..., (Sun May 18, 2:48 pm)
Re: [PATCH 13/15] rfkill: add uevent notifications, Ivo van Doorn, (Tue May 20, 6:09 am)
[PATCH 12/15] rfkill: add type string helper, Henrique de Moraes Holschuh..., (Sun May 18, 2:48 pm)
Re: [PATCH 12/15] rfkill: add type string helper, Ivo van Doorn, (Tue May 20, 6:09 am)
[PATCH 07/15] rfkill: add parameter to disable radios by def..., Henrique de Moraes Holschuh..., (Sun May 18, 2:47 pm)
[PATCH 06/15] rfkill: handle SW_RFKILL_ALL events, Henrique de Moraes Holschuh..., (Sun May 18, 2:47 pm)
Re: [PATCH 06/15] rfkill: handle SW_RFKILL_ALL events, Ivo van Doorn, (Tue May 20, 6:08 am)
[PATCH 01/15] ACPI: thinkpad-acpi: fix initialization error ..., Henrique de Moraes Holschuh..., (Sun May 18, 2:47 pm)
[PATCH 05/15] rfkill: fix minor typo in kernel doc, Henrique de Moraes Holschuh..., (Sun May 18, 2:47 pm)
Re: [PATCH 05/15] rfkill: fix minor typo in kernel doc, Ivo van Doorn, (Tue May 20, 6:08 am)
[PATCH 04/15] rfkill: clarify meaning of rfkill states, Henrique de Moraes Holschuh..., (Sun May 18, 2:47 pm)
[PATCH 03/15] Input: rename SW_RADIO to SW_RFKILL_ALL (v2), Henrique de Moraes Holschuh..., (Sun May 18, 2:47 pm)
[PATCH 02/15] ACPI: thinkpad-acpi: fix LED handling on older..., Henrique de Moraes Holschuh..., (Sun May 18, 2:47 pm)