When I ran "make headers_check" on upstream I got following set of warnings for the drm headers:
usr/include/drm/drm_mode.h:85: found __[us]{8,16,32,64} type without #include <linux/types.h> usr/include/drm/i915_drm.h:120: found __[us]{8,16,32,64} type without #include <linux/types.h> usr/include/drm/mga_drm.h:260: found __[us]{8,16,32,64} type without #include <linux/types.h> usr/include/drm/radeon_drm.h:758: found __[us]{8,16,32,64} type without #include <linux/types.h> usr/include/drm/via_drm.h:117: found __[us]{8,16,32,64} type without #include <linux/types.h>
When I looked through the files I noticed a few things:
1) Several files uses a mixture of native types and linux types. For example "unsigned int" and "__u32" in the same file. 2) drm.h contains: #if defined(__linux__)
#include <linux/types.h> #include <asm/ioctl.h> typedef unsigned int drm_handle_t;
#else /* One of the BSDs */
#include <sys/ioccom.h> #include <sys/types.h> typedef int8_t __s8; typedef uint8_t __u8; typedef int16_t __s16; typedef uint16_t __u16; typedef int32_t __s32; typedef uint32_t __u32; typedef int64_t __s64; typedef uint64_t __u64; typedef unsigned long drm_handle_t;
#endif
Why this when no-one else require this treatment?
3) Lots of typedefs...
All in all - too much to dig into without knowing the background for the current state.
At a minimum please get the warnings fixed.
Sam