Skip to contentSkip to conversation

iio: adc: ad799x: constify attribute_group structures

PATCH In review simran singhal 2 participants 5 messages Mar 28, 2017 – Mar 29, 2017

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 iio: adc: ad799x: constify attribute_group structures

Check for attribute_group structures that are only stored in the event_attrs filed of iio_info structure. As the event_attrs field of iio_info structures is constant, so these attribute_group structures can also be declared constant.
Done using coccinelle:

@r1 disable optional_qualifier @
identifier i;
position p;
@@
static struct attribute_group i@p = {...};

@ok1@
identifier r1.i;
position p;
struct iio_info x;
@@
x.event_attrs=&i@p;

@bad@
position p!={r1.p,ok1.p};
identifier r1.i;
@@
i@p

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
static
+const
struct attribute_group i={...};

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
+const
struct attribute_group i;

File size before:
text data bss dec hex filename
26051 464 0 26515 6793 drivers/iio/adc/ad799x.o

File size after:
text data bss dec hex filename
26115 400 0 26515 6793 drivers/iio/adc/ad799x.o

---
 drivers/iio/adc/ad799x.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/adc/ad799x.c +1 -1
index 9704090..22426ae 100644
@@ -520,7 +520,7 @@ static struct attribute *ad799x_event_attributes[] = {
 	NULL,
 };
 
