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 _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel