接前一篇文章:libdrm全解析十三 —— 源码全解析(10)
本文参考以下博文:
特此致谢!
17. DRM_IOCTL_BLOCK
第17个宏是DRM_IOCTL_BLOCK,相应代码如下:
#define DRM_IOCTL_BLOCK DRM_IOWR(0x12, struct drm_block)
结合之前文章中的_IOWR(type,nr,size)的最终定义,得到如下代码:
#define DRM_IOCTL_BLOCK ( ((3) << 30) | (('d') << 8) | ((0x12) << 0) | ((sizeof(struct drm_block)) << 16) )
struct drm_block在同文件(include/drm/drm.h)中定义,代码如下:
struct drm_block {
int unused;
};
DRM_IOCTL_BLOCK目前并无对应的Userspace API(即没有对应的封装),并且libdrm源码中也没有直接对其进行调用的代码。
18. DRM_IOCTL_UNBLOCK
第18个宏是DRM_IOCTL_UNBLOCK,相应代码如下:
#define DRM_IOCTL_UNBLOCK DRM_IOWR(0x13, struct drm_block)
结合之前文章中的_IOWR(type,nr,size)的最终定义,得到如下代码:
#define DRM_IOCTL_UNBLOCK ( ((3) << 30) | (('d') << 8) | ((0x13) << 0) | ((sizeof(struct drm_block)) << 16) )
struct drm_block的定义上边已经列出了。这就可以看出来DRM_IOCTL_BLOCK和DRM_IOCTL_UNBLOCK是一对。
既然DRM_IOCTL_BLOCK目前并无对应的Userspace API(即没有对应的封装),并且libdrm源码中也没有直接对其进行调用的代码,那么DRM_IOCTL_UNBLOCK也是一样。