2010-01-12 07:52:58

by Németh Márton

[permalink] [raw]
Subject: [PATCH] isdn: make USB device id constant

From: Márton Németh <[email protected]>

The id_table field of the struct usb_device_id is constant in <linux/usb.h>
so it is worth to make the initialization data also constant.

The semantic match that finds this kind of pattern is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@r@
disable decl_init,const_decl_init;
identifier I1, I2, x;
@@
struct I1 {
...
const struct I2 *x;
...
};
@s@
identifier r.I1, y;
identifier r.x, E;
@@
struct I1 y = {
.x = E,
};
@c@
identifier r.I2;
identifier s.E;
@@
const struct I2 E[] = ... ;
@depends on !c@
identifier r.I2;
identifier s.E;
@@
+ const
struct I2 E[] = ...;
// </smpl>

Signed-off-by: Márton Németh <[email protected]>
Cc: Julia Lawall <[email protected]>
Cc: [email protected]
---
diff -u -p a/drivers/isdn/hardware/mISDN/hfcsusb.h b/drivers/isdn/hardware/mISDN/hfcsusb.h
--- a/drivers/isdn/hardware/mISDN/hfcsusb.h 2010-01-07 19:08:40.000000000 +0100
+++ b/drivers/isdn/hardware/mISDN/hfcsusb.h 2010-01-08 13:36:54.000000000 +0100
@@ -337,7 +337,7 @@ static const char *HFC_NT_LAYER1_STATES[
};

