libdrm全解析十四 —— 源码全解析(11)

接前一篇文章:libdrm全解析十三 —— 源码全解析(10)

本文参考以下博文:

DRM 驱动程序开发(VKMS)

特此致谢!

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也是一样。

猜你喜欢

转载自blog.csdn.net/phmatthaus/article/details/132477481