Your char device is your interface between userspace appls. and module/hardware.
Your haeder file describes your interface standards (IOCTLs) for both the user space appl. and your module !
So the haeder file have to be the same included in any appl./module wants to use this interface and must only include interface definitions.
I can not folow, why it should not be possible to compile this haeder file in user space ? (for help you should post some code)
In haeders there is nothing that makes any byte of programm code so there is no execution limitation and so no compilation limitation.
The right place for your haeder file should be "/usr/include/linux/yourhaeder.h" or if you can specify a category (maybe usb) of your device "/usr/include/linux/usb/yourhaeder.h"
You should then submit your driver as a patch:
http://linuxtv.org/wiki/index.php/De...submit_patches
So you can #include <linux/usb/yourhaeder.h>
Else you can place it to "/usr/include/
modulename /yourhaeder.h" if it is only you using this module.
So you can #include <
modulename /yourhaeder.h>