答案 0 :(得分:0)
此限制来自<sys/ioctl.h>
如果查看NDK分布,可能会在<asm-generic/ioctl.h>
手臂版的摘录:
#define _IOC_NRBITS 8
#define _IOC_TYPEBITS 8
#define _IOC_SIZEBITS 14
#define _IOC_DIRBITS 2
#define _IOC_NRMASK ((1 << _IOC_NRBITS)-1)
#define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1)
#define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1)
#define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1)
最终它是以这种方式完成的,因为各种参数是位域,它们被合并在一起,为实际的系统调用进入内核的单个参数:
#define _IOC(dir,type,nr,size) (((dir) << _IOC_DIRSHIFT) | ((type) << _IOC_TYPESHIFT) | ((nr) << _IOC_NRSHIFT) | ((size) << _IOC_SIZESHIFT))
请注意,total是一个很好的32位参数,可以放在一个寄存器中。