thermal: core: Introduce thermal_zone_device_exec()
Introduce a new helper function, thermal_zone_device_exec(), that can be used by drivers to run a given callback routine under the zone lock. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
bc840ea5f9
commit
9a99a996d1
2 changed files with 23 additions and 0 deletions
|
@ -497,6 +497,25 @@ void thermal_zone_device_update(struct thermal_zone_device *tz,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(thermal_zone_device_update);
|
EXPORT_SYMBOL_GPL(thermal_zone_device_update);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* thermal_zone_device_exec - Run a callback under the zone lock.
|
||||||
|
* @tz: Thermal zone.
|
||||||
|
* @cb: Callback to run.
|
||||||
|
* @data: Data to pass to the callback.
|
||||||
|
*/
|
||||||
|
void thermal_zone_device_exec(struct thermal_zone_device *tz,
|
||||||
|
void (*cb)(struct thermal_zone_device *,
|
||||||
|
unsigned long),
|
||||||
|
unsigned long data)
|
||||||
|
{
|
||||||
|
mutex_lock(&tz->lock);
|
||||||
|
|
||||||
|
cb(tz, data);
|
||||||
|
|
||||||
|
mutex_unlock(&tz->lock);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(thermal_zone_device_exec);
|
||||||
|
|
||||||
static void thermal_zone_device_check(struct work_struct *work)
|
static void thermal_zone_device_check(struct work_struct *work)
|
||||||
{
|
{
|
||||||
struct thermal_zone_device *tz = container_of(work, struct
|
struct thermal_zone_device *tz = container_of(work, struct
|
||||||
|
|
|
@ -323,6 +323,10 @@ int thermal_zone_unbind_cooling_device(struct thermal_zone_device *, int,
|
||||||
struct thermal_cooling_device *);
|
struct thermal_cooling_device *);
|
||||||
void thermal_zone_device_update(struct thermal_zone_device *,
|
void thermal_zone_device_update(struct thermal_zone_device *,
|
||||||
enum thermal_notify_event);
|
enum thermal_notify_event);
|
||||||
|
void thermal_zone_device_exec(struct thermal_zone_device *tz,
|
||||||
|
void (*cb)(struct thermal_zone_device *,
|
||||||
|
unsigned long),
|
||||||
|
unsigned long data);
|
||||||
|
|
||||||
struct thermal_cooling_device *thermal_cooling_device_register(const char *,
|
struct thermal_cooling_device *thermal_cooling_device_register(const char *,
|
||||||
void *, const struct thermal_cooling_device_ops *);
|
void *, const struct thermal_cooling_device_ops *);
|
||||||
|
|
Loading…
Add table
Reference in a new issue