forked from mirrors/linux
		
	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…
	
		Reference in a new issue