前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DragonOS的中断处理设计

DragonOS的中断处理设计

作者头像
灯珑LoGin
发布2022-10-31 15:10:33
6300
发布2022-10-31 15:10:33
举报
文章被收录于专栏:龙进的专栏

在这里简单记录一下目前DragonOS中的中断处理的设计吧。

首先,先上DragonOS的GitHub链接:https://github.com/fslongjin/DragonOS

写这篇文章的时候,代码版本长这样:https://github.com/fslongjin/DragonOS/commit/5ec1b825e6f8b780027b29ec80b8d672dd8884bd

中断响应流程

1.硬中断

1.1. 中断处理模型

1.1.1. hardware_intr_controller结构

该结构提供了对硬件中断的控制方法的统一抽象。

成员

参数

返回值

描述

enable

irq_num

void

使能中断操作接口

disable

irq_num

void

禁止中断操作接口

install

irq_num, void*arg

ul

安装中断操作接口

uninstall

irq_num

void

卸载中断操作接口

ack

irq_num

void

应答中断操作接口

1.1.2. irq_desc_t结构

该数据结构提供了对中断服务程序的抽象

成员

类型

参数

返回值

描述

controller

hardware_intr_controller

硬件中断控制结构

irq_name

char*

中断名

parameter

ul

中断处理函数的参数

handler

函数

irq_numparameterregs

void

中断服务程序

flags

ul

自定义标志位

1.1.3. 中断注册程序irq_register

该程序用于注册中断服务程序。

  * @param irq_num 中断向量号

  * @param arg 传递给中断安装接口的参数

  * @param handler 中断处理函数

  * @param paramater 中断处理函数的参数

  * @param controller 中断控制器结构

  * @param irq_name 中断名

1.1.4. 中断卸载程序irq_unregister

该程序用于卸载中断服务程序。

 * @param irq_num 中断向量号

2.软中断

软中断与硬中断类似,只是其由软件方式创建,且在处理时可被中断。可作为中断下半部使用,任务处理实时性低于硬中断。

软中断模块设计与硬中断的设计类似。其包括了一个软中断向量表及一些函数模型。

2.1软中断向量表表项定义

表项类型定义为softirq_t

成员

类型

参数

返回值

描述

action

函数

void*data

void

软中断处理函数

data

void*

传递给软中断处理函数的数据

2.2软中断注册程序register_softirq

 * @param irq_num 软中断号

 * @param action 响应函数

 * @param data 响应数据结构体

2.3软中断卸载程序unregister_softirq

 * @param irq_num 软中断号

2.4软中断处理程序do_softirq

在该函数中,先检测软中断是否正在被处理,如果空闲,则发起处理并置位标志位。

转载请注明来源:https://longjin666.cn/?p=1401

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月23日2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 中断响应流程
  • 1.硬中断
    • 1.1. 中断处理模型
      • 1.1.1. hardware_intr_controller结构
      • 1.1.2. irq_desc_t结构
      • 1.1.3. 中断注册程序irq_register
      • 1.1.4. 中断卸载程序irq_unregister
  • 2.软中断
    • 2.1软中断向量表表项定义
      • 2.2软中断注册程序register_softirq
        • 2.3软中断卸载程序unregister_softirq
          • 2.4软中断处理程序do_softirq
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档