IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> SylixOS中的中断(inter)操作接口 -> 正文阅读

[嵌入式]SylixOS中的中断(inter)操作接口

中断接口列表

API功能
API_InterLock关闭中断
API_InterUnlock打开中断
API_InterContext是否在中断中
API_InterGetNesting获得中断嵌套层数
API_InterGetNestingById获得指定 CPU 中断嵌套层数
API_InterEnter进入中断
API_InterExit退出中断
API_InterVectorBaseGet获得中断向量表基址
API_InterVectorConnect设置指定向量的服务程序
API_InterVectorConnectEx设置指定向量的服务程序
API_InterVectorDisconnect删除指定向量的服务程序
API_InterVectorDisconnectEx删除指定向量的服务程序
API_InterVectorServiceCnt获得指定中断向量的服务个数
API_InterVectorEnable使能指定向量中断
API_InterVectorDisable禁能指定向量中断
API_InterVectorDisableEx禁能指定向量中断
API_InterVectorIsEnable获得指定中断状态
API_InterVectorSetPriority设置中断优先级
API_InterVectorGetPriority获取中断优先级
API_InterSetTarget设置中断目标 CPU
API_InterGetTarget获取中断目标 CPU
API_InterVectorSetFlag设置中断向量属性
API_InterVectorGetFlag获取中断向量属性
API_InterVectorMeasureHook中断测量 HOOK
API_InterVectorIsr中断服务程序,BSP中断调用
API_InterVectorIpi设置核间中断向量号
API_InterVectorIpiEx设置核间中断向量号
API_InterDeferGet获得对应 CPU 的中断延迟队列
API_InterDeferContext是否在中断或 defer 上下文
API_InterDeferJobAdd向中断延迟处理队列加入任务
API_InterDeferJobDelete从中断延迟处理队列删除任务
API_InterStackBaseGet获得当前中断堆栈首地址
API_InterStackCheck中断堆栈检查

中断接口定义

/*********************************************************************************************************
** 函数名称: API_InterLock
** 功能描述: 系统关闭中断
** 输 入  : piregInterLevel   保存中断控制字
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterLock (INTREG  *piregInterLevel)
/*********************************************************************************************************
** 函数名称: API_InterUnlock
** 功能描述: 系统打开中断
** 输 入  : iregInterLevel    需要恢复的中断控制字
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterUnlock (INTREG  iregInterLevel)
/*********************************************************************************************************
** 函数名称: API_InterContext
** 功能描述: 检查系统是否在中断状态下
** 输 入  : 
** 输 出  : 
*********************************************************************************************************/
BOOL  API_InterContext (VOID)
/*********************************************************************************************************
** 函数名称: API_InterGetNesting
** 功能描述: 获得系统中断嵌套层数
** 输 入  : NONE
** 输 出  : 当前系统嵌套层数
*********************************************************************************************************/
ULONG  API_InterGetNesting (VOID)
/*********************************************************************************************************
** 函数名称: API_InterGetNestingById
** 功能描述: 获得指定 CPU 的中断嵌套层数
** 输 入  : ulCPUId           CPU ID
**           pulMaxNesting     最大嵌套层数
** 输 出  : 当前系统嵌套层数
*********************************************************************************************************/
ULONG  API_InterGetNestingById (ULONG  ulCPUId, ULONG *pulMaxNesting)
/*********************************************************************************************************
** 函数名称: API_InterEnter
** 功能描述: 内核中断入口函数 (在关中断的情况下被调用)
** 输 入  : 
** 输 出  : 中断层数
*********************************************************************************************************/
ULONG    API_InterEnter (ARCH_REG_T  reg0,
                         ARCH_REG_T  reg1,
                         ARCH_REG_T  reg2,
                         ARCH_REG_T  reg3)
