2012-06-18 04:52:40

by Anton Vorontsov

[permalink] [raw]
Subject: [PATCH] thermal: Constify 'type' argument for the registration routine

thermal_zone_device_register() does not modify 'type' argument, so
it is safe to declare it as const. Otherwise, if we pass a const
string, we are getting the ugly warning:

CC drivers/power/power_supply_core.o
drivers/power/power_supply_core.c: In function 'psy_register_thermal':
drivers/power/power_supply_core.c:204:6: warning: passing argument 1 of ‘thermal_zone_device_register’ discards 'const' qualifier from pointer target type [enabled by default]
include/linux/thermal.h:140:29: note: expected 'char *' but argument is of type 'const char *'

Signed-off-by: Anton Vorontsov <[email protected]>
---
drivers/thermal/thermal_sys.c | 2 +-
include/linux/thermal.h | 3 ++-
2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index 022bacb..3bf68c9 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -1106,7 +1106,7 @@ EXPORT_SYMBOL(thermal_zone_device_update);
* longer needed. The passive cooling formula uses tc1 and tc2 as described in
* section 11.1.5.1 of the ACPI specification 3.0.
*/
-struct thermal_zone_device *thermal_zone_device_register(char *type,
+struct thermal_zone_device *thermal_zone_device_register(const char *type,
int trips, void *devdata,
const struct thermal_zone_device_ops *ops,
int tc1, int tc2, int passive_delay, int polling_delay)
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 796f1ff..ef75757 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -137,7 +137,8 @@ enum {
};
#define THERMAL_GENL_CMD_MAX (__THERMAL_GENL_CMD_MAX - 1)

-struct thermal_zone_device *thermal_zone_device_register(char *, int, void *,
+struct thermal_zone_device *
+thermal_zone_device_register(const char *, int, void *,
const struct thermal_zone_device_ops *, int tc1, int tc2,
int passive_freq, int polling_freq);
void thermal_zone_device_unregister(struct thermal_zone_device *);
--
1.7.10.4


2012-06-18 06:19:17

by Jean Delvare

[permalink] [raw]
Subject: Re: [PATCH] thermal: Constify 'type' argument for the registration routine

On Sun, 17 Jun 2012 21:50:37 -0700, Anton Vorontsov wrote:
> thermal_zone_device_register() does not modify 'type' argument, so
> it is safe to declare it as const. Otherwise, if we pass a const
> string, we are getting the ugly warning:
>
> CC drivers/power/power_supply_core.o
> drivers/power/power_supply_core.c: In function 'psy_register_thermal':
> drivers/power/power_supply_core.c:204:6: warning: passing argument 1 of ‘thermal_zone_device_register’ discards 'const' qualifier from pointer target type [enabled by default]
> include/linux/thermal.h:140:29: note: expected 'char *' but argument is of type 'const char *'
>
> Signed-off-by: Anton Vorontsov <[email protected]>
> ---
> drivers/thermal/thermal_sys.c | 2 +-
> include/linux/thermal.h | 3 ++-
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
> index 022bacb..3bf68c9 100644
> --- a/drivers/thermal/thermal_sys.c
> +++ b/drivers/thermal/thermal_sys.c
> @@ -1106,7 +1106,7 @@ EXPORT_SYMBOL(thermal_zone_device_update);
> * longer needed. The passive cooling formula uses tc1 and tc2 as described in
> * section 11.1.5.1 of the ACPI specification 3.0.
> */
> -struct thermal_zone_device *thermal_zone_device_register(char *type,
> +struct thermal_zone_device *thermal_zone_device_register(const char *type,
> int trips, void *devdata,
> const struct thermal_zone_device_ops *ops,
> int tc1, int tc2, int passive_delay, int polling_delay)
> diff --git a/include/linux/thermal.h b/include/linux/thermal.h
> index 796f1ff..ef75757 100644
> --- a/include/linux/thermal.h
> +++ b/include/linux/thermal.h
> @@ -137,7 +137,8 @@ enum {
> };
> #define THERMAL_GENL_CMD_MAX (__THERMAL_GENL_CMD_MAX - 1)
>
> -struct thermal_zone_device *thermal_zone_device_register(char *, int, void *,
> +struct thermal_zone_device *
> +thermal_zone_device_register(const char *, int, void *,
> const struct thermal_zone_device_ops *, int tc1, int tc2,
> int passive_freq, int polling_freq);
> void thermal_zone_device_unregister(struct thermal_zone_device *);

Acked-by: Jean Delvare <[email protected]>

--
Jean Delvare

2012-06-20 00:11:30

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] thermal: Constify 'type' argument for the registration routine

On Sun, 17 Jun 2012 21:50:37 -0700
Anton Vorontsov <[email protected]> wrote:

> thermal_zone_device_register() does not modify 'type' argument, so
> it is safe to declare it as const. Otherwise, if we pass a const
> string, we are getting the ugly warning:
>
> ...
>

For some reason I can't apply this. I typed it in again and it seems
to work OK. I'll assume that someone else will merge it into
whatever-tree-broke.

> --- a/include/linux/thermal.h
> +++ b/include/linux/thermal.h
> @@ -137,7 +137,8 @@ enum {
> };
> #define THERMAL_GENL_CMD_MAX (__THERMAL_GENL_CMD_MAX - 1)
>
> -struct thermal_zone_device *thermal_zone_device_register(char *, int, void *,
> +struct thermal_zone_device *
> +thermal_zone_device_register(const char *, int, void *,
> const struct thermal_zone_device_ops *, int tc1, int tc2,
> int passive_freq, int polling_freq);
> void thermal_zone_device_unregister(struct thermal_zone_device *);

Personally, I prefer it when the arguments are named in the declaration
- if you ever have reason to *read* the thing, the lack of names is
quite maddening. Particularly when the function has 72 arguments.

But naming some of them and not others is just daft.

2012-06-20 01:28:29

by Anton Vorontsov

[permalink] [raw]
Subject: Re: [PATCH] thermal: Constify 'type' argument for the registration routine

On Tue, Jun 19, 2012 at 05:11:28PM -0700, Andrew Morton wrote:
> On Sun, 17 Jun 2012 21:50:37 -0700
> Anton Vorontsov <[email protected]> wrote:
>
> > thermal_zone_device_register() does not modify 'type' argument, so
> > it is safe to declare it as const. Otherwise, if we pass a const
> > string, we are getting the ugly warning:
> >
> > ...
> >
>
> For some reason I can't apply this.

The reason is the same patch in ACPI tree that "broke" battery tree;
we're just touching the same lines of code and that causes some pain.

> I typed it in again and it seems
> to work OK. I'll assume that someone else will merge it into
> whatever-tree-broke.

Len, will you merge this patch? Or should I take it into battery
tree? (If I'm taking it, then Stephen will have to resolve some
conflicts upon next -next tree generation.)

> > +struct thermal_zone_device *
> > +thermal_zone_device_register(const char *, int, void *,
> > const struct thermal_zone_device_ops *, int tc1, int tc2,
> > int passive_freq, int polling_freq);
> > void thermal_zone_device_unregister(struct thermal_zone_device *);
>
> Personally, I prefer it when the arguments are named in the declaration
> - if you ever have reason to *read* the thing, the lack of names is
> quite maddening. Particularly when the function has 72 arguments.

:-)

--
Anton Vorontsov
Email: [email protected]