|
@@ -60,12 +60,16 @@
|
|
((nr) << _IOC_NRSHIFT) | \
|
|
((nr) << _IOC_NRSHIFT) | \
|
|
((size) << _IOC_SIZESHIFT))
|
|
((size) << _IOC_SIZESHIFT))
|
|
|
|
|
|
|
|
+#ifdef __KERNEL__
|
|
/* provoke compile error for invalid uses of size argument */
|
|
/* provoke compile error for invalid uses of size argument */
|
|
extern unsigned int __invalid_size_argument_for_IOC;
|
|
extern unsigned int __invalid_size_argument_for_IOC;
|
|
#define _IOC_TYPECHECK(t) \
|
|
#define _IOC_TYPECHECK(t) \
|
|
((sizeof(t) == sizeof(t[1]) && \
|
|
((sizeof(t) == sizeof(t[1]) && \
|
|
sizeof(t) < (1 << _IOC_SIZEBITS)) ? \
|
|
sizeof(t) < (1 << _IOC_SIZEBITS)) ? \
|
|
sizeof(t) : __invalid_size_argument_for_IOC)
|
|
sizeof(t) : __invalid_size_argument_for_IOC)
|
|
|
|
+#else
|
|
|
|
+#define _IOC_TYPECHECK(t) (sizeof(t))
|
|
|
|
+#endif
|
|
|
|
|
|
/* used to create numbers */
|
|
/* used to create numbers */
|
|
#define _IO(type, nr) _IOC(_IOC_NONE, (type), (nr), 0)
|
|
#define _IO(type, nr) _IOC(_IOC_NONE, (type), (nr), 0)
|