/*********************************************************************************************************
** 函数名称: API_InterExit
** 功能描述: 内核中断出口函数 (在关中断的情况下被调用)
** 输 入  : NONE
** 输 出  : NONE
*********************************************************************************************************/
VOID    API_InterExit (VOID)
/*********************************************************************************************************
** 函数名称: API_InterVectorBaseGet
** 功能描述: 获得系统中断向量表基地址
** 输 入  : NONE
** 输 出  : 基地址指针
********************************************************************************************************/
PVOID  API_InterVectorBaseGet (VOID)
/*********************************************************************************************************
** 函数名称: API_InterVectorConnect
** 功能描述: 设置系统指定向量中断服务
** 输 入  : ulVector                      中断向量号
**           pfuncIsr                      服务函数
**           pvArg                         服务函数参数
**           pcName                        中断服务名称
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterVectorConnect (ULONG            ulVector,
                               PINT_SVR_ROUTINE pfuncIsr,
                               PVOID            pvArg,
                               CPCHAR           pcName)
/*********************************************************************************************************
** 函数名称: API_InterVectorConnectEx
** 功能描述: 设置系统指定向量中断服务
** 输 入  : ulVector                      中断向量号
**           pfuncIsr                      服务函数
**           pfuncClear                    附加中断清除函数(可为 NULL)
**           pvArg                         服务函数参数
**           pcName                        中断服务名称
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterVectorConnectEx (ULONG              ulVector,
                                 PINT_SVR_ROUTINE   pfuncIsr,
                                 VOIDFUNCPTR        pfuncClear,
                                 PVOID              pvArg,
                                 CPCHAR             pcName)
/*********************************************************************************************************
** 函数名称: API_InterVectorDisconnect
** 功能描述: 解除系统指定向量中断服务
** 输 入  : ulVector                      中断向量号
**           pfuncIsr                      服务函数
**           pvArg                         服务函数参数
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterVectorDisconnect (ULONG             ulVector,
                                  PINT_SVR_ROUTINE  pfuncIsr,
                                  PVOID             pvArg)
/*********************************************************************************************************
** 函数名称: API_InterVectorDisconnectEx
** 功能描述: 解除系统指定向量中断服务
** 输 入  : ulVector                      中断向量号
**           pfuncIsr                      服务函数
**           pvArg                         服务函数参数
**           ulOption                      删除选项
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterVectorDisconnectEx (ULONG             ulVector,
                                    PINT_SVR_ROUTINE  pfuncIsr,
                                    PVOID             pvArg,
                                    ULONG             ulOption)
/*********************************************************************************************************
** 函数名称: API_InterVectorServiceCnt
** 功能描述: 获得指定中断向量服务函数个数
** 输 入  : ulVector                      中断向量号
**           piCnt                         服务函数个数
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterVectorServiceCnt (ULONG  ulVector, INT  *piCnt)
/*********************************************************************************************************
** 函数名称: API_InterVectorEnable
** 功能描述: 使能指定向量的中断
** 输 入  : ulVector                      中断向量号
** 输 出  : ERROR
*********************************************************************************************************/
ULONG  API_InterVectorEnable (ULONG  ulVector)
/*********************************************************************************************************
** 函数名称: API_InterVectorDisable
** 功能描述: 禁能指定向量的中断
** 输 入  : ulVector                      中断向量号
** 输 出  : ERROR
** 注  意  : 如果 ulVector 为可嵌套中断, 则在中断上下文中禁能本中断, 退出中断时会自动打开. 
             所以禁能操作需要在任务状态下操作.
*********************************************************************************************************/
ULONG  API_InterVectorDisable (ULONG  ulVector)
/*********************************************************************************************************
** 函数名称: API_InterVectorDisableEx
** 功能描述: 禁能指定向量的中断
** 输 入  : ulVector                      中断向量号
**           iMaxServCnt                   当服务函数数量 > 此值时, 不禁能
** 输 出  : ERROR
** 注  意  : 如果 ulVector 为可嵌套中断, 则在中断上下文中禁能本中断, 退出中断时会自动打开.
             所以禁能操作需要在任务状态下操作.
*********************************************************************************************************/
ULONG  API_InterVectorDisableEx (ULONG  ulVector, INT  iMaxServCnt)
/*********************************************************************************************************
** 函数名称: API_InterVectorIsEnable
** 功能描述: 获得系统对指定向量中断响应状态
** 输 入  : ulVector                      中断向量号
**           pbIsEnable                    是否使能了相关中断
** 输 出  : ERROR
*********************************************************************************************************/
ULONG  API_InterVectorIsEnable (ULONG  ulVector, BOOL  *pbIsEnable)
/*********************************************************************************************************
** 函数名称: API_InterVectorSetPriority
** 功能描述: 设置指定中断向量优先级
** 输 入  : ulVector          中断向量号
**           uiPrio            中断优先级 LW_INTER_PRIO_HIGHEST ~ LW_INTER_PRIO_LOWEST
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterVectorSetPriority (ULONG  ulVector, UINT  uiPrio)
/*********************************************************************************************************
** 函数名称: API_InterVectorGetPriority
** 功能描述: 获取指定中断向量优先级
** 输 入  : ulVector          中断向量号
**           puiPrio           中断优先级 LW_INTER_PRIO_HIGHEST ~ LW_INTER_PRIO_LOWEST
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterVectorGetPriority (ULONG  ulVector, UINT  *puiPrio)
/*********************************************************************************************************
** 函数名称: API_InterSetTarget
** 功能描述: 设置指定中断向量目标 CPU
** 输 入  : ulVector      中断向量号
**           stSize        CPU 掩码集内存大小
**           pcpuset       CPU 掩码
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterSetTarget (ULONG  ulVector, size_t  stSize, const PLW_CLASS_CPUSET  pcpuset)
/*********************************************************************************************************
** 函数名称: API_InterGetTarget
** 功能描述: 获取指定中断向量目标 CPU
** 输 入  : ulVector      中断向量号
**           stSize        CPU 掩码集内存大小
**           pcpuset       CPU 掩码
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterGetTarget (ULONG  ulVector, size_t  stSize, PLW_CLASS_CPUSET  pcpuset)
/*********************************************************************************************************
** 函数名称: API_InterVectorSetFlag
** 功能描述: 设置指定中断向量的特性. 
** 输 入  : ulVector                      中断向量号
**           ulFlag                        特性
** 输 出  : ERROR CODE
** 注  意  : LW_IRQ_FLAG_QUEUE 必须在安装任何一个驱动前设置, 且设置后不再能取消.
             最好放在 bspIntInit() 函数中完成设置.
                                           API 函数
*********************************************************************************************************/
ULONG  API_InterVectorSetFlag (ULONG  ulVector, ULONG  ulFlag)
/*********************************************************************************************************
** 函数名称: API_InterVectorGetFlag
** 功能描述: 获得指定中断向量的特性. 
** 输 入  : ulVector                      中断向量号
**           *pulFlag                      特性
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterVectorGetFlag (ULONG  ulVector, ULONG  *pulFlag)
/*********************************************************************************************************
** 函数名称: API_InterVectorIsr
** 功能描述: 向量中断总服务
** 输 入  : ulVector                      中断向量号 (arch 层函数需要保证此参数正确)
** 输 出  : 中断返回值
** 注  意  : 这里并不处理中断嵌套, 他需要 arch 层移植函数支持.
*********************************************************************************************************/
irqreturn_t  API_InterVectorIsr (ULONG  ulVector)
/*********************************************************************************************************
** 函数名称: API_InterVectorIpiEx
** 功能描述: 设置核间中断向量   
             BSP 在系统启动前调用此函数, 每个 CPU 都要设置, SylixOS 允许不同的 CPU 核间中断向量不同.
** 输 入  : 
**           ulCPUId                       CPU ID
**           ulIPIVector                   核间中断向量号
**           pfuncClear                    核间中断清除函数
**           pvArg                         核间中断参数
** 输 出  : 
*********************************************************************************************************/
VOID  API_InterVectorIpiEx (ULONG  ulCPUId, ULONG  ulIPIVector, FUNCPTR  pfuncClear, PVOID  pvArg)
/*********************************************************************************************************
** 函数名称: API_InterVectorIpi
** 功能描述: 设置核间中断向量   
             BSP 在系统启动前调用此函数, 每个 CPU 都要设置, SylixOS 允许不同的 CPU 核间中断向量不同.
** 输 入  : 
**           ulCPUId                       CPU ID
**           ulIPIVector                   核间中断向量号
** 输 出  : 
*********************************************************************************************************/
VOID  API_InterVectorIpi (ULONG  ulCPUId, ULONG  ulIPIVector)
/*********************************************************************************************************
** 函数名称: API_InterDeferGet
** 功能描述: 获得对应 CPU 的中断延迟队列
** 输 入  : ulCPUId       CPU 号
** 输 出  : 中断延迟队列
*********************************************************************************************************/
PLW_JOB_QUEUE  API_InterDeferGet (ULONG  ulCPUId)
/*********************************************************************************************************
** 函数名称: API_InterDeferContext
** 功能描述: 是否在中断延迟队列任务上下文
** 输 入  : NONE
** 输 出  : 0: 不在中断上下文也不在中断延迟队列任务上下文
**           1: 在中断上下文
**           2: 中断延迟队列任务上下文
*********************************************************************************************************/
INT  API_InterDeferContext (VOID)
/*********************************************************************************************************
** 函数名称: API_InterDeferJobAdd
** 功能描述: 向中断延迟处理队列加入一个任务
** 输 入  : pjobq         队列
**           pfunc         处理函数
**           pvArg         处理参数
** 输 出  : ERROR CODE
*********************************************************************************************************/
ULONG  API_InterDeferJobAdd (PLW_JOB_QUEUE  pjobq, VOIDFUNCPTR  pfunc, PVOID  pvArg)
/*********************************************************************************************************
** 函数名称: API_InterDeferJobDelete
** 功能描述: 从中断延迟处理队列删除任务
** 输 入  : pjobq         队列
**           bMatchArg     是否进行参数匹配判断
**           pfunc         处理函数
**           pvArg         处理参数
** 输 出  : NONE
*********************************************************************************************************/
ULONG  API_InterDeferJobDelete (PLW_JOB_QUEUE  pjobq, BOOL  bMatchArg, VOIDFUNCPTR  pfunc, PVOID  pvArg)
/*********************************************************************************************************
** 函数名称: API_InterStackBaseGet
** 功能描述: 获得中断堆栈栈顶 (当前调用者所在的 CPU, 关中断模式下被调用)
** 输 入  : NONE
** 输 出  : 中断栈顶
*********************************************************************************************************/
PVOID  API_InterStackBaseGet (VOID)
/*********************************************************************************************************
** 函数名称: API_InterStackCheck
** 功能描述: 获得中断堆栈使用量
** 输 入  : ulCPUId                       CPU 号
**           pstFreeByteSize               空闲堆栈大小   (可为 LW_NULL)
**           pstUsedByteSize               使用堆栈大小   (可为 LW_NULL)
** 输 出  : 
*********************************************************************************************************/
VOID  API_InterStackCheck (ULONG   ulCPUId,
                           size_t *pstFreeByteSize,
                           size_t *pstUsedByteSize)
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:27:28  更:2022-04-04 12:28:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:34:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码