当前位置: 首页 > news >正文

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

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

http://www.lryc.cn/news/139273.html

相关文章:

  • 基于docker搭建owncloud Harbor 构建镜像
  • 往Buildroot中增加Qt项目
  • C#-Tolewer和ToUpper的使用
  • RabbitMQ集群搭建和测试总结_亲测
  • SQLSTATE[IMSSP]: The active result for the query contains no fields.
  • 在Flutter应用内部实现分屏功能
  • Docker常用操作命令(二)
  • vue3 tailwindcss的使用
  • redis 基础篇(redis 理解)
  • C++系列-函数重载
  • leetcode-23.合并k个升序链表-day17
  • Linux scp命令
  • vue 简单实验 v-bind 变量与html属性绑定
  • 114.(cesium篇)cesium去掉时间轴并用按钮控制运动
  • 2023年清洁能源与智能电网国际会议(CCESG 2023)
  • RISC-V中国峰会 | 256核服务器高调亮相,谁与争锋?
  • 树套树小结
  • android 解决sdk代码冲突
  • C++逆天合集
  • stm32之15.超声波与灯光功能一起实现(进阶)
  • 美创科技荣获“2023年网络安全优秀创新成果大赛—杭州分站赛”两项优胜奖
  • 使用gdb+gdbserver远程调试aarch64平台程序
  • 【CesiumJS入门】(9)获取地表两点的距离及中心点——EllipsoidGeodesic
  • OLED透明屏介绍:领先科技的革命性创新
  • ESXI补丁更新
  • 【每日易题】数组下标的逆天用法——你见过把数组存储的值当作数组下标来解题的吗?
  • mysql基本操作
  • vue组件的使用
  • Axure设计之日期选择器(年月选择)
  • CAD泰森多边形框架3D插件