-static struct attribute_group ad799x_event_attrs_group = {
+static const struct attribute_group ad799x_event_attrs_group = {
 	.attrs = ad799x_event_attributes,
 };
 
Signature · 1 line
2.7.4
maintainer
#1 lore raw
Quoted 42 lines · simran singhal

Check for attribute_group structures that are only stored in the event_attrs filed of iio_info structure. As the event_attrs field of iio_info structures is constant, so these attribute_group structures can also be declared constant.
Done using coccinelle:

@r1 disable optional_qualifier @
identifier i;
position p;
@@
static struct attribute_group i@p = {...};

@ok1@
identifier r1.i;
position p;
struct iio_info x;
@@
x.event_attrs=&i@p;

@bad@
position p!={r1.p,ok1.p};
identifier r1.i;
@@
i@p

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
static
+const
struct attribute_group i={...};

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
+const
struct attribute_group i;

File size before:
text data bss dec hex filename
26051 464 0 26515 6793 drivers/iio/adc/ad799x.o

Quoted 5 lines

File size after:
text data bss dec hex filename
26115 400 0 26515 6793 drivers/iio/adc/ad799x.o

Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it.

Thanks,

Jonathan

Quoted 18 lines
---
 drivers/iio/adc/ad799x.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/adc/ad799x.c +1 -1
index 9704090..22426ae 100644
@@ -520,7 +520,7 @@ static struct attribute *ad799x_event_attributes[] = {
 	NULL,
 };
 
-static struct attribute_group ad799x_event_attrs_group = {
+static const struct attribute_group ad799x_event_attrs_group = {
 	.attrs = ad799x_event_attributes,
 };
 
#2 lore raw
Quoted 43 lines · Jonathan Cameron
Quoted 42 lines · simran singhal

Check for attribute_group structures that are only stored in the event_attrs filed of iio_info structure. As the event_attrs field of iio_info structures is constant, so these attribute_group structures can also be declared constant.
Done using coccinelle:

@r1 disable optional_qualifier @
identifier i;
position p;
@@
static struct attribute_group i@p = {...};

@ok1@
identifier r1.i;
position p;
struct iio_info x;
@@
x.event_attrs=&i@p;

@bad@
position p!={r1.p,ok1.p};
identifier r1.i;
@@
i@p

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
static
+const
struct attribute_group i={...};

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
+const
struct attribute_group i;

File size before:
text data bss dec hex filename
26051 464 0 26515 6793 drivers/iio/adc/ad799x.o

Quoted 8 lines
Quoted 5 lines

File size after:
text data bss dec hex filename
26115 400 0 26515 6793 drivers/iio/adc/ad799x.o

Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it.

But my tree is up-to-date and I also test it before sending.

Quoted 22 lines

Thanks,

Jonathan

Quoted 18 lines
---
 drivers/iio/adc/ad799x.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/adc/ad799x.c +1 -1
index 9704090..22426ae 100644
@@ -520,7 +520,7 @@ static struct attribute *ad799x_event_attributes[] = {
      NULL,
 };
 
-static struct attribute_group ad799x_event_attrs_group = {
+static const struct attribute_group ad799x_event_attrs_group = {
      .attrs = ad799x_event_attributes,
 };
 
maintainer
#3 lore raw
Quoted 48 lines · SIMRAN SINGHAL
Quoted 47 lines · Jonathan Cameron
Quoted 46 lines · simran singhal

Check for attribute_group structures that are only stored in the event_attrs filed of iio_info structure. As the event_attrs field of iio_info structures is constant, so these attribute_group structures can also be declared constant.
Done using coccinelle:

@r1 disable optional_qualifier @
identifier i;
position p;
@@
static struct attribute_group i@p = {...};

@ok1@
identifier r1.i;
position p;
struct iio_info x;
@@
x.event_attrs=&i@p;

@bad@
position p!={r1.p,ok1.p};
identifier r1.i;
@@
i@p

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
static
+const
struct attribute_group i={...};

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
+const
struct attribute_group i;

File size before:
text data bss dec hex filename
26051 464 0 26515 6793 drivers/iio/adc/ad799x.o

File size after:
text data bss dec hex filename
26115 400 0 26515 6793 drivers/iio/adc/ad799x.o

Quoted 6 lines
Quoted 4 lines
Quoted 1 line

Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it.

But my tree is up-to-date and I also test it before sending.

this is standard practice. I build as well before pushing out, but I only do one or two configurations of one or two architectures. The autobuilders are a set of large servers that Intel run as a service to the kernel community.

Typically they'll run a few hundred builds for dozens of processor architectures
+ a much more extensive set of static tests than most kernel developers are set up to run. Here things will almost certainly be fine, but I've been wrong before!

The only thing is I tend to push out in the evening then go to bed before the results come in, then might not get to it for a day or so to push out as togreg. This tree I am happy to rebase - that is I can drop or fixup patches with issues. The togreg branch is the one that people often base new work on, so if I change the tree under them all sorts of nasty merge issues can occur.

This is why most trees that ultimately go upstream are non rebasing - but a lot of people now have a testing branch which is deliberately unofficial - people shouldn't use it to base their trees on as it is temporary for build test purposes.

Greg has one as well (I assume this is what it is for), he just tends to be quicker about dealing with whatever comes up than I am so doesn't explicitly mention it when he takes patches.

https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git/log/?h=staging-testing

So it's nothing to worry about. I just put that note in so people don't wonder why their patch isn't immediately present in the public togreg branch of iio.git.

Jonathan

Quoted 23 lines
Quoted 23 lines

Thanks,

Jonathan

Quoted 18 lines
---
 drivers/iio/adc/ad799x.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/adc/ad799x.c +1 -1
index 9704090..22426ae 100644
@@ -520,7 +520,7 @@ static struct attribute *ad799x_event_attributes[] = {
      NULL,
 };
 
-static struct attribute_group ad799x_event_attrs_group = {
+static const struct attribute_group ad799x_event_attrs_group = {
      .attrs = ad799x_event_attributes,
 };
 
#4 lore raw
Quoted 81 lines · Jonathan Cameron
Quoted 48 lines · SIMRAN SINGHAL
Quoted 47 lines · Jonathan Cameron
Quoted 46 lines · simran singhal

Check for attribute_group structures that are only stored in the event_attrs filed of iio_info structure. As the event_attrs field of iio_info structures is constant, so these attribute_group structures can also be declared constant.
Done using coccinelle:

@r1 disable optional_qualifier @
identifier i;
position p;
@@
static struct attribute_group i@p = {...};

@ok1@
identifier r1.i;
position p;
struct iio_info x;
@@
x.event_attrs=&i@p;

@bad@
position p!={r1.p,ok1.p};
identifier r1.i;
@@
i@p

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
static
+const
struct attribute_group i={...};

@depends on !bad disable optional_qualifier@
identifier r1.i;
@@
+const
struct attribute_group i;

File size before:
text data bss dec hex filename
26051 464 0 26515 6793 drivers/iio/adc/ad799x.o

File size after:
text data bss dec hex filename
26115 400 0 26515 6793 drivers/iio/adc/ad799x.o

Quoted 6 lines
Quoted 4 lines
Quoted 1 line

Applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it.

But my tree is up-to-date and I also test it before sending.

this is standard practice. I build as well before pushing out, but I only do one or two configurations of one or two architectures. The autobuilders are a set of large servers that Intel run as a service to the kernel community.

Typically they'll run a few hundred builds for dozens of processor architectures
+ a much more extensive set of static tests than most kernel developers are set up to run. Here things will almost certainly be fine, but I've been wrong before!

The only thing is I tend to push out in the evening then go to bed before the results come in, then might not get to it for a day or so to push out as togreg. This tree I am happy to rebase - that is I can drop or fixup patches with issues. The togreg branch is the one that people often base new work on, so if I change the tree under them all sorts of nasty merge issues can occur.

This is why most trees that ultimately go upstream are non rebasing - but a lot of people now have a testing branch which is deliberately unofficial - people shouldn't use it to base their trees on as it is temporary for build test purposes.

Greg has one as well (I assume this is what it is for), he just tends to be quicker about dealing with whatever comes up than I am so doesn't explicitly mention it when he takes patches.

Quoted 6 lines

https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git/log/?h=staging-testing

So it's nothing to worry about. I just put that note in so people don't wonder why their patch isn't immediately present in the public togreg branch of iio.git.

Thanks for the explaination.

Simran

Quoted 25 lines

Jonathan

Quoted 23 lines
Quoted 23 lines

Thanks,

Jonathan

Quoted 18 lines
---
 drivers/iio/adc/ad799x.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/iio/adc/ad799x.c +1 -1
index 9704090..22426ae 100644
@@ -520,7 +520,7 @@ static struct attribute *ad799x_event_attributes[] = {
      NULL,
 };
 
-static struct attribute_group ad799x_event_attrs_group = {
+static const struct attribute_group ad799x_event_attrs_group = {
      .attrs = ad799x_event_attributes,
 };