Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1210412 > unrolled thread
| Started by | David Laight <David.Laight@ACULAB.COM> |
|---|---|
| First post | 2015-08-20 13:00 +0200 |
| Last post | 2015-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.
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
| From | David Laight <David.Laight@ACULAB.COM> |
|---|---|
| Date | 2015-08-20 13:00 +0200 |
| Subject | RE: [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]
| From | Vaishali Thakkar <vthakkar1994@gmail.com> |
|---|---|
| Date | 2015-08-22 04:00 +0200 |
| Subject | Re: [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]
| From | David Laight <David.Laight@ACULAB.COM> |
|---|---|
| Date | 2015-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]
| From | Vaishali Thakkar <vthakkar1994@gmail.com> |
|---|---|
| Date | 2015-08-24 12:50 +0200 |
| Subject | Re: [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