Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1210412 > unrolled thread

RE: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16 to cpu_to_le16

Started byDavid Laight <David.Laight@ACULAB.COM>
First post2015-08-20 13:00 +0200
Last post2015-08-24 12:50 +0200
Articles 4 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  RE: [PATCH] usb: gadget: f_uac1: Convert use of  __constant_cpu_to_le16 to cpu_to_le16 David Laight <David.Laight@ACULAB.COM> - 2015-08-20 13:00 +0200
    Re: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16  to cpu_to_le16 Vaishali Thakkar <vthakkar1994@gmail.com> - 2015-08-22 04:00 +0200
      RE: [PATCH] usb: gadget: f_uac1: Convert use of  __constant_cpu_to_le16 to cpu_to_le16 David Laight <David.Laight@ACULAB.COM> - 2015-08-24 11:10 +0200
        Re: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16  to cpu_to_le16 Vaishali Thakkar <vthakkar1994@gmail.com> - 2015-08-24 12:50 +0200

#1210412 — RE: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16 to cpu_to_le16

FromDavid Laight <David.Laight@ACULAB.COM>
Date2015-08-20 13:00 +0200
SubjectRE: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16 to cpu_to_le16
Message-ID<pZvJE-2Cq-13@gated-at.bofh.it>
From: Vaishali Thakkar
> Sent: 19 August 2015 06:31
> To: Felipe Balbi
> Cc: Greg Kroah-Hartman; linux-usb@vger.kernel.org; linux-kernel@vger.kernel.org
> Subject: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16 to cpu_to_le16
> 
> In big endian cases, macro cpu_to_le16 unfolds to __swab16 which
> provides special case for constants. In little endian cases,
> __constant_cpu_to_le16 and cpu_to_le16 expand directly to the
> same expression. So, replace __constant_cpu_to_le16 with
> cpu_to_le16 with the goal of getting rid of the definition of
> __constant_cpu_to_le16 completely.
> 
> The semantic patch that performs this transformation is as follows:
> 
> @@expression x;@@
> 
> - __constant_cpu_to_le16(x)
> + cpu_to_le16(x)
> 
> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
> ---
>  drivers/usb/gadget/function/f_uac1.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c
> index 7856b33..5aa8d8a 100644
> --- a/drivers/usb/gadget/function/f_uac1.c
> +++ b/drivers/usb/gadget/function/f_uac1.c
> @@ -57,8 +57,8 @@ static struct uac1_ac_header_descriptor_1 ac_header_desc = {
>  	.bLength =		UAC_DT_AC_HEADER_LENGTH,
>  	.bDescriptorType =	USB_DT_CS_INTERFACE,
>  	.bDescriptorSubtype =	UAC_HEADER,
> -	.bcdADC =		__constant_cpu_to_le16(0x0100),
> -	.wTotalLength =		__constant_cpu_to_le16(UAC_DT_TOTAL_LENGTH),
> +	.bcdADC =		cpu_to_le16(0x0100),
> +	.wTotalLength =		cpu_to_le16(UAC_DT_TOTAL_LENGTH),

Have you test compiled this on a big-endian system?
My gut feeling is that is fails.

	David

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1211388 — Re: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16 to cpu_to_le16

FromVaishali Thakkar <vthakkar1994@gmail.com>
Date2015-08-22 04:00 +0200
SubjectRe: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16 to cpu_to_le16
Message-ID<q06ga-4Gw-9@gated-at.bofh.it>
In reply to#1210412
On Thu, Aug 20, 2015 at 4:20 PM, David Laight <David.Laight@aculab.com> wrote:
> From: Vaishali Thakkar
>> Sent: 19 August 2015 06:31
>> To: Felipe Balbi
>> Cc: Greg Kroah-Hartman; linux-usb@vger.kernel.org; linux-kernel@vger.kernel.org
>> Subject: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16 to cpu_to_le16
>>
>> In big endian cases, macro cpu_to_le16 unfolds to __swab16 which
>> provides special case for constants. In little endian cases,
>> __constant_cpu_to_le16 and cpu_to_le16 expand directly to the
>> same expression. So, replace __constant_cpu_to_le16 with
>> cpu_to_le16 with the goal of getting rid of the definition of
>> __constant_cpu_to_le16 completely.
>>
>> The semantic patch that performs this transformation is as follows:
>>
>> @@expression x;@@
>>
>> - __constant_cpu_to_le16(x)
>> + cpu_to_le16(x)
>>
>> Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com>
>> ---
>>  drivers/usb/gadget/function/f_uac1.c | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c
>> index 7856b33..5aa8d8a 100644
>> --- a/drivers/usb/gadget/function/f_uac1.c
>> +++ b/drivers/usb/gadget/function/f_uac1.c
>> @@ -57,8 +57,8 @@ static struct uac1_ac_header_descriptor_1 ac_header_desc = {
>>       .bLength =              UAC_DT_AC_HEADER_LENGTH,
>>       .bDescriptorType =      USB_DT_CS_INTERFACE,
>>       .bDescriptorSubtype =   UAC_HEADER,
>> -     .bcdADC =               __constant_cpu_to_le16(0x0100),
>> -     .wTotalLength =         __constant_cpu_to_le16(UAC_DT_TOTAL_LENGTH),
>> +     .bcdADC =               cpu_to_le16(0x0100),
>> +     .wTotalLength =         cpu_to_le16(UAC_DT_TOTAL_LENGTH),
>
> Have you test compiled this on a big-endian system?
> My gut feeling is that is fails.

No. I have tested it on little-endian system only. But I'll
be really surprised if this will fail. Can you please tell me
if I am missing something in this particular case or same
applies for other cases because most of the cases like
__constant_<foo> are already converted to <foo>?

As far as I know, if the argument is a constant the
conversion happens at compile time. And unfolding both
definitions returns to same expression. Still I am trying if
someone can test it for me on big endian system.

>         David
>



-- 
Vaishali
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1211932

FromDavid Laight <David.Laight@ACULAB.COM>
Date2015-08-24 11:10 +0200
Message-ID<q0VVn-3cH-7@gated-at.bofh.it>
In reply to#1211388
RnJvbTogVmFpc2hhbGkgVGhha2thciBbbWFpbHRvOnZ0aGFra2FyMTk5NEBnbWFpbC5jb21dDQo+
IFNlbnQ6IDIyIEF1Z3VzdCAyMDE1IDAyOjU3DQouLi4NCj4gPj4gLSAgICAgLmJjZEFEQyA9ICAg
ICAgICAgICAgICAgX19jb25zdGFudF9jcHVfdG9fbGUxNigweDAxMDApLA0KPiA+PiAtICAgICAu
d1RvdGFsTGVuZ3RoID0gICAgICAgICBfX2NvbnN0YW50X2NwdV90b19sZTE2KFVBQ19EVF9UT1RB
TF9MRU5HVEgpLA0KPiA+PiArICAgICAuYmNkQURDID0gICAgICAgICAgICAgICBjcHVfdG9fbGUx
NigweDAxMDApLA0KPiA+PiArICAgICAud1RvdGFsTGVuZ3RoID0gICAgICAgICBjcHVfdG9fbGUx
NihVQUNfRFRfVE9UQUxfTEVOR1RIKSwNCj4gPg0KPiA+IEhhdmUgeW91IHRlc3QgY29tcGlsZWQg
dGhpcyBvbiBhIGJpZy1lbmRpYW4gc3lzdGVtPw0KPiA+IE15IGd1dCBmZWVsaW5nIGlzIHRoYXQg
aXMgZmFpbHMuDQo+IA0KPiBOby4gSSBoYXZlIHRlc3RlZCBpdCBvbiBsaXR0bGUtZW5kaWFuIHN5
c3RlbSBvbmx5LiBCdXQgSSdsbA0KPiBiZSByZWFsbHkgc3VycHJpc2VkIGlmIHRoaXMgd2lsbCBm
YWlsLiBDYW4geW91IHBsZWFzZSB0ZWxsIG1lDQo+IGlmIEkgYW0gbWlzc2luZyBzb21ldGhpbmcg
aW4gdGhpcyBwYXJ0aWN1bGFyIGNhc2Ugb3Igc2FtZQ0KPiBhcHBsaWVzIGZvciBvdGhlciBjYXNl
cyBiZWNhdXNlIG1vc3Qgb2YgdGhlIGNhc2VzIGxpa2UNCj4gX19jb25zdGFudF88Zm9vPiBhcmUg
YWxyZWFkeSBjb252ZXJ0ZWQgdG8gPGZvbz4/DQo+IA0KPiBBcyBmYXIgYXMgSSBrbm93LCBpZiB0
aGUgYXJndW1lbnQgaXMgYSBjb25zdGFudCB0aGUNCj4gY29udmVyc2lvbiBoYXBwZW5zIGF0IGNv
bXBpbGUgdGltZS4gQW5kIHVuZm9sZGluZyBib3RoDQo+IGRlZmluaXRpb25zIHJldHVybnMgdG8g
c2FtZSBleHByZXNzaW9uLiBTdGlsbCBJIGFtIHRyeWluZyBpZg0KPiBzb21lb25lIGNhbiB0ZXN0
IGl0IGZvciBtZSBvbiBiaWcgZW5kaWFuIHN5c3RlbS4NCg0KRmxpcCBvbmUgdG8gY3B1X3RvX2Jl
MTYoKSBhbmQgc2VlIGlmIGl0IHN0aWxsIGNvbXBpbGVzLg0KDQpTdGF0aWMgaW5pdGlhbGlzZXJz
IGFuZCBjYXNlIGxhYmVscyBjYW4gYmUgZXhwcmVzc2lvbnMsIGJ1dCB0aGUNCmV4cHJlc3Npb24g
aXRzZWxmIG11c3Qgb25seSBjb250YWluIGNvbnN0YW50cy4NClNvIGl0IG5lZWRzIHRvIGJlIGNv
bnN0YW50IHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGFueSBjb25zdGFudHMuDQpJZiBpdCBj
b250YWlucyAnYSA/IHQgOiBmJyB0aGVuIGJvdGggJ3QnIGFuZCAnZicgbXVzdCBiZSBjb25zdGFu
dC4NCg0KSW4gY29kZSwgaWYgJ2EnIGlzIGNvbnN0YW50IHRoZSBvcHRpbWlzZXIgZGlzY2FyZHMg
b25lIG9mICd0JyBvciAnZicuDQpJJ20gbm90IHN1cmUgd2hhdCBoYXBwZW5zIGZvciBub24tc3Rh
dGljIGluaXRpYWxpc2VycyAodGhleSBnZW5lcmF0ZQ0Kb2RkIGNvZGUgYXQgdGhlIGJlc3Qgb2Yg
dGltZXMpLg0KDQoJRGF2aWQNCg0K
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1212070 — Re: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16 to cpu_to_le16

FromVaishali Thakkar <vthakkar1994@gmail.com>
Date2015-08-24 12:50 +0200
SubjectRe: [PATCH] usb: gadget: f_uac1: Convert use of __constant_cpu_to_le16 to cpu_to_le16
Message-ID<q0Xu9-5hU-9@gated-at.bofh.it>
In reply to#1211932
On Mon, Aug 24, 2015 at 2:29 PM, David Laight <David.Laight@aculab.com> wrote:
> From: Vaishali Thakkar [mailto:vthakkar1994@gmail.com]
>> Sent: 22 August 2015 02:57
> ...
>> >> -     .bcdADC =               __constant_cpu_to_le16(0x0100),
>> >> -     .wTotalLength =         __constant_cpu_to_le16(UAC_DT_TOTAL_LENGTH),
>> >> +     .bcdADC =               cpu_to_le16(0x0100),
>> >> +     .wTotalLength =         cpu_to_le16(UAC_DT_TOTAL_LENGTH),
>> >
>> > Have you test compiled this on a big-endian system?
>> > My gut feeling is that is fails.
>>
>> No. I have tested it on little-endian system only. But I'll
>> be really surprised if this will fail. Can you please tell me
>> if I am missing something in this particular case or same
>> applies for other cases because most of the cases like
>> __constant_<foo> are already converted to <foo>?
>>
>> As far as I know, if the argument is a constant the
>> conversion happens at compile time. And unfolding both
>> definitions returns to same expression. Still I am trying if
>> someone can test it for me on big endian system.
>
> Flip one to cpu_to_be16() and see if it still compiles.

Yes. It still compiles.

> Static initialisers and case labels can be expressions, but the
> expression itself must only contain constants.
> So it needs to be constant regardless of the value of any constants.
> If it contains 'a ? t : f' then both 't' and 'f' must be constant.
>
> In code, if 'a' is constant the optimiser discards one of 't' or 'f'.
> I'm not sure what happens for non-static initialisers (they generate
> odd code at the best of times).
>
>         David
>



-- 
Vaishali
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web