_VKI_IOC_TYPECHECK() macro") in a way which is easier to understand.
Also, add it for arm-linux.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10990
((size) << _VKI_IOC_SIZESHIFT))
/* provoke compile error for invalid uses of size argument */
-extern unsigned int __vki_invalid_size_argument_for_IOC;
#define _VKI_IOC_TYPECHECK(t) \
((sizeof(t) == sizeof(t[1]) && \
- sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) ? \
- sizeof(t) : __vki_invalid_size_argument_for_IOC)
+ sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
+ ? sizeof(t) \
+ : /*cause gcc to complain about division by zero*/(1/0) )
/* used to create numbers */
#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
/* provoke compile error for invalid uses of size argument */
#define _VKI_IOC_TYPECHECK(t) \
- (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \
- sizeof(t) < (1 << _VKI_IOC_SIZEBITS)))
+ ((sizeof(t) == sizeof(t[1]) && \
+ sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
+ ? sizeof(t) \
+ : /*cause gcc to complain about division by zero*/(1/0) )
/* used to create numbers */
#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
/* provoke compile error for invalid uses of size argument */
#define _VKI_IOC_TYPECHECK(t) \
- (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \
- sizeof(t) < (1 << _VKI_IOC_SIZEBITS)))
+ ((sizeof(t) == sizeof(t[1]) && \
+ sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
+ ? sizeof(t) \
+ : /*cause gcc to complain about division by zero*/(1/0) )
/* used to create numbers */
#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
/* provoke compile error for invalid uses of size argument */
#define _VKI_IOC_TYPECHECK(t) \
- (sizeof(t) / (sizeof(t) == sizeof(t[1]) && \
- sizeof(t) < (1 << _VKI_IOC_SIZEBITS)))
+ ((sizeof(t) == sizeof(t[1]) && \
+ sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) \
+ ? sizeof(t) \
+ : /*cause gcc to complain about division by zero*/(1/0) )
/* used to create numbers */
#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)