Garrett D'Amore wrote: > 1) The macros themselves that make use of _IOCPARM_MASK (_IOR, _IOW, > _IORW) are "private" to ON. That is, external code shouldn't be > directly using them.
Are they? I've been working to get our DRI/DRM (graphics direct rendering, not media rights/restrictions) changes upstream - currently the drm.h header exports the ioctl defintions as: #define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK) #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_NRSHIFT 0 #define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS) #define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS) #define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS) #define _IOC_NONE 0U #define _IOC_WRITE 1U #define _IOC_READ 2U #define _IOC(dir, type, nr, size) \ (((dir) << _IOC_DIRSHIFT) | \ ((type) << _IOC_TYPESHIFT) | \ ((nr) << _IOC_NRSHIFT) | \ ((size) << _IOC_SIZESHIFT)) (For the full ugly header, see http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/drm/drm.h .) For the upstream integration, I was going to simplify, use the system provided definitions instead of making our own, and merge with the existing BSD code: #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(__sun) #include <sys/ioccom.h> #define DRM_IOCTL_NR(n) ((n) & 0xff) #define DRM_IOC_VOID IOC_VOID #define DRM_IOC_READ IOC_OUT #define DRM_IOC_WRITE IOC_IN #define DRM_IOC_READWRITE IOC_INOUT #define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size) #endif #if defined(__sun) && !defined(_IOC) #define _IOC(dir, group, nr, size) \ (dir == DRM_IOC_READWRITE ? _IOWRN(group, nr, size) : \ (dir == DRM_IOC_WRITE ? _IOWN(group, nr, size) : \ /* dir == DRM_IOC_READ */ _IORN(group, nr, size) )) #endif This is the interface between the DRM kernel modules in ON and the user space consumers in the X consolidation, but since ON doesn't deliver the drm.h header for some reason, X has a second copy that we use instead. (Unfortunately, the people who originally integrated this to ON & X aren't around any more to ask why.) If <sys/ioccom.h> added a _IOC like BSD, we'd not need any Solaris specific code, but I haven't gotten around to filing that RFE yet, and am not even sure what bug category to file against. What should we be doing here? -- -Alan Coopersmith- [EMAIL PROTECTED] Sun Microsystems, Inc. - X Window System Engineering _______________________________________________ opensolaris-code mailing list opensolaris-code@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/opensolaris-code