Commit 9a99a996 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

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: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent bc840ea5
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -497,6 +497,25 @@ void thermal_zone_device_update(struct thermal_zone_device *tz,
}
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)
{
	struct thermal_zone_device *tz = container_of(work, struct
+4 −0
Original line number Diff line number Diff line
@@ -323,6 +323,10 @@ int thermal_zone_unbind_cooling_device(struct thermal_zone_device *, int,
				       struct thermal_cooling_device *);
void thermal_zone_device_update(struct thermal_zone_device *,
				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 *,
		void *, const struct thermal_cooling_device_ops *);