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

libdrm全解析三十八 —— 源码全解析(35)

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

本文参考以下博文:

DRM 驱动程序开发(VKMS)

特此致谢!

前一篇文章讲解完了drmModeSetCrtc(crtc_id, fb_id, connector_id, mode),DRM一般流程的也就讲完了。但是实际上还有一部分没有在一般流程中,但其也是很重要且必不可少的,这就是资源的释放。这其中包括了很多函数:drmModeRmFB()、munmap()、drmIoctl(DRM_IOCTL_MODE_DESTROY_DUMB)、drmModeFreeConnector()、drmModeFreeResources()。这些函数都是一般流程各步骤所调用函数的反函数。下边对于这些函数逐个来进行分析。

先来看drmModeRmFB函数。它与drmModeAddFB()是一对。

75. DRM_IOCTL_MODE_RMFB

第75个宏是DRM_IOCTL_MODE_RMFB,相应代码如下:

#define DRM_IOCTL_MODE_RMFB		DRM_IOWR(0xAF, unsigned int)

结合之前文章中的_IOWR(type,nr,size)的最终定义,得到如下代码:

#define DRM_IOCTL_MODE_RMFB        ( ((3)  << 30) | (('d') << 8) | ((0xAF)   << 0) | ((sizeof(unsigned int)) << 16) )

DRM_IOCTL_MODE_RMFB对应的Userspace API为:drmModeRMFB()。该函数在xf86drmMode.c中,代码如下:

drm_public int drmModeRmFB(int fd, uint32_t bufferId)
{return DRM_IOCTL(fd, DRM_IOCTL_MODE_RMFB, &bufferId);
}

函数的作用是销毁指定的framebuffer object(之前通过drmModeAddFB函数向DRM驱动注册的framebuffer object)。

实例代码片段如下:

uint32_t fb_id;
……
drmModeAddFB(fd, create.width, create.height, 24, 32, create.pitch,create.handle, &fb_id); 
……
drmModeRmFB(fd, fb_id);

资源释放流程中的其余函数将在后续文章中进行解析。

相关文章:

libdrm全解析三十八 —— 源码全解析(35)

接前一篇文章&#xff1a;libdrm全解析三十七 —— 源码全解析&#xff08;34&#xff09; 本文参考以下博文&#xff1a; DRM 驱动程序开发&#xff08;VKMS&#xff09; 特此致谢&#xff01; 前一篇文章讲解完了drmModeSetCrtc(crtc_id, fb_id, connector_id, mode)&#…...

jar包和war包的区别

SpringBoot项目既可以打成war包发布&#xff0c;也可以找成jar包发布。 jar包 jar包&#xff1a;直接通过内置Tomcat运行&#xff0c;不需要额外安装Tomcat。如需修改内置Tomcat的配置&#xff0c;只需要在SpringBoot的配置文件中配置。内置Tomcat没有自己的日志输出&#xff0…...

CloudCompare 二次开发(10)——点云投影到平面

目录 一、概述二、代码集成三、结果展示一、概述 不依赖任何第三方点云相关库,使用CloudCompare编程实现点云投影到指定平面,具体计算原理见:PCL 点云投影到拟合平面 二、代码集成 1、mainwindow.h文件public中添加: void doActionProjectToPlane(); // 投影到平面2、…...

如何制作并运行 jar 程序

以下是用 Intellij 制作 jar 程序&#xff0c;并运行的方法。 【1】新建工程&#xff0c;保持默认选项&#xff0c;Next 【2】保持默认选项&#xff0c;Next 【3】给工程命名&#xff0c;设置保存位置&#xff0c;Finish 【4】新建工程结束&#xff0c;进入开发界面 【5】展开…...

Hadoop MapReduce 调优参数

文章目录 MapReduce 调优参数详解MapReduce 调优参数一键复制 前言&#xff1a; 下列参数基于 hadoop v3.1.3 版本&#xff0c;共三台服务器&#xff0c;配置都为 4 核&#xff0c;4G 内存。 MapReduce 调优参数详解 这个参数定义了在 Reduce 阶段同时进行的拷贝操作的数量&…...

springboot 与 Redis整合

SpringBoot 操作数据&#xff1a;Spring-data jpa jdbc mongodb redis! SpringData 也是和SpringBoot 齐名的项目&#xff01; 说明&#xff1a;在SpringBoot2.X 之后&#xff0c;原来使用的jedis被替换成了lettuce jedis&#xff1a; 采用的直连&#xff0c;多个线程操作的话&…...

如何高效地设计测试用例并评审

