Skip to content

Commit

Permalink
thermal: Use thermal zone device id in netlink messages
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Eduardo Valentin authored and Zhang Rui committed Jan 16, 2013
1 parent c076fc4 commit 8ab3e6a
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 6 deletions.
5 changes: 3 additions & 2 deletions Documentation/thermal/sysfs-api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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_
of the framework. Drivers which intend to use the notification mechanism
just need to call thermal_generate_netlink_event() with two arguments viz
(originator, event). Typically the originator will be an integer assigned
to a thermal_zone_device when it registers itself with the framework. The
(originator, event). The originator is a pointer to struct thermal_zone_device
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,
THERMAL_DEV_FAULT}. Notification can be sent when the current temperature
crosses any of the configured thresholds.
Expand Down
8 changes: 6 additions & 2 deletions drivers/thermal/thermal_sys.c
Original file line number Diff line number Diff line change
Expand Up @@ -1711,7 +1711,8 @@ static struct genl_multicast_group thermal_event_mcgrp = {
.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 nlattr *attr;
Expand All @@ -1721,6 +1722,9 @@ int thermal_generate_netlink_event(u32 orig, enum events event)
int result;
static unsigned int thermal_event_seqnum;

if (!tz)
return -EINVAL;

/* allocate memory */
size = nla_total_size(sizeof(struct thermal_genl_event)) +
nla_total_size(0);
Expand Down Expand Up @@ -1755,7 +1759,7 @@ int thermal_generate_netlink_event(u32 orig, enum events event)

memset(thermal_event, 0, sizeof(struct thermal_genl_event));

thermal_event->orig = orig;
thermal_event->orig = tz->id;
thermal_event->event = event;

/* send multicast genetlink message */
Expand Down
6 changes: 4 additions & 2 deletions include/linux/thermal.h
Original file line number Diff line number Diff line change
Expand Up @@ -246,9 +246,11 @@ int thermal_register_governor(struct thermal_governor *);
void thermal_unregister_governor(struct thermal_governor *);

#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
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;
}
Expand Down

0 comments on commit 8ab3e6a

Please sign in to comment.