libdrm全解析二十 —— 源码全解析(17)

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

本文参考以下博文:

DRM 驱动程序开发(VKMS)

特此致谢!

本文继续对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访问权限。此函数在后文具体讲解函数的时候进行详细解析。在此先认识一下、有个印象就好。

其余宏定义将在后续文章中继续解析。

猜你喜欢

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