编写出好的测试用例是每一个测试工程师的职责&#xff0c;但在实际工作中大家写的测试用例往往需要不断地修改才能使用&#xff0c;这不仅浪费了时间&#xff0c;还容易让测试工程师产生自我否定的情绪&#xff0c;甚至在团队中产生各种矛盾。 那如何高效地设计测试用例呢&…...

基于python+Django知识图谱的医疗问答系统设计与实现

摘 要 从信息技术的发展至今&#xff0c;各色各样的技术能够满足各类人群的需求&#xff0c;能够让各种业务行业的痛点变成能够可以解决的方法&#xff0c;随着我们经济的不断提高&#xff0c;越来越多的人都该关注健康&#xff0c;那么健康饮食、健康医疗是我们生活中所追求的…...

cuda编程常见问题

cuda环境配置 参考链接 https://blog.csdn.net/weixin_43788327/article/details/125823507?spm1001.2014.3001.5506 疑难问题 在学习《GPU高性能编程CUDA实战》这本书时&#xff0c;发现书里面的代码很多变量都没定义过&#xff0c;经过搜索发现这都是书上自带的代码。 代…...

QTday3

作业1&#xff1a;通过对话框实现保存文件 void burger::on_saveBtn_clicked() {//调用函数&#xff0c;获取文件路径QString filename QFileDialog::getSaveFileName(this,"选择文件夹","./","Text File(*.txt)");if(filename.isNull()){QMes…...

docker镜像是如何导入的?

镜像导入是由image/tarexport/load.go#tarexporter.Load()完成的 以下代码参考github.com/docker/docker版本v0.0.0-20181129155816-baab736a3649 主要是注册镜像信息以及解包镜像tar流到新root 导出和保存的区别在于 导出(export): 仅导出文件结构保存(save): 保存镜像历史和元…...

四川大学874考研真题00-23

22, 2022年硕士学位研究生入学考试试题回忆版 数据结构 1&#xff0e;一个时间复杂度为n2 的算法运行&#xff0c;m1算n个问题用时1秒&#xff0c;m2处理器是m1效率的64倍&#xff0c;则m2每秒能计算&#xff08;&#xff09;个问题。 A. 64n B. 8n …...

openGauss学习笔记-58 openGauss 高级特性-资源池化

文章目录 openGauss学习笔记-58 openGauss 高级特性-资源池化58.1 特性简介58.2 架构介绍58.3 功能特点58.4 适用场景与限制58.5 手动安装示例58.6 OCK RDMA使用示例58.7 OCK SCRLock使用示例 openGauss学习笔记-58 openGauss 高级特性-资源池化 58.1 特性简介 资源池化特性主…...

centos升级cmake之相关问题解决

1. yum安装(仓库默认版本) # 查看可安装版本 yum --showduplicates list xxxx# 安装指定版本 yum install xxxx-1.23.1 2. 安装高版本cmake 2.1 一开始下载的是cmake-xxx.zip&#xff0c;在 ./bootstrap 一直会报错“missing terminating " character”&#xff0c;后来…...

vcs仿真教程(查看断言)

VCS是在linux下面用来进行仿真看波形的工具&#xff0c;类似于windows下面的modelsim以及questasim等工具&#xff0c;以及quartus、vivado仿真的操作。 1.vcs的基本指令 vcs的常见指令后缀 sim常见指令 2.使用vcs的实例 &#xff08;1&#xff09;新建文件夹&#xff1a; …...

2023开学礼新疆石河子大学图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工

2023开学礼新疆石河子大学图书馆藏八一新书《乡村振兴战略下传统村落文化旅游设计》许少辉新财经理工...

javaee spring aop 切入点表达式

1、切入点表达式&#xff1a;对指定的方法进行拦截&#xff0c;并且生成代理表达式。 表达式语法&#xff1a;execution([修饰符] 返回值类型 包名.类名.方法名(参数))execution( public void com.test.service.impl.UsersService.add() )2、表达式不同写法 1.匹配指定方法 …...

js 获得元素的offsetLeft

要获得元素相对于其offsetParent元素左侧边缘的距离&#xff08;即offsetLeft&#xff09;&#xff0c;可以使用如下代码&#xff1a; var el document.getElementById(your-element-id); var offsetLeft el.offsetLeft;其中&#xff0c;el为要获取offsetLeft的元素对象&…...

【Spring面试题】IOC控制反转和DI依赖注入(详解)

IOC Inversion of Control 控制反转&#xff0c;是一种面向对象的思想。 控制反转就是把创建和管理 bean 的过程转移给了第三方。而这个第三方&#xff0c;就是 Spring IoC Container&#xff0c;对于 IoC 来说&#xff0c;最重要的就是容器。 通俗点讲&#xff0c;因为项目…...

