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

C 语言左移位操作在kernel驱动子系统中的特殊用途

文章目录

  • 前言
  • 一、C语言左移位操作介绍
    • 1. 左移位
  • 二、左移位操作在kernel 驱动子系统中的应用
    • 1. 左移位操作在 V4L2, Media 子系统中的应用实例
    • 2.左移位操作在 DRM 子系统中的应用实例
    • 2.1 左移位操作在struct drm_crtc 中的应用
    • 2.2 左移位操作在struct drm_encoder 中的应用
  • 总结


前言

`本文主要介绍C语言的移位操作(左移<<)在 Linux kernel 一些驱动子系统(V4L2, Media, DRM等)中的应用


一、C语言左移位操作介绍

1. 左移位

左移位就是将一个数的各二进制位全部左移若干位,右边空出的二进制位补0,每左移 1 位原数就相当于乘2;
例子:
5 左移两位 相当于 5 * 2 * 2 = 20
20 = 5 << 2
十进制5 等于 二进制 0b101
将 0b101 左移 2 位 后变为 0b10100
将二进制 0b10100 转成十进制就是20

即:x << n = x * 2^n (5 << 2 = 5 * 2^2)

二、左移位操作在kernel 驱动子系统中的应用

1. 左移位操作在 V4L2, Media 子系统中的应用实例

Media 子系统中有pipeline 的概念,如下图所示是一个具有多图层合成功能的硬件的 pipeline 框图(支持最多5个图层输入和1个图层输出)
5个输入图层和1个输出图层 分别和 6 个对应的**/dev/video***节点对应
在这里插入图片描述
如下是 pipeline 工作的主要代码逻辑

因为唯一的输出图层是一定在pipeline 里面的,固可以给这个pipe 赋值一个固定的pipe index, 这里赋为0,其他可选的输入图层如果参与 
pipeline 的组成,那也需要赋一个特定的pipe index 值(非 0 值)//初始化
pipeline->num_inputs = 0;
pipeline->buffers_ready = 0;//给该 pipeline 中的各个图层赋一个index       
output->pipe_index = 0;           //给输出图层的index 赋值为0//判断有哪些图层使能,并给其赋一个index
for(i=0; i < 5; i++) {if (input[i]->pipe_enable) {pipeline->num_inputs++;input[i]->pipe_index
http://www.lryc.cn/news/221446.html

相关文章:

  • kafka3.6.0集群部署
  • JAVA客户端使用账号密码调用influxdb2报错:{“code“:“unauthorized“,“message“:“Unauthorized“}
  • Mysql查询今天到期、n天即将到期、还有n天过期相关sql
  • 【漏洞复现】Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)
  • 【江协科技-用0.96寸OLED播放知名艺人打篮球视频】
  • CATIA环境编辑器用不了时创建项目快捷方式
  • java泛型的深入 泛型还可以在很多地方进行定义 泛型类 泛型方法 泛型接口 泛型的继承和通配符 泛型类练习
  • 持续交付的好处
  • APP开发:用途与未来前景|软件定制开发|网站小程序建设
  • 图论——并查集
  • 计算机毕业设计java+vue+springboot的论坛信息网站
  • .net core添加SQL日志输出
  • 虚幻5.1 常见的效果关闭方式
  • 每日一题 --- 力扣318----最大单词长度乘积
  • 掌动智能性能压力测试优势有哪些
  • 虚拟机没有桥接模式--物理机WiFi不见了--注册表修复
  • 【Python】批量下载素材酷视频资源
  • QuantLib学习笔记——一个简单的价值估算案例
  • 智能语音和自然语言处理技术
  • 【Sql】sql server数据库提示:执行Transact-SQL语句或批处理时发生了异常。 无法打开数据库msdb,错误:926。
  • Day 5 登录页及路由 (三) 基于axios的API调用
  • 雷神学习---视音频数据处理入门:RGB、YUV像素数据处理
  • Asp.Net Core服务端处理请求过来的压缩格式
  • 自定义指令
  • 仿真实现lio_sam建图和ndt_matching定位
  • IDEA取消git对项目的版本控制
  • 如何聪明地编写测试
  • CF1866M Mighty Rock Tower
  • 【漏洞复现】Apache_Tomcat7+ 弱口令 后台getshell漏洞
  • 2023-11-7 OpenAI 45 分钟发布会:演示关于 GPT Store 构建 GPT、零代码创建 AI Agent