thermal: Use thermal zone device id in netlink messages

This patch changes the function thermal_generate_netlink_event
to receive a thermal zone device instead of a originator id.

This way, the messages will always be bound to a thermal zone.

Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
Reviewed-by: Durgadoss R <durgadoss.r@intel.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
This commit is contained in:
Eduardo Valentin 2013-01-02 15:29:39 +00:00 committed by Zhang Rui
parent c076fc42a4
commit 8ab3e6a08a
3 changed files with 13 additions and 6 deletions

View File

@ -329,8 +329,9 @@ The framework includes a simple notification mechanism, in the form of a
netlink event. Netlink socket initialization is done during the _init_ netlink event. Netlink socket initialization is done during the _init_
of the framework. Drivers which intend to use the notification mechanism of the framework. Drivers which intend to use the notification mechanism
just need to call thermal_generate_netlink_event() with two arguments viz just need to call thermal_generate_netlink_event() with two arguments viz
(originator, event). Typically the originator will be an integer assigned (originator, event). The originator is a pointer to struct thermal_zone_device
to a thermal_zone_device when it registers itself with the framework. The from where the event has been originated. An integer which represents the
thermal zone device will be used in the message to identify the zone. The
event will be one of:{THERMAL_AUX0, THERMAL_AUX1, THERMAL_CRITICAL, event will be one of:{THERMAL_AUX0, THERMAL_AUX1, THERMAL_CRITICAL,
THERMAL_DEV_FAULT}. Notification can be sent when the current temperature THERMAL_DEV_FAULT}. Notification can be sent when the current temperature
crosses any of the configured thresholds. crosses any of the configured thresholds.

View File

@ -1711,7 +1711,8 @@ static struct genl_multicast_group thermal_event_mcgrp = {
.name = THERMAL_GENL_MCAST_GROUP_NAME, .name = THERMAL_GENL_MCAST_GROUP_NAME,
}; };
int thermal_generate_netlink_event(u32 orig, enum events event) int thermal_generate_netlink_event(struct thermal_zone_device *tz,
enum events event)
{ {
struct sk_buff *skb; struct sk_buff *skb;
struct nlattr *attr; struct nlattr *attr;
@ -1721,6 +1722,9 @@ int thermal_generate_netlink_event(u32 orig, enum events event)
int result; int result;
static unsigned int thermal_event_seqnum; static unsigned int thermal_event_seqnum;
if (!tz)
return -EINVAL;
/* allocate memory */ /* allocate memory */
size = nla_total_size(sizeof(struct thermal_genl_event)) + size = nla_total_size(sizeof(struct thermal_genl_event)) +
nla_total_size(0); nla_total_size(0);
@ -1755,7 +1759,7 @@ int thermal_generate_netlink_event(u32 orig, enum events event)
memset(thermal_event, 0, sizeof(struct thermal_genl_event)); memset(thermal_event, 0, sizeof(struct thermal_genl_event));
thermal_event->orig = orig; thermal_event->orig = tz->id;
thermal_event->event = event; thermal_event->event = event;
/* send multicast genetlink message */ /* send multicast genetlink message */

View File

@ -246,9 +246,11 @@ int thermal_register_governor(struct thermal_governor *);
void thermal_unregister_governor(struct thermal_governor *); void thermal_unregister_governor(struct thermal_governor *);
#ifdef CONFIG_NET #ifdef CONFIG_NET
extern int thermal_generate_netlink_event(u32 orig, enum events event); extern int thermal_generate_netlink_event(struct thermal_zone_device *tz,
enum events event);
#else #else
static inline int thermal_generate_netlink_event(u32 orig, enum events event) static int thermal_generate_netlink_event(struct thermal_zone_device *tz,
enum events event)
{ {
return 0; return 0;
} }