59 lines
1.8 KiB
C
Executable File
59 lines
1.8 KiB
C
Executable File
#ifndef _VOS_KER_IOCTL_H_
|
|
#define _VOS_KER_IOCTL_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*-----------------------------------------------------------------------------*/
|
|
/* Including Files */
|
|
/*-----------------------------------------------------------------------------*/
|
|
#if defined(__LINUX) && defined(__KERNEL__)
|
|
#include <asm/ioctl.h>
|
|
#define _VOS_IO _IO
|
|
#define _VOS_IOR _IOR
|
|
#define _VOS_IOW _IOW
|
|
#define _VOS_IOWR _IOWR
|
|
|
|
#elif defined(__FREERTOS)
|
|
#define _VOS_IOC_NRBITS 8
|
|
#define _VOS_IOC_TYPEBITS 8
|
|
#define _VOS_IOC_SIZEBITS 14
|
|
|
|
#define _VOS_IOC_NRSHIFT 0
|
|
#define _VOS_IOC_TYPESHIFT (_VOS_IOC_NRSHIFT + _VOS_IOC_NRBITS)
|
|
#define _VOS_IOC_SIZESHIFT (_VOS_IOC_TYPESHIFT + _VOS_IOC_TYPEBITS)
|
|
#define _VOS_IOC_DIRSHIFT (_VOS_IOC_SIZESHIFT + _VOS_IOC_SIZEBITS)
|
|
|
|
#define _VOS_IOC_NONE 0U
|
|
#define _VOS_IOC_WRITE 1U
|
|
#define _VOS_IOC_READ 2U
|
|
|
|
#define _VOS_IOC(dir,type,nr,size) \
|
|
(((dir) << _VOS_IOC_DIRSHIFT) | \
|
|
((type) << _VOS_IOC_TYPESHIFT) | \
|
|
((nr) << _VOS_IOC_NRSHIFT) | \
|
|
((size) << _VOS_IOC_SIZESHIFT))
|
|
|
|
#define _VOS_IOC_TYPECHECK(t) (sizeof(t))
|
|
|
|
#define _VOS_IO(type,nr) _VOS_IOC(_VOS_IOC_NONE,(type),(nr),0)
|
|
#define _VOS_IOR(type,nr,size) _VOS_IOC(_VOS_IOC_READ,(type),(nr),(_VOS_IOC_TYPECHECK(size)))
|
|
#define _VOS_IOW(type,nr,size) _VOS_IOC(_VOS_IOC_WRITE,(type),(nr),(_VOS_IOC_TYPECHECK(size)))
|
|
#define _VOS_IOWR(type,nr,size) _VOS_IOC(_VOS_IOC_READ|_VOS_IOC_WRITE,(type),(nr),(_VOS_IOC_TYPECHECK(size)))
|
|
|
|
#else //assume this is Linux user-space
|
|
#include <sys/ioctl.h>
|
|
#define _VOS_IO _IO
|
|
#define _VOS_IOR _IOR
|
|
#define _VOS_IOW _IOW
|
|
#define _VOS_IOWR _IOWR
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _VOS_KER_IOCTL_H_ */
|
|
|