On 2012.08.22 11:21, Hans de Goede wrote:
> I would prefer to stick with the __u32, as that is what is in the kernels
> *userspace* headers
It's 2012, C99 + stdint.h have been around for more than decade [1],
and, unlike what may be the case for kernel developers who may worry
about C89 compatibility, we very much rely on that header being
available always in libusbx (#include <stdint.h> is part of libusb.h).
Thus, unless uint32_t and __u32 present incompatibilities on some Linux
platforms, in my view, using __u32 when uint32_t would do is really akin
to doing something like:
#define integer int
and then proceed to use 'integer' in lieu of 'int' in your source.
We already brought stdint.h types to very C99-reluctant platforms, such
as (older) MSVC's, so unless there's a technical reason not to use
uint32_t on Linux, I would *strongly* advise that we stick to C99 stdint
types. Makes it easier for everyone to follow our code, with one of the
rationale being that, if we go with __u32 above, someone may wonder why
we didn't go with uint32_t there, and waste time on a pointless search.
Besides, if after 10 years availability and countless evidence of
reinvention of the wheel for ## bit types, even if noone else is going
to promote stdint.h types, I sure as hell will.
> which we need anyways for the _IOWR / _IOR / _IOW macros.
except there isn't a C standard that sets a common definition for _IOWR
and friends, so it's a different issue.
> Ideally we would not have linux_usbfs.h at all, and instead
> use "#include <linux/usbdevice_fs.h>", but that will break things if
> that header is too old, so we're stuck with a private copy of that file...
This, I see no problem with. When there's no choice, you do what you
have to do. But for uint32_t vs __u32 we do have a choice, and one of
them is part of an actual C standard...
Regards,
/Pete
[1] http://en.wikipedia.org/wiki/C_standard_library#Header_files
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
libusbx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libusbx-devel