Messages in this thread | | | Subject | Re: [PATCH v2 1/5] thermal: core: Add helpers to browse the cdev, tz and governor list | From | Zhang Rui <> | Date | Tue, 30 Jun 2020 23:09:47 +0800 |
| |
Hi, Daniel,
seems that you forgot to cc linux-pm mailing list.
On Tue, 2020-06-30 at 17:16 +0530, Amit Kucheria wrote: > On Thu, Jun 25, 2020 at 8:15 PM Daniel Lezcano > <daniel.lezcano@linaro.org> wrote: > > > > The cdev, tz and governor list, as well as their respective locks > > are > > statically defined in the thermal_core.c file. > > > > In order to give a sane access to these list, like browsing all the > > thermal zones or all the cooling devices, let's define a set of > > helpers where we pass a callback as a parameter to be called for > > each > > thermal entity. > > > > We keep the self-encapsulation and ensure the locks are correctly > > taken when looking at the list. > > > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> > > --- > > drivers/thermal/thermal_core.c | 51 > > ++++++++++++++++++++++++++++++++++ > > Is the idea to not use thermal_helpers.c from now on? It fits > perfectly with a patch I have to merge all its contents to > thermal_core.c :-)
I agree these changes should be in thermal_helper.c
thanks, rui > > > > drivers/thermal/thermal_core.h | 9 ++++++ > > 2 files changed, 60 insertions(+) > > > > diff --git a/drivers/thermal/thermal_core.c > > b/drivers/thermal/thermal_core.c > > index 2a3f83265d8b..e2f8d2550ecd 100644 > > --- a/drivers/thermal/thermal_core.c > > +++ b/drivers/thermal/thermal_core.c > > @@ -611,6 +611,57 @@ void > > thermal_zone_device_rebind_exception(struct thermal_zone_device > > *tz, > > mutex_unlock(&thermal_list_lock); > > } > > > > +int for_each_thermal_governor(int (*cb)(struct thermal_governor *, > > void *), > > + void *data) > > > > +{ > > + struct thermal_governor *gov; > > + int ret = 0; > > + > > + mutex_lock(&thermal_governor_lock); > > + list_for_each_entry(gov, &thermal_governor_list, > > governor_list) { > > + ret = cb(gov, data); > > + if (ret) > > + break; > > + } > > + mutex_unlock(&thermal_governor_lock); > > + > > + return ret; > > +} > > + > > +int for_each_thermal_cooling_device(int (*cb)(struct > > thermal_cooling_device *, > > + void *), void *data) > > +{ > > + struct thermal_cooling_device *cdev; > > + int ret = 0; > > + > > + mutex_lock(&thermal_list_lock); > > + list_for_each_entry(cdev, &thermal_cdev_list, node) { > > + ret = cb(cdev, data); > > + if (ret) > > + break; > > + } > > + mutex_unlock(&thermal_list_lock); > > + > > + return ret; > > +} > > + > > +int for_each_thermal_zone(int (*cb)(struct thermal_zone_device *, > > void *), > > + void *data) > > +{ > > + struct thermal_zone_device *tz; > > + int ret = 0; > > + > > + mutex_lock(&thermal_list_lock); > > + list_for_each_entry(tz, &thermal_tz_list, node) { > > + ret = cb(tz, data); > > + if (ret) > > + break; > > + } > > + mutex_unlock(&thermal_list_lock); > > + > > + return ret; > > +} > > + > > void thermal_zone_device_unbind_exception(struct > > thermal_zone_device *tz, > > const char *cdev_type, > > size_t size) > > { > > diff --git a/drivers/thermal/thermal_core.h > > b/drivers/thermal/thermal_core.h > > index 4e271016b7a9..bb8f8aee79eb 100644 > > --- a/drivers/thermal/thermal_core.h > > +++ b/drivers/thermal/thermal_core.h > > @@ -41,6 +41,15 @@ extern struct thermal_governor > > *__governor_thermal_table_end[]; > > __governor < __governor_thermal_table_end; \ > > __governor++) > > > > +int for_each_thermal_zone(int (*cb)(struct thermal_zone_device *, > > void *), > > + void *); > > + > > +int for_each_thermal_cooling_device(int (*cb)(struct > > thermal_cooling_device *, > > + void *), void *); > > + > > +int for_each_thermal_governor(int (*cb)(struct thermal_governor *, > > void *), > > + void *thermal_governor); > > + > > struct thermal_attr { > > struct device_attribute attr; > > char name[THERMAL_NAME_LENGTH]; > > -- > > 2.17.1 > >
| |