LeetCode 2511. 最多可以摧毁的敌人城堡数目

【LetMeFly】2511.最多可以摧毁的敌人城堡数目 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-enemy-forts-that-can-be-captured/ 给你一个长度为 n &#xff0c;下标从 0 开始的整数数组 forts &#xff0c;表示一些城堡。forts[i] 可以是 -1 &#xff0c…...

Comsol 多裂纹水力压裂扩展:拉伸与压缩下的破坏探索

comsol多裂纹水力压裂扩展&#xff0c;可以实现拉伸和压缩下的破坏。在工程领域&#xff0c;水力压裂是一项至关重要的技术&#xff0c;尤其在石油和天然气开采等方面应用广泛。而 Comsol 作为强大的多物理场仿真软件&#xff0c;为我们研究多裂纹水力压裂扩展提供了有力工具&a…...

WDMHDA:Windows 旧系统高清音频驱动的突破与挑战

【导语&#xff1a;WDMHDA 是一款适用于 Windows 98SE / ME 的高清音频驱动程序&#xff0c;为旧系统的音频功能带来新可能。但目前处于 Alpha 阶段&#xff0c;存在诸多待解决问题&#xff0c;其发展对旧系统音频生态有重要影响。】WDMHDA&#xff1a;旧系统音频驱动新选择WDM…...

你的电机仿真结果靠谱吗?聊聊Maxwell瞬态分析里那些容易被忽略的‘坑’

电机仿真精度提升指南&#xff1a;Maxwell瞬态分析中的关键细节与验证方法 当你在凌晨三点盯着屏幕上那条波动异常的转矩曲线时&#xff0c;是否曾怀疑过自己的仿真模型在说谎&#xff1f;作为从业十五年的电磁仿真专家&#xff0c;我见过太多工程师在项目验收前夜才发现仿真结…...

Docker 安装 Portainer(Docker 容器管理工具)

安装步骤 1. 创建 Portainer 数据卷&#xff08;可选&#xff0c;用于持久化数据&#xff09; docker volume create portainer_data2. 运行 Portainer 容器 方式一&#xff1a;Docker 命令运行 docker run -d \-p 8000:8000 \-p 9443:9443 \--name portainer \--restartalways…...

5个高效管理技巧:用Ice实现macOS菜单栏清爽体验

5个高效管理技巧&#xff1a;用Ice实现macOS菜单栏清爽体验 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice macOS菜单栏作为日常操作的核心区域&#xff0c;常常因应用图标过多而变得杂乱无章&#…...

解密Qwen2VLImageProcessor:从RGB转换到时空补丁的完整预处理流水线

解密Qwen2VLImageProcessor&#xff1a;从RGB转换到时空补丁的完整预处理流水线 在计算机视觉与多模态模型融合的前沿领域&#xff0c;图像预处理流水线的设计质量直接影响着模型性能的天花板。Qwen2VLImageProcessor作为专为Qwen2-VL模型设计的预处理引擎&#xff0c;其独特之…...

别再死磕MIG了!ZYNQ PS端DDR3做帧缓存,用VDMA+HP接口实战指南

ZYNQ视频处理架构革命&#xff1a;VDMAHP接口实战全解析 从传统FPGA到ZYNQ的思维转换 在传统FPGA视频处理项目中&#xff0c;工程师们早已习惯使用MIG IP核管理DDR控制器&#xff0c;通过用户接口实现帧缓存功能。这种模式在纯FPGA环境中运行良好&#xff0c;但当转向ZYNQ平台…...

GEO时代媒体发布新范式:Infoseek如何用工程思维重构内容分发

上周跟一个做技术社区运营的朋友聊天&#xff0c;他吐槽了一件事&#xff1a;公司新功能上线&#xff0c;想发篇技术解读稿&#xff0c;找了家公关公司报价&#xff0c;一篇3000块&#xff0c;承诺发30家媒体&#xff0c;但具体发哪家、什么时候发、效果怎么样&#xff0c;全凭…...

PDF文本高效提取:用pdftotext实现秒级文档内容解析

PDF文本高效提取&#xff1a;用pdftotext实现秒级文档内容解析 【免费下载链接】pdftotext Simple PDF text extraction 项目地址: https://gitcode.com/gh_mirrors/pd/pdftotext 破解PDF提取痛点&#xff1a;为什么你需要专业工具&#xff1f; 每天面对数十份PDF文档却…...

OCRmyPDF:让扫描PDF焕发新生的开源解决方案

OCRmyPDF&#xff1a;让扫描PDF焕发新生的开源解决方案 【免费下载链接】OCRmyPDF OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched 项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF 在数字化办公的浪潮中&#xff0c…...