/* supported devices */
-static struct usb_device_id hfcsusb_idtab[] = {
+static const struct usb_device_id hfcsusb_idtab[] = {
{
USB_DEVICE(0x0959, 0x2bd0),
.driver_info = (unsigned long) &((struct hfcsusb_vdata)
diff -u -p a/drivers/isdn/hisax/hfc_usb.c b/drivers/isdn/hisax/hfc_usb.c
--- a/drivers/isdn/hisax/hfc_usb.c 2010-01-07 19:08:40.000000000 +0100
+++ b/drivers/isdn/hisax/hfc_usb.c 2010-01-08 13:49:53.000000000 +0100
@@ -64,7 +64,7 @@ typedef struct {
} hfcsusb_vdata;

/* VID/PID device list */
-static struct usb_device_id hfcusb_idtab[] = {
+static const struct usb_device_id hfcusb_idtab[] = {
{
USB_DEVICE(0x0959, 0x2bd0),
.driver_info = (unsigned long) &((hfcsusb_vdata)
diff -u -p a/drivers/isdn/hisax/st5481_init.c b/drivers/isdn/hisax/st5481_init.c
--- a/drivers/isdn/hisax/st5481_init.c 2009-12-03 04:51:21.000000000 +0100
+++ b/drivers/isdn/hisax/st5481_init.c 2010-01-08 13:50:45.000000000 +0100
@@ -160,7 +160,7 @@ static void disconnect_st5481(struct usb
/*
* The last 4 bits in the Product Id is set with 4 pins on the chip.
*/
-static struct usb_device_id st5481_ids[] = {
+static const struct usb_device_id st5481_ids[] = {
{ USB_DEVICE(ST_VENDOR_ID, ST5481_PRODUCT_ID+0x0) },
{ USB_DEVICE(ST_VENDOR_ID, ST5481_PRODUCT_ID+0x1) },
{ USB_DEVICE(ST_VENDOR_ID, ST5481_PRODUCT_ID+0x2) },


2010-01-12 14:35:43

by Tilman Schmidt

[permalink] [raw]
Subject: Re: [PATCH] isdn: make USB device id constant

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Please provide a diffstat next time so that I don't have to scan
the entire patch in order to see which source files it touches.

Thanks,
Tilman

Am 2010-01-12 08:52 schrieb Németh Márton:
> From: Márton Németh <[email protected]>
>
> The id_table field of the struct usb_device_id is constant in <linux/usb.h>
> so it is worth to make the initialization data also constant.
>
> The semantic match that finds this kind of pattern is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @r@
> disable decl_init,const_decl_init;
> identifier I1, I2, x;
> @@
> struct I1 {
> ...
> const struct I2 *x;
> ...
> };
> @s@
> identifier r.I1, y;
> identifier r.x, E;
> @@
> struct I1 y = {
> .x = E,
> };
> @c@
> identifier r.I2;
> identifier s.E;
> @@
> const struct I2 E[] = ... ;
> @depends on !c@
> identifier r.I2;
> identifier s.E;
> @@
> + const
> struct I2 E[] = ...;
> // </smpl>
>
> Signed-off-by: Márton Németh <[email protected]>
> Cc: Julia Lawall <[email protected]>
> Cc: [email protected]
> ---
> diff -u -p a/drivers/isdn/hardware/mISDN/hfcsusb.h b/drivers/isdn/hardware/mISDN/hfcsusb.h
> --- a/drivers/isdn/hardware/mISDN/hfcsusb.h 2010-01-07 19:08:40.000000000 +0100
> +++ b/drivers/isdn/hardware/mISDN/hfcsusb.h 2010-01-08 13:36:54.000000000 +0100
> @@ -337,7 +337,7 @@ static const char *HFC_NT_LAYER1_STATES[
> };
>
> /* supported devices */
> -static struct usb_device_id hfcsusb_idtab[] = {
> +static const struct usb_device_id hfcsusb_idtab[] = {
> {
> USB_DEVICE(0x0959, 0x2bd0),
> .driver_info = (unsigned long) &((struct hfcsusb_vdata)
> diff -u -p a/drivers/isdn/hisax/hfc_usb.c b/drivers/isdn/hisax/hfc_usb.c
> --- a/drivers/isdn/hisax/hfc_usb.c 2010-01-07 19:08:40.000000000 +0100
> +++ b/drivers/isdn/hisax/hfc_usb.c 2010-01-08 13:49:53.000000000 +0100
> @@ -64,7 +64,7 @@ typedef struct {
> } hfcsusb_vdata;
>
> /* VID/PID device list */
> -static struct usb_device_id hfcusb_idtab[] = {
> +static const struct usb_device_id hfcusb_idtab[] = {
> {
> USB_DEVICE(0x0959, 0x2bd0),
> .driver_info = (unsigned long) &((hfcsusb_vdata)
> diff -u -p a/drivers/isdn/hisax/st5481_init.c b/drivers/isdn/hisax/st5481_init.c
> --- a/drivers/isdn/hisax/st5481_init.c 2009-12-03 04:51:21.000000000 +0100
> +++ b/drivers/isdn/hisax/st5481_init.c 2010-01-08 13:50:45.000000000 +0100
> @@ -160,7 +160,7 @@ static void disconnect_st5481(struct usb
> /*
> * The last 4 bits in the Product Id is set with 4 pins on the chip.
> */
> -static struct usb_device_id st5481_ids[] = {
> +static const struct usb_device_id st5481_ids[] = {
> { USB_DEVICE(ST_VENDOR_ID, ST5481_PRODUCT_ID+0x0) },
> { USB_DEVICE(ST_VENDOR_ID, ST5481_PRODUCT_ID+0x1) },
> { USB_DEVICE(ST_VENDOR_ID, ST5481_PRODUCT_ID+0x2) },
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/

- --
Tilman Schmidt E-Mail: [email protected]
Bonn, Germany
Diese Nachricht besteht zu 100% aus wiederverwerteten Bits.
Ungeöffnet mindestens haltbar bis: (siehe Rückseite)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.12 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAktMiLYACgkQQ3+did9BuFuxHACeIOwmUG9hzbSN3LR6O5PESzv1
BaIAoJRH+u+megLsdwe++Bn8SwW6xl58
=iLF0
-----END PGP SIGNATURE-----