中断接口列表
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)