接前一篇文章:libdrm全解析十九 —— 源码全解析(16)
本文参考以下博文:
特此致谢!
本文继续对include/drm/drm.h中实际功能宏定义进行讲解。
29. DRM_IOCTL_SET_MASTER
第29个宏是DRM_IOCTL_SET_MASTER,相应代码如下:
#define DRM_IOCTL_SET_MASTER DRM_IO(0x1e)
结合之前文章中的_IO(type,nr) 的最终定义,得到如下代码:
#define DRM_IOCTL_SET_MASTER ( ((0) << 30) | (('d') << 8) | ((0x1e) << 0) | ((0) << 16) )
DRM_IOCTL_SET_MASTER对应的Userspace API为:drmSetMaster()。该函数也是在xf86drm.c中,代码如下:
drm_public int drmSetMaster(int fd)
{
return drmIoctl(fd, DRM_IOCTL_SET_MASTER, NULL);
}
函数的作用是获取DRM-Master访问权限。此函数在后文具体讲解函数的时候进行详细解析。在此先认识一下、有个印象就好。
30. DRM_IOCTL_DROP_MASTER
第30个宏是DRM_IOCTL_DROP_MASTER,相应代码如下:
#define DRM_IOCTL_DROP_MASTER DRM_IO(0x1f)
结合之前文章中的_IOWR(type,nr,size)的最终定义,得到如下代码:
#define DRM_IOCTL_DROPMASTER ( ((0) << 30) | (('d') << 8) | ((0x1f) << 0) | ((0) << 16) )
DRM_IOCTL_DROP_MASTER对应的Userspace API为:drmDropMaster()。该函数也是在xf86drm.c中,代码如下:
drm_public int drmDropMaster(int fd)
{
return drmIoctl(fd, DRM_IOCTL_DROP_MASTER, NULL);
}
函数的作用是放弃DRM-Master访问权限。此函数在后文具体讲解函数的时候进行详细解析。在此先认识一下、有个印象就好。
其余宏定义将在后续文章中继续解析。