irq_domain 负责的事情以及小组成员分担的任务

news/2025/2/22 23:44:11

文章目录

  • 简介
  • irq_domain 要做哪些事
  • irq_desc 结构图
  • irq_domain 小组的重要成员有哪些
  • irq_domain 小组的重要成员解析
    • irq_domain 的左膀右臂 irq_chip & irq_domain_ops
      • irq_chip 分担了哪些工作
      • irq_domain_ops 分担了哪些工作
    • 其他成员分担了哪些工作
  • irq_desc 怎么与 irq domain 建立联系的
  • 可选的高层handler

简介

本篇讲这个
	讲述 irq_desc 和 irq_domain , 他们是靠 irq_data 联系到一起的
本篇不讲这个
	实现一个irq_domain需要定义的两个重量级结构体
		1. irq_chip
		2. irq_domain_ops

irq_domain 要做哪些事

  • irq_domain 要做哪些事
irq_domain 要做硬件和软件的设置
	// 虽然硬件设置都是软件做的,但是我们可以根据必要实现的硬件操作去追流程,忽略软件框架
	1. 硬件方面
		1. 中断层层打开与mask与关闭与ack与eoi // 由 irq_chip 结构体负责
	2. 软件方面
		2.1不负责物理中断号的管理,由设备树描述者负责,但是会负责转换
			负责转换 interrupt 属性 到 hwirq
		2.2负责irq_desc 的创建与填充
			2.2.1.irq_desc 中 软件中断号的申请 					: irq_desc  中的 irq_data 中的 irq
			2.2.2.irq_desc 中 软件中断号与硬件中断号的映射 		: irq_desc  中的 irq_data 中的 irq 和 hwirq
			2.2.3.irq_desc 中 高层中断处理函数  					: irq_desc  中的 handle_irq
			2.2.4.irq_desc 中 该软件中断号对应的硬件ops 			: irq_desc  中的 irq_data 中的 chip
			2.2.5.irq_desc 中 该软件中断号对应的1个或多个hander 	: irq_desc  中的 action 链表
			---
			2.2.6 irq_desc 中 domain 的关联 					: irq_desc  中的 irq_data 中的 domain

------------
irq_of_parse_and_map 做了 2.1  2.2.1-2.2.4 2.2.6
	2.2.1 具体是在 irq_domain_insert_irq_data 中做的
	2.2.6 具体是在 irq_domain_insert_irq_data 中做的
request_irq 做了  2.2.51

irq_desc 结构图

在这里插入图片描述

irq_domain 小组的重要成员有哪些

struct irq_desc *irq_desc;

irq_desc->irq_data->hwirq
irq_desc->irq_data->irq
irq_desc->irq_data->chip // irq_chip
irq_desc->irq_data->domain // irq_domain
irq_desc->irq_data->domain->ops // irq_domain_ops

irq_desc->action // irqaction

irq_desc->handle_irq

irq_domain 小组的重要成员解析

irq_domain 的左膀右臂 irq_chip & irq_domain_ops

irq_chip  与 irq_domain_ops 
irq_chip   负责 硬件操作
irq_domain_ops  负责 软件操作

irq_chip 分担了哪些工作

中断硬件操作

irq_domain_ops 分担了哪些工作

中断软件操作管理
2.1 : 负责了 设备树 interrupt属性的解析,解析到 hwirq : xlate/translate
2.2.3 : 设置高层 handler : map/alloc
2.3.4 : chip ops 设置 : map/alloc
2.2.5 : 调用 irqchip ops 来完成 activate : activate

其他成员分担了哪些工作

并不是生产者,而是被其他小组成员消费的角色

irq_desc 怎么与 irq domain 建立联系的

在 irq_domain_alloc_irqs/__irq_domain_alloc_irqs 中
1. irq_domain_alloc_descs
2. irq_domain_alloc_irq_data
	irq_data = irq_get_irq_data(virq + i); // 拿到 virq 对应的irq_desc 中的 irq_data
	irq_data = irq_domain_insert_irq_data(parent, irq_data); // 申请空间,赋值到irq_desc -> irq_data
		irq_data->irq = child->irq; // 填充了irq_data 中的 irq
		irq_data->domain = domain;  // 填充了irq_data 中的 domain
3. irq_domain_alloc_irqs_hierarchy

可选的高层handler


handle_percpu_devid_fasteoi_ipi
handle_percpu_devid_irq
handle_fasteoi_irq
handle_edge_irq
handle_simple_irq
handle_level_irq
partition_handle_irq

http://www.niftyadmin.cn/n/328773.html

相关文章

Reid strong baseline 代码详解

本项目是对Reid strong baseline代码的详解。项目暂未加入目标检测部分,后期会不定时更新,请持续关注。 本相比Reid所用数据集为Markt1501,支持Resnet系列作为训练的baseline网络。训练采用表征学习度量学习的方式。 目录 训练参数 训练代…

【Python-ESL】python-esl安装

pip install python-esl 时会报错: “error: command ‘swig’ failed with exit status 1” 报错原因是 因为 swig 软件未正确安装,当然对swig的版本也是有要求的,目前测试以下版本没有问题: swig3.0.63 python-ESL1.4.18(app-…

代码随想录补打卡 347前k个高频元素 一维数组的背包问题

代码如下 func topKFrequent(nums []int, k int) []int { ans : []int{} 设置一个结果数组 mapnum : map[int]int{} 用map记录对应元素出现的次数 for _,v : range nums { //遍历数组,记录每个元素出现的次数,如果出现重复元素,…

【马蹄集】第十一周作业

第十一周作业 目录 MT2012 竹鼠的白色季节MT2013 照亮街道MT2014 打靶MT2026 二维坐标点移动MT2027 一秒成零 MT2012 竹鼠的白色季节 难度:黄金    时间限制:1秒    占用内存:250M 题目描述 小码哥的竹鼠养殖场中的竹鼠都在一条直线的隔间…

CTFHub | 文件包含

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…

B2B 客户支持,如何做好?

多年来,基于尖端技术的现代和个性化客户体验一直主导着企业对消费者(B2C)领域。然而,在企业对企业(B2B)行业中,出色的客户体验变得比以往任何时候都更加重要。许多组织正在开发类似于B2C市场中个…

OpenAI是什么?

OpenAI是一家人工智能技术公司,成立于2015年,总部位于美国旧金山。它的创始人包括埃隆马斯克等多名知名人士,公司的目标是推进人工智能技术的发展,同时确保人工智能的发展不会对人类造成负面影响。 OpenAI在研究和开发各种人工智能…

国家信息安全水平考试NISP证书(一级、二级、三级)

NISP证书是什么? NISP证书是国家信息安全水平考试(National Information Security Test Program,简称NISP),是通过中国信息安全测评中心执行塑造国家网络空间安全优秀人才项目。国家实行网络空间安全人才培养基地经营…