Oliver Neukum <[EMAIL PROTECTED]> writes:
> Am Mittwoch, 7. Februar 2007 14:31 schrieb Sergei Organov:
>
>> struct some_descriptor descr;
>> ...
>> read_from_wire(&descr, sizeof(descr));
>> do_something_with_values(usb_get_uint16(descr->foo), bar);
>> ...
>> usb_set_uint16(descr->foo, 2385);
>>
>> where:
>>
>> static inline unsigned usb_get_uint16(__u8 const *p)
>> {
>> return p[0] | (p[1] << 8);
>> }
>
> It makes little sense to reinvent le16_to_cpu()
Unfortunately le16_to_cpu() is not exactly what's needed here, and if
I re-implement the above in terms of it:
static inline unsigned usb_get_uint16(__u8 const *p)
{
typedef __u16 __u16_alias __attribute__((__may_alias__));
__u16 v = *(__u16_alias*)p;
return le16_to_cpu(v);
}
it will bring back alignment issues (the 'p' could be mis-aligned for
__u16 type access).
-- Sergei.
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel