|
|
@ -48,12 +48,16 @@ extern "C" {
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* Count of interrupts.
|
|
|
|
* Count of interrupts.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*这行代码声明了一个名为g_intCount的数组,但它的定义并不在当前的源文件中。
|
|
|
|
|
|
|
|
关键字"extern"告诉编译器该数组是在其他地方定义的,这通常意味着它在其他源文件或库中。
|
|
|
|
|
|
|
|
在链接阶段,编译器会去找到实际的g_intCount的定义,然后将其与当前的代码进行链接。*/
|
|
|
|
extern size_t g_intCount[];
|
|
|
|
extern size_t g_intCount[];
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* An interrupt is active.
|
|
|
|
* An interrupt is active.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
extern size_t IntActive(VOID);
|
|
|
|
|
|
|
|
|
|
|
|
extern size_t IntActive(VOID);//IntActive(VOID)函数是用于获取当前活动的中断数量的函数。该函数没有参数,返回类型为无符号整数类型(size_t)。
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* @ingroup los_hwi
|
|
|
@ -61,6 +65,16 @@ extern size_t IntActive(VOID);
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @see OS_INT_INACTIVE
|
|
|
|
* @see OS_INT_INACTIVE
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*在LiteOS操作系统中,#define OS_INT_ACTIVE IntActive() 是一个预处理指令,用来定义一个宏。它将OS_INT_ACTIVE 定义为调用 IntActive() 函数的结果。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
宏定义是一种在代码中使用的文本替换机制。在这种情况下,
|
|
|
|
|
|
|
|
当代码中出现 OS_INT_ACTIVE 时,预处理器会将其替换为 IntActive() 函数的调用,从
|
|
|
|
|
|
|
|
而实际上就是将函数调用作为一个宏使用。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这种宏定义的目的可能是为了简化代码书写或提高代码的可读性。
|
|
|
|
|
|
|
|
通过定义宏,可以通过简单的名称(OS_INT_ACTIVE)来表示复杂的函数调用(IntActive()),
|
|
|
|
|
|
|
|
从而使代码更加简洁和易于理解。*/
|
|
|
|
#define OS_INT_ACTIVE IntActive()
|
|
|
|
#define OS_INT_ACTIVE IntActive()
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -71,6 +85,21 @@ extern size_t IntActive(VOID);
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @see OS_INT_ACTIVE
|
|
|
|
* @see OS_INT_ACTIVE
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*在LiteOS操作系统中,#define OS_INT_INACTIVE (!(OS_INT_ACTIVE)) 是一个预处理指令,
|
|
|
|
|
|
|
|
用来定义一个宏。它将OS_INT_INACTIVE 定义为对 OS_INT_ACTIVE 取反的结果。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
具体来说,OS_INT_ACTIVE 是一个宏,表示调用 IntActive() 函数的结果。
|
|
|
|
|
|
|
|
而 OS_INT_INACTIVE 是另一个宏,表示对 OS_INT_ACTIVE 取反的结果。
|
|
|
|
|
|
|
|
在这种情况下,使用逻辑非运算符 ! 将 OS_INT_ACTIVE 的结果取反。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这个宏定义的目的可能是用于表示当前中断是否处于非活动状态。
|
|
|
|
|
|
|
|
如果 OS_INT_ACTIVE 为真(非零),则表示中断处于活动状态;
|
|
|
|
|
|
|
|
而 OS_INT_INACTIVE 则为假(零),表示中断处于非活动状态。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
通过这种方式定义宏,可以方便地在代码中判断中断状态并进行相应的处理。
|
|
|
|
|
|
|
|
代码中使用 OS_INT_INACTIVE 可以更加直观地表示中断是否处于非活动状态,
|
|
|
|
|
|
|
|
提高代码的可读性和可维护性。
|
|
|
|
|
|
|
|
*/
|
|
|
|
#define OS_INT_INACTIVE (!(OS_INT_ACTIVE))
|
|
|
|
#define OS_INT_INACTIVE (!(OS_INT_ACTIVE))
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -78,6 +107,18 @@ extern size_t IntActive(VOID);
|
|
|
|
* Highest priority of a hardware interrupt.This is an external parameter.
|
|
|
|
* Highest priority of a hardware interrupt.This is an external parameter.
|
|
|
|
* The priority range is [OS_HWI_PRIO_HIGHEST, OS_HWI_PRIO_HIGHEST + LOSCFG_HWI_PRIO_LIMIT - 1].
|
|
|
|
* The priority range is [OS_HWI_PRIO_HIGHEST, OS_HWI_PRIO_HIGHEST + LOSCFG_HWI_PRIO_LIMIT - 1].
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*在LiteOS操作系统中,#define OS_HWI_PRIO_HIGHEST 0 是一个预处理指令,
|
|
|
|
|
|
|
|
用来定义一个宏。它将 OS_HWI_PRIO_HIGHEST 定义为数字 0。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在LiteOS操作系统中,中断(Interrupt)也被称为硬件中断(Hardware Interrupt),
|
|
|
|
|
|
|
|
简称为 HWI。HWI具有不同的优先级(Priority),优先级越高,中断响应的时间越短。
|
|
|
|
|
|
|
|
OS_HWI_PRIO_HIGHEST 是一个表示最高中断优先级的宏,其值为 0。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在LiteOS操作系统中,中断的优先级是用数字表示的,数字越小表示优先级越高。
|
|
|
|
|
|
|
|
因此,OS_HWI_PRIO_HIGHEST 表示的是最高中断优先级,也就是数字最小的中断优先级。
|
|
|
|
|
|
|
|
在一些特定场景下,需要使用最高中断优先级,
|
|
|
|
|
|
|
|
这时候可以使用 OS_HWI_PRIO_HIGHEST 宏来表示最高中断优先级的数字值 0,
|
|
|
|
|
|
|
|
从而方便地进行代码编写。*/
|
|
|
|
#define OS_HWI_PRIO_HIGHEST 0
|
|
|
|
#define OS_HWI_PRIO_HIGHEST 0
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -85,12 +126,36 @@ extern size_t IntActive(VOID);
|
|
|
|
* This represents the interrupt priority range, the larger number, the lower priority, the interrupt processor is
|
|
|
|
* This represents the interrupt priority range, the larger number, the lower priority, the interrupt processor is
|
|
|
|
* modified uniformly.
|
|
|
|
* modified uniformly.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*在LiteOS操作系统中,
|
|
|
|
|
|
|
|
#define OS_HWI_PRIO_LOWEST (LOSCFG_HWI_PRIO_LIMIT - 1) 是一个预处理指令,
|
|
|
|
|
|
|
|
用来定义一个宏。它将 OS_HWI_PRIO_LOWEST 定义为 LOSCFG_HWI_PRIO_LIMIT 减去 1 的结果。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在LiteOS操作系统中,中断(Interrupt)也被称为硬件中断(Hardware Interrupt),
|
|
|
|
|
|
|
|
简称为 HWI。HWI具有不同的优先级(Priority),优先级越高,中断响应的时间越短。OS_HWI_PRIO_LOWEST 是一个表示最低中断优先级的宏,其值为 LOSCFG_HWI_PRIO_LIMIT - 1。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOSCFG_HWI_PRIO_LIMIT 是一个配置参数,用于表示系统支持的最大中断优先级数。
|
|
|
|
|
|
|
|
因此,OS_HWI_PRIO_LOWEST 表示的是最低中断优先级,也就是数字最大的中断优先级,
|
|
|
|
|
|
|
|
其值等于最大中断优先级数减去 1。
|
|
|
|
|
|
|
|
在一些特定场景下,需要使用最低中断优先级,
|
|
|
|
|
|
|
|
这时候可以使用 OS_HWI_PRIO_LOWEST 宏来表示最低中断优先级的数字值,从而方便地进行代码编写。*/
|
|
|
|
#define OS_HWI_PRIO_LOWEST (LOSCFG_HWI_PRIO_LIMIT - 1)
|
|
|
|
#define OS_HWI_PRIO_LOWEST (LOSCFG_HWI_PRIO_LIMIT - 1)
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* The lower priority number, the higher priority, so OS_HWI_PRIO_LOWEST big than OS_HWI_PRIO_HIGHEST.
|
|
|
|
* The lower priority number, the higher priority, so OS_HWI_PRIO_LOWEST big than OS_HWI_PRIO_HIGHEST.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*该宏接受一个参数 pri,表示要判断的中断优先级值。
|
|
|
|
|
|
|
|
宏的定义使用了逻辑与运算符 && 和比较运算符 >=、<=。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
((pri) >= OS_HWI_PRIO_HIGHEST) 表示判断 pri 是否大于等于最高中断优先级(OS_HWI_PRIO_HIGHEST)。如果 pri 大于等于最高中断优先级,则该条件结果为真(非零);否则为假(零)。
|
|
|
|
|
|
|
|
((pri) <= OS_HWI_PRIO_LOWEST) 表示判断 pri 是否小于等于最低中断优先级(OS_HWI_PRIO_LOWEST)。如果 pri 小于等于最低中断优先级,则该条件结果为真(非零);否则为假(零)。
|
|
|
|
|
|
|
|
整个宏定义将以上两个条件使用逻辑与运算符 && 连接起来,
|
|
|
|
|
|
|
|
即 (((pri) >= OS_HWI_PRIO_HIGHEST) && ((pri) <= OS_HWI_PRIO_LOWEST))。
|
|
|
|
|
|
|
|
只有当 pri 同时满足大于等于最高中断优先级和小于等于最低中断优先级时,
|
|
|
|
|
|
|
|
该条件结果为真(非零),表示中断优先级有效;否则为假(零),表示中断优先级无效。
|
|
|
|
|
|
|
|
这个宏的作用是在进行中断优先级的判断和设置时,
|
|
|
|
|
|
|
|
确保所使用的中断优先级值在有效范围内,避免出现错误的中断优先级设置。*/
|
|
|
|
#define HWI_PRI_VALID(pri) (((pri) >= OS_HWI_PRIO_HIGHEST) && ((pri) <= OS_HWI_PRIO_LOWEST))
|
|
|
|
#define HWI_PRI_VALID(pri) (((pri) >= OS_HWI_PRIO_HIGHEST) && ((pri) <= OS_HWI_PRIO_LOWEST))
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -105,6 +170,23 @@ extern size_t IntActive(VOID);
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* </ul>
|
|
|
|
* </ul>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是两个预处理指令,用来定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这些错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误。
|
|
|
|
|
|
|
|
它们是通过使用LiteOS提供的错误码宏来定义的。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOS_ERRNO_HWI_NUM_INVALID 是一个表示无效中断号的错误码。
|
|
|
|
|
|
|
|
该错误码的值由 LOS_ERRNO_OS_ERROR 宏生成,
|
|
|
|
|
|
|
|
它接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
其中,LOS_MOD_HWI 表示HWI模块的模块号,0x00 表示错误码值。
|
|
|
|
|
|
|
|
因此,LOS_ERRNO_HWI_NUM_INVALID 的值就是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
OS_ERRNO_HWI_NUM_INVALID 是 LOS_ERRNO_HWI_NUM_INVALID 的别名。
|
|
|
|
|
|
|
|
通过将其定义为相同的值,可以在代码中使用更简洁的名称来表示无效中断号的错误码。
|
|
|
|
|
|
|
|
这些错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在配置和使用中断时,如果遇到了无效的中断号,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 LOS_ERRNO_HWI_NUM_INVALID 或 OS_ERRNO_HWI_NUM_INVALID,
|
|
|
|
|
|
|
|
来判断中断号是否有效,进而进行相应的错误处理。*/
|
|
|
|
#define LOS_ERRNO_HWI_NUM_INVALID LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x00)
|
|
|
|
#define LOS_ERRNO_HWI_NUM_INVALID LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x00)
|
|
|
|
#define OS_ERRNO_HWI_NUM_INVALID LOS_ERRNO_HWI_NUM_INVALID
|
|
|
|
#define OS_ERRNO_HWI_NUM_INVALID LOS_ERRNO_HWI_NUM_INVALID
|
|
|
|
|
|
|
|
|
|
|
@ -120,6 +202,22 @@ extern size_t IntActive(VOID);
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* </ul>
|
|
|
|
* </ul>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是两个预处理指令,用来定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这些错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误。
|
|
|
|
|
|
|
|
它们是通过使用LiteOS提供的错误码宏来定义的。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOS_ERRNO_HWI_PROC_FUNC_NULL 是一个表示中断处理函数为空的错误码。该错误码的值由 LOS_ERRNO_OS_ERROR 宏生成,
|
|
|
|
|
|
|
|
它接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
其中,LOS_MOD_HWI 表示HWI模块的模块号,0x01 表示错误码值。
|
|
|
|
|
|
|
|
因此,LOS_ERRNO_HWI_PROC_FUNC_NULL 的值就是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
OS_ERRNO_HWI_PROC_FUNC_NULL 是 LOS_ERRNO_HWI_PROC_FUNC_NULL 的别名。
|
|
|
|
|
|
|
|
通过将其定义为相同的值,可以在代码中使用更简洁的名称来表示中断处理函数为空的错误码。
|
|
|
|
|
|
|
|
这些错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在配置和使用中断时,如果中断处理函数为空,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 LOS_ERRNO_HWI_PROC_FUNC_NULL 或 OS_ERRNO_HWI_PROC_FUNC_NULL,来判断中断处理函数是否正确设置,
|
|
|
|
|
|
|
|
进而进行相应的错误处理。*/
|
|
|
|
#define LOS_ERRNO_HWI_PROC_FUNC_NULL LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x01)
|
|
|
|
#define LOS_ERRNO_HWI_PROC_FUNC_NULL LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x01)
|
|
|
|
#define OS_ERRNO_HWI_PROC_FUNC_NULL LOS_ERRNO_HWI_PROC_FUNC_NULL
|
|
|
|
#define OS_ERRNO_HWI_PROC_FUNC_NULL LOS_ERRNO_HWI_PROC_FUNC_NULL
|
|
|
|
|
|
|
|
|
|
|
@ -132,6 +230,18 @@ extern size_t IntActive(VOID);
|
|
|
|
* Solution: This error code is not in use temporarily.
|
|
|
|
* Solution: This error code is not in use temporarily.
|
|
|
|
* @deprecated This error code is obsolete since LiteOS 5.0.0.
|
|
|
|
* @deprecated This error code is obsolete since LiteOS 5.0.0.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**/
|
|
|
|
|
|
|
|
/*定义了一个错误码,表示硬件中断(HWI)回调函数不可用的情况。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OS_ERRNO_HWI_CB_UNAVAILABLE 是用来表示硬件中断(HWI)回调函数不可用的错误码。
|
|
|
|
|
|
|
|
它由 LOS_ERRNO_OS_ERROR 宏生成,该宏接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
在这里,LOS_MOD_HWI 表示HWI模块的模块号,0x02 表示错误码值。
|
|
|
|
|
|
|
|
因此,OS_ERRNO_HWI_CB_UNAVAILABLE 的值是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
这个错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在设置和注册中断回调函数时,如果回调函数不可用,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 OS_ERRNO_HWI_CB_UNAVAILABLE,来判断回调函数的可用性,
|
|
|
|
|
|
|
|
从而进行相应的错误处理。*/
|
|
|
|
#define OS_ERRNO_HWI_CB_UNAVAILABLE LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x02)
|
|
|
|
#define OS_ERRNO_HWI_CB_UNAVAILABLE LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x02)
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -146,6 +256,21 @@ extern size_t IntActive(VOID);
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* </ul>
|
|
|
|
* </ul>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是两个预处理指令,用来定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这些错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误。它们是通过使用LiteOS提供的错误码宏来定义的。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOS_ERRNO_HWI_NO_MEMORY 是一个表示无法分配内存的错误码。
|
|
|
|
|
|
|
|
该错误码的值由 LOS_ERRNO_OS_ERROR 宏生成,它接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
其中,LOS_MOD_HWI 表示HWI模块的模块号,0x03 表示错误码值。
|
|
|
|
|
|
|
|
因此,LOS_ERRNO_HWI_NO_MEMORY 的值就是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
OS_ERRNO_HWI_NO_MEMORY 是 LOS_ERRNO_HWI_NO_MEMORY 的别名。通过将其定义为相同的值,
|
|
|
|
|
|
|
|
可以在代码中使用更简洁的名称来表示无法分配内存的错误码。
|
|
|
|
|
|
|
|
这些错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在设置和注册中断处理函数时,如果出现无法分配内存的情况,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 LOS_ERRNO_HWI_NO_MEMORY 或 OS_ERRNO_HWI_NO_MEMORY,
|
|
|
|
|
|
|
|
来判断内存是否分配成功,进而进行相应的错误处理。*/
|
|
|
|
#define LOS_ERRNO_HWI_NO_MEMORY LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x03)
|
|
|
|
#define LOS_ERRNO_HWI_NO_MEMORY LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x03)
|
|
|
|
#define OS_ERRNO_HWI_NO_MEMORY LOS_ERRNO_HWI_NO_MEMORY
|
|
|
|
#define OS_ERRNO_HWI_NO_MEMORY LOS_ERRNO_HWI_NO_MEMORY
|
|
|
|
|
|
|
|
|
|
|
@ -162,6 +287,22 @@ extern size_t IntActive(VOID);
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* </ul>
|
|
|
|
* </ul>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是两个预处理指令,用于定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这些错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误。
|
|
|
|
|
|
|
|
它们是通过使用LiteOS提供的错误码宏来定义的。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOS_ERRNO_HWI_ALREADY_CREATED 是一个表示中断已经被创建的错误码。
|
|
|
|
|
|
|
|
该错误码的值由 LOS_ERRNO_OS_ERROR 宏生成,它接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
在这里,LOS_MOD_HWI 表示HWI模块的模块号,0x04 表示错误码值。
|
|
|
|
|
|
|
|
因此,LOS_ERRNO_HWI_ALREADY_CREATED 的值是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
OS_ERRNO_HWI_ALREADY_CREATED 是 LOS_ERRNO_HWI_ALREADY_CREATED 的别名。
|
|
|
|
|
|
|
|
通过将其定义为相同的值,可以在代码中使用更简洁的名称来表示中断已经被创建的错误码。
|
|
|
|
|
|
|
|
这些错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在创建中断时,如果中断已经被创建,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 LOS_ERRNO_HWI_ALREADY_CREATED 或 OS_ERRNO_HWI_ALREADY_CREATED,
|
|
|
|
|
|
|
|
来判断中断是否已经存在,从而进行相应的错误处理。*/
|
|
|
|
#define LOS_ERRNO_HWI_ALREADY_CREATED LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x04)
|
|
|
|
#define LOS_ERRNO_HWI_ALREADY_CREATED LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x04)
|
|
|
|
#define OS_ERRNO_HWI_ALREADY_CREATED LOS_ERRNO_HWI_ALREADY_CREATED
|
|
|
|
#define OS_ERRNO_HWI_ALREADY_CREATED LOS_ERRNO_HWI_ALREADY_CREATED
|
|
|
|
|
|
|
|
|
|
|
@ -177,6 +318,22 @@ extern size_t IntActive(VOID);
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* </ul>
|
|
|
|
* </ul>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是两个预处理指令,用于定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这些错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误。
|
|
|
|
|
|
|
|
它们是通过使用LiteOS提供的错误码宏来定义的。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOS_ERRNO_HWI_PRIO_INVALID 是一个表示中断优先级无效的错误码。
|
|
|
|
|
|
|
|
该错误码的值由 LOS_ERRNO_OS_ERROR 宏生成,它接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
在这里,LOS_MOD_HWI 表示HWI模块的模块号,0x05 表示错误码值。
|
|
|
|
|
|
|
|
因此,LOS_ERRNO_HWI_PRIO_INVALID 的值是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
OS_ERRNO_HWI_PRIO_INVALID 是 LOS_ERRNO_HWI_PRIO_INVALID 的别名。
|
|
|
|
|
|
|
|
通过将其定义为相同的值,可以在代码中使用更简洁的名称来表示中断优先级无效的错误码。
|
|
|
|
|
|
|
|
这些错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在设置中断优先级时,如果提供了无效的优先级值,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 LOS_ERRNO_HWI_PRIO_INVALID 或 OS_ERRNO_HWI_PRIO_INVALID,来判断优先级是否有效,
|
|
|
|
|
|
|
|
进而进行相应的错误处理。*/
|
|
|
|
#define LOS_ERRNO_HWI_PRIO_INVALID LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x05)
|
|
|
|
#define LOS_ERRNO_HWI_PRIO_INVALID LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x05)
|
|
|
|
#define OS_ERRNO_HWI_PRIO_INVALID LOS_ERRNO_HWI_PRIO_INVALID
|
|
|
|
#define OS_ERRNO_HWI_PRIO_INVALID LOS_ERRNO_HWI_PRIO_INVALID
|
|
|
|
|
|
|
|
|
|
|
@ -189,6 +346,18 @@ extern size_t IntActive(VOID);
|
|
|
|
* Solution: This error code is not in use temporarily.
|
|
|
|
* Solution: This error code is not in use temporarily.
|
|
|
|
* @deprecated This error code is obsolete since LiteOS 5.0.0.
|
|
|
|
* @deprecated This error code is obsolete since LiteOS 5.0.0.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是一个预处理指令,用于定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
该错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误,
|
|
|
|
|
|
|
|
具体来说是中断模式无效的错误。
|
|
|
|
|
|
|
|
它是通过使用LiteOS提供的错误码宏 LOS_ERRNO_OS_ERROR 来定义的。
|
|
|
|
|
|
|
|
该宏接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
在这里,LOS_MOD_HWI 表示HWI模块的模块号,0x06 表示错误码值。
|
|
|
|
|
|
|
|
因此,OS_ERRNO_HWI_MODE_INVALID 的值是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
这个错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在设置中断模式时,如果提供了无效的模式值,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 OS_ERRNO_HWI_MODE_INVALID ,
|
|
|
|
|
|
|
|
来判断模式是否有效,进而进行相应的错误处理。*/
|
|
|
|
#define OS_ERRNO_HWI_MODE_INVALID LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x06)
|
|
|
|
#define OS_ERRNO_HWI_MODE_INVALID LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x06)
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -200,6 +369,19 @@ extern size_t IntActive(VOID);
|
|
|
|
* Solution: This error code is not in use temporarily.
|
|
|
|
* Solution: This error code is not in use temporarily.
|
|
|
|
* @deprecated This error code is obsolete since LiteOS 5.0.0.
|
|
|
|
* @deprecated This error code is obsolete since LiteOS 5.0.0.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是一个预处理指令,用于定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
该错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误,
|
|
|
|
|
|
|
|
具体来说是快速中断模式已经被创建的错误。
|
|
|
|
|
|
|
|
它是通过使用LiteOS提供的错误码宏 LOS_ERRNO_OS_ERROR 来定义的。
|
|
|
|
|
|
|
|
该宏接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
在这里,LOS_MOD_HWI 表示HWI模块的模块号,0x07 表示错误码值。
|
|
|
|
|
|
|
|
因此,OS_ERRNO_HWI_FASTMODE_ALREADY_CREATED 的值是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这个错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在创建快速中断模式时,如果该模式已经被创建,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 OS_ERRNO_HWI_FASTMODE_ALREADY_CREATED ,
|
|
|
|
|
|
|
|
来判断快速中断模式是否已经存在,从而进行相应的错误处理。*/
|
|
|
|
#define OS_ERRNO_HWI_FASTMODE_ALREADY_CREATED LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x07)
|
|
|
|
#define OS_ERRNO_HWI_FASTMODE_ALREADY_CREATED LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x07)
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -214,6 +396,23 @@ extern size_t IntActive(VOID);
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* </ul>
|
|
|
|
* </ul>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是两个预处理指令,用于定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这些错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误,具体来说是硬件中断发生错误的错误。
|
|
|
|
|
|
|
|
它们是通过使用LiteOS提供的错误码宏来定义的。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOS_ERRNO_HWI_INTERR 是一个表示硬件中断发生错误的错误码。
|
|
|
|
|
|
|
|
该错误码的值由 LOS_ERRNO_OS_ERROR 宏生成,
|
|
|
|
|
|
|
|
它接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
在这里,LOS_MOD_HWI 表示HWI模块的模块号,0x08 表示错误码值。
|
|
|
|
|
|
|
|
因此,LOS_ERRNO_HWI_INTERR 的值是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
OS_ERRNO_HWI_INTERR 是 LOS_ERRNO_HWI_INTERR 的别名。
|
|
|
|
|
|
|
|
通过将其定义为相同的值,可以在代码中使用更简洁的名称来表示硬件中断发生错误的错误码。
|
|
|
|
|
|
|
|
这些错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在中断处理函数中,如果硬件中断发生错误,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 LOS_ERRNO_HWI_INTERR 或 OS_ERRNO_HWI_INTERR,
|
|
|
|
|
|
|
|
来判断中断是否发生了错误,进而进行相应的错误处理。*/
|
|
|
|
#define LOS_ERRNO_HWI_INTERR LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x08)
|
|
|
|
#define LOS_ERRNO_HWI_INTERR LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x08)
|
|
|
|
#define OS_ERRNO_HWI_INTERR LOS_ERRNO_HWI_INTERR
|
|
|
|
#define OS_ERRNO_HWI_INTERR LOS_ERRNO_HWI_INTERR
|
|
|
|
|
|
|
|
|
|
|
@ -230,6 +429,22 @@ extern size_t IntActive(VOID);
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* </ul>
|
|
|
|
* </ul>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是两个预处理指令,用于定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这些错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误,具体来说是共享中断错误的错误。
|
|
|
|
|
|
|
|
它们是通过使用LiteOS提供的错误码宏来定义的。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOS_ERRNO_HWI_SHARED_ERROR 是一个表示共享中断错误的错误码。
|
|
|
|
|
|
|
|
该错误码的值由 LOS_ERRNO_OS_ERROR 宏生成,它接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
在这里,LOS_MOD_HWI 表示HWI模块的模块号,0x09 表示错误码值。
|
|
|
|
|
|
|
|
因此,LOS_ERRNO_HWI_SHARED_ERROR 的值是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
OS_ERRNO_HWI_SHARED_ERROR 是 LOS_ERRNO_HWI_SHARED_ERROR 的别名。
|
|
|
|
|
|
|
|
通过将其定义为相同的值,可以在代码中使用更简洁的名称来表示共享中断错误的错误码。
|
|
|
|
|
|
|
|
这些错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在设置共享中断时,如果发生了错误,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 LOS_ERRNO_HWI_SHARED_ERROR 或 OS_ERRNO_HWI_SHARED_ERROR,
|
|
|
|
|
|
|
|
来判断共享中断是否设置成功,进而进行相应的错误处理。*/
|
|
|
|
#define LOS_ERRNO_HWI_SHARED_ERROR LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x09)
|
|
|
|
#define LOS_ERRNO_HWI_SHARED_ERROR LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x09)
|
|
|
|
#define OS_ERRNO_HWI_SHARED_ERROR LOS_ERRNO_HWI_SHARED_ERROR
|
|
|
|
#define OS_ERRNO_HWI_SHARED_ERROR LOS_ERRNO_HWI_SHARED_ERROR
|
|
|
|
|
|
|
|
|
|
|
@ -242,6 +457,20 @@ extern size_t IntActive(VOID);
|
|
|
|
* Solution: This error code is not in use temporarily.
|
|
|
|
* Solution: This error code is not in use temporarily.
|
|
|
|
* @deprecated This error code is obsolete since LiteOS 5.0.0.
|
|
|
|
* @deprecated This error code is obsolete since LiteOS 5.0.0.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是一个预处理指令,用于定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这个错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误,具体来说是硬件中断参数无效的错误。
|
|
|
|
|
|
|
|
它是通过使用LiteOS提供的错误码宏来定义的。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OS_ERRNO_HWI_ARG_INVALID 是一个表示硬件中断参数无效的错误码。
|
|
|
|
|
|
|
|
该错误码的值由 LOS_ERRNO_OS_ERROR 宏生成,它接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
在这里,LOS_MOD_HWI 表示HWI模块的模块号,0x0a 表示错误码值。
|
|
|
|
|
|
|
|
因此,OS_ERRNO_HWI_ARG_INVALID 的值是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
这个错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在注册硬件中断处理函数时,如果传递给函数的参数无效,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 OS_ERRNO_HWI_ARG_INVALID,来判断参数是否有效,
|
|
|
|
|
|
|
|
进而进行相应的错误处理。*/
|
|
|
|
#define OS_ERRNO_HWI_ARG_INVALID LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x0a)
|
|
|
|
#define OS_ERRNO_HWI_ARG_INVALID LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x0a)
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -257,6 +486,22 @@ extern size_t IntActive(VOID);
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* <li>Please use macros starting with LOS, and macros starting with OS will not be supported.</li>
|
|
|
|
* </ul>
|
|
|
|
* </ul>
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*是两个预处理指令,用于定义错误码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这些错误码用于表示在操作系统的硬件中断(HWI)模块中发生的错误,具体来说是硬件中断号未创建的错误。
|
|
|
|
|
|
|
|
它们是通过使用LiteOS提供的错误码宏来定义的。
|
|
|
|
|
|
|
|
具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOS_ERRNO_HWI_HWINUM_UNCREATE 是一个表示硬件中断号未创建的错误码。
|
|
|
|
|
|
|
|
该错误码的值由 LOS_ERRNO_OS_ERROR 宏生成,它接受两个参数:模块号和错误码值。
|
|
|
|
|
|
|
|
在这里,LOS_MOD_HWI 表示HWI模块的模块号,0x0b 表示错误码值。
|
|
|
|
|
|
|
|
因此,LOS_ERRNO_HWI_HWINUM_UNCREATE 的值是根据模块号和错误码值计算得出的。
|
|
|
|
|
|
|
|
OS_ERRNO_HWI_HWINUM_UNCREATE 是 LOS_ERRNO_HWI_HWINUM_UNCREATE 的别名。
|
|
|
|
|
|
|
|
通过将其定义为相同的值,可以在代码中使用更简洁的名称来表示硬件中断号未创建的错误码。
|
|
|
|
|
|
|
|
这个错误码可以在编程过程中用于判断和处理HWI模块相关的错误情况。
|
|
|
|
|
|
|
|
例如,在请求处理某个硬件中断时,如果指定的中断号未创建,
|
|
|
|
|
|
|
|
可以通过检查返回的错误码是否等于 LOS_ERRNO_HWI_HWINUM_UNCREATE 或 OS_ERRNO_HWI_HWINUM_UNCREATE,
|
|
|
|
|
|
|
|
来判断中断号是否有效,进而进行相应的错误处理。*/
|
|
|
|
#define LOS_ERRNO_HWI_HWINUM_UNCREATE LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x0b)
|
|
|
|
#define LOS_ERRNO_HWI_HWINUM_UNCREATE LOS_ERRNO_OS_ERROR(LOS_MOD_HWI, 0x0b)
|
|
|
|
#define OS_ERRNO_HWI_HWINUM_UNCREATE LOS_ERRNO_HWI_HWINUM_UNCREATE
|
|
|
|
#define OS_ERRNO_HWI_HWINUM_UNCREATE LOS_ERRNO_HWI_HWINUM_UNCREATE
|
|
|
|
|
|
|
|
|
|
|
@ -264,18 +509,21 @@ extern size_t IntActive(VOID);
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* Define the type HWI_HANDLE_T for a hardware interrupt number, the type is an unsigned int.
|
|
|
|
* Define the type HWI_HANDLE_T for a hardware interrupt number, the type is an unsigned int.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//这行代码定义了一个新的类型 HWI_HANDLE_T,它被定义为 UINT32,即无符号32位整数。在这里,HWI_HANDLE_T 被用来表示硬件中断的句柄或标识符。
|
|
|
|
typedef UINT32 HWI_HANDLE_T;
|
|
|
|
typedef UINT32 HWI_HANDLE_T;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* Define the type HWI_PRIOR_T for a hardware interrupt priority, the type is an unsigned short.
|
|
|
|
* Define the type HWI_PRIOR_T for a hardware interrupt priority, the type is an unsigned short.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//这行代码定义了一个新的类型 HWI_PRIOR_T,它被定义为 UINT16,即无符号16位整数。在这里,HWI_PRIOR_T 被用来表示硬件中断的优先级。
|
|
|
|
typedef UINT16 HWI_PRIOR_T;
|
|
|
|
typedef UINT16 HWI_PRIOR_T;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* Define the type HWI_MODE_T for hardware interrupt mode configurations, the type is an unsigned short.
|
|
|
|
* Define the type HWI_MODE_T for hardware interrupt mode configurations, the type is an unsigned short.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//这行代码定义了一个新的类型 HWI_MODE_T,它被定义为 UINT16,即无符号16位整数。在这里,HWI_MODE_T 被用来表示硬件中断的模式配置。
|
|
|
|
typedef UINT16 HWI_MODE_T;
|
|
|
|
typedef UINT16 HWI_MODE_T;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -283,6 +531,9 @@ typedef UINT16 HWI_MODE_T;
|
|
|
|
* Define the type HWI_ARG_T for the parameter used for the hardware interrupt creation function.
|
|
|
|
* Define the type HWI_ARG_T for the parameter used for the hardware interrupt creation function.
|
|
|
|
* The function of this parameter varies among platforms.
|
|
|
|
* The function of this parameter varies among platforms.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*这行代码定义了一个新的类型 HWI_ARG_T,它被定义为 UINTPTR,
|
|
|
|
|
|
|
|
即一个无符号整数,其大小与指针大小相同。
|
|
|
|
|
|
|
|
在这里,HWI_ARG_T 被用来表示硬件中断创建函数的参数,其具体含义会因平台而异。*/
|
|
|
|
typedef UINTPTR HWI_ARG_T;
|
|
|
|
typedef UINTPTR HWI_ARG_T;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -303,6 +554,8 @@ typedef UINTPTR HWI_ARG_T;
|
|
|
|
* @see LOS_HwiCreate
|
|
|
|
* @see LOS_HwiCreate
|
|
|
|
* @since Huawei LiteOS V100R001C00
|
|
|
|
* @since Huawei LiteOS V100R001C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*这行代码定义了一个函数指针类型 HWI_PROC_FUNC,它指向一个没有参数和返回值的函数。
|
|
|
|
|
|
|
|
在这里,HWI_PROC_FUNC 被用来表示硬件中断处理函数的类型。*/
|
|
|
|
typedef VOID (*HWI_PROC_FUNC)(VOID);
|
|
|
|
typedef VOID (*HWI_PROC_FUNC)(VOID);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -311,12 +564,22 @@ typedef VOID (*HWI_PROC_FUNC)(VOID);
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* The flag only used by the kernel as part of the IRQ handling routines.
|
|
|
|
* The flag only used by the kernel as part of the IRQ handling routines.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*这个宏定义了一个常量 IRQF_SHARED,其值为 0x8000U。
|
|
|
|
|
|
|
|
在这里,IRQF_SHARED 用于表示一个共享的硬件中断。*/
|
|
|
|
#define IRQF_SHARED 0x8000U
|
|
|
|
#define IRQF_SHARED 0x8000U
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* The hardware interrupt parameter for #LOS_HwiDelete and interrupt handler in #LOS_HwiCreate.
|
|
|
|
* The hardware interrupt parameter for #LOS_HwiDelete and interrupt handler in #LOS_HwiCreate.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*这个代码定义了一个名为 HWI_IRQ_PARAM_S 的结构体类型,结构体内包含了以下成员:
|
|
|
|
|
|
|
|
int swIrq: 表示中断号的整数变量。
|
|
|
|
|
|
|
|
VOID *pDevId: 表示触发中断的设备ID的指针变量。
|
|
|
|
|
|
|
|
const CHAR *pName: 表示中断名称的指针变量。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这个结构体类型 HWI_IRQ_PARAM_S 用作 LOS_HwiDelete 函数和 LOS_HwiCreate 函数中的硬件中断参数。
|
|
|
|
|
|
|
|
通过使用这个结构体,
|
|
|
|
|
|
|
|
可以传递中断号、设备ID和中断名称等信息给函数,以进行相应的操作或处理。*/
|
|
|
|
typedef struct tagIrqParam {
|
|
|
|
typedef struct tagIrqParam {
|
|
|
|
int swIrq; /**< The interrupt number */
|
|
|
|
int swIrq; /**< The interrupt number */
|
|
|
|
VOID *pDevId; /**< The pointer to the device ID that launches the interrupt */
|
|
|
|
VOID *pDevId; /**< The pointer to the device ID that launches the interrupt */
|
|
|
@ -340,6 +603,27 @@ typedef struct tagIrqParam {
|
|
|
|
* @see LOS_IntRestore
|
|
|
|
* @see LOS_IntRestore
|
|
|
|
* @since Huawei LiteOS V100R001C00
|
|
|
|
* @since Huawei LiteOS V100R001C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*这段代码定义了一个静态内联函数 LOS_IntLock(),具体解释如下:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
STATIC INLINE:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
STATIC 关键字指示该函数的作用域为当前文件,在其他文件中不可见。
|
|
|
|
|
|
|
|
INLINE 关键字告诉编译器将该函数的代码插入到调用处,而不是生成函数调用。
|
|
|
|
|
|
|
|
UINT32:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UINT32 表示返回值类型为无符号32位整数。
|
|
|
|
|
|
|
|
LOS_IntLock(VOID):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOS_IntLock 是函数的名称,它接受一个 VOID 参数,表示没有输入参数。
|
|
|
|
|
|
|
|
return ArchIntLock();:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这行代码调用了 ArchIntLock() 函数,并将其返回值作为 LOS_IntLock() 函数的返回值。
|
|
|
|
|
|
|
|
ArchIntLock() 是一个硬件相关的函数,用于禁用中断,并返回之前的中断状态。
|
|
|
|
|
|
|
|
因为函数声明为内联函数且函数体非常简单,
|
|
|
|
|
|
|
|
所以编译器会在调用处直接插入 ArchIntLock() 的代码,提高执行效率。
|
|
|
|
|
|
|
|
总结:LOS_IntLock() 函数是一个内联函数,
|
|
|
|
|
|
|
|
它调用底层的 ArchIntLock() 函数来禁用中断,并返回之前的中断状态。
|
|
|
|
|
|
|
|
这个函数的目的是为了保护关键代码区域,防止被中断打断,以确保数据的一致性和可靠性。*/
|
|
|
|
STATIC INLINE UINT32 LOS_IntLock(VOID)
|
|
|
|
STATIC INLINE UINT32 LOS_IntLock(VOID)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return ArchIntLock();
|
|
|
|
return ArchIntLock();
|
|
|
@ -361,6 +645,13 @@ STATIC INLINE UINT32 LOS_IntLock(VOID)
|
|
|
|
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
|
|
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
|
|
* @see LOS_IntLock
|
|
|
|
* @see LOS_IntLock
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*return ArchIntUnlock();:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这行代码调用了 ArchIntUnlock() 函数,并将其返回值作为 LOS_IntUnLock() 函数的返回值。
|
|
|
|
|
|
|
|
ArchIntUnlock() 是一个硬件相关的函数,用于恢复之前被禁用的中断状态。
|
|
|
|
|
|
|
|
总结:LOS_IntUnLock() 函数是一个内联函数,
|
|
|
|
|
|
|
|
它调用底层的 ArchIntUnlock() 函数来恢复之前被禁用的中断状态。
|
|
|
|
|
|
|
|
这个函数的目的是为了在临界区执行完毕后,恢复中断,允许其他中断事件发生。*/
|
|
|
|
STATIC INLINE UINT32 LOS_IntUnLock(VOID)
|
|
|
|
STATIC INLINE UINT32 LOS_IntUnLock(VOID)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return ArchIntUnlock();
|
|
|
|
return ArchIntUnlock();
|
|
|
@ -384,6 +675,14 @@ STATIC INLINE UINT32 LOS_IntUnLock(VOID)
|
|
|
|
* @see LOS_IntLock
|
|
|
|
* @see LOS_IntLock
|
|
|
|
* @since Huawei LiteOS V100R001C00
|
|
|
|
* @since Huawei LiteOS V100R001C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*ArchIntRestore(intSave);:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
这行代码调用了 ArchIntRestore() 函数,将之前保存的中断状态作为参数传递给它。
|
|
|
|
|
|
|
|
ArchIntRestore() 是一个硬件相关的函数,用于根据传入的中断状态值恢复中断。
|
|
|
|
|
|
|
|
总结:LOS_IntRestore() 函数是一个内联函数,
|
|
|
|
|
|
|
|
它调用底层的 ArchIntRestore() 函数来根据之前保存的中断状态恢复中断。
|
|
|
|
|
|
|
|
这个函数的目的是在一段被禁用中断的代码执行完毕后,恢复中断状态,允许其他中断事件发生。
|
|
|
|
|
|
|
|
由于函数没有返回值,所以不会返回任何结果。*/
|
|
|
|
STATIC INLINE VOID LOS_IntRestore(UINT32 intSave)
|
|
|
|
STATIC INLINE VOID LOS_IntRestore(UINT32 intSave)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ArchIntRestore(intSave);
|
|
|
|
ArchIntRestore(intSave);
|
|
|
@ -430,11 +729,11 @@ STATIC INLINE VOID LOS_IntRestore(UINT32 intSave)
|
|
|
|
* @see LOS_HwiDelete
|
|
|
|
* @see LOS_HwiDelete
|
|
|
|
* @since Huawei LiteOS V100R001C00
|
|
|
|
* @since Huawei LiteOS V100R001C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
extern UINT32 LOS_HwiCreate(HWI_HANDLE_T hwiNum,
|
|
|
|
extern UINT32 LOS_HwiCreate(HWI_HANDLE_T hwiNum,//表示中断号或中断向量的标识。
|
|
|
|
HWI_PRIOR_T hwiPrio,
|
|
|
|
HWI_PRIOR_T hwiPrio,//表示中断的优先级。
|
|
|
|
HWI_MODE_T hwiMode,
|
|
|
|
HWI_MODE_T hwiMode,//表示中断的模式(如边沿触发、电平触发等)。
|
|
|
|
HWI_PROC_FUNC hwiHandler,
|
|
|
|
HWI_PROC_FUNC hwiHandler,//表示中断处理函数的指针。
|
|
|
|
HWI_IRQ_PARAM_S *irqParam);
|
|
|
|
HWI_IRQ_PARAM_S *irqParam);//表示中断参数的结构体指针。
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @ingroup los_hwi
|
|
|
|
* @ingroup los_hwi
|
|
|
@ -470,6 +769,9 @@ extern UINT32 LOS_HwiCreate(HWI_HANDLE_T hwiNum,
|
|
|
|
* @see LOS_HwiCreate
|
|
|
|
* @see LOS_HwiCreate
|
|
|
|
* @since Huawei LiteOS V100R001C00
|
|
|
|
* @since Huawei LiteOS V100R001C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//是一个函数声明,用于在 LiteOS 操作系统中删除一个中断处理程序。
|
|
|
|
|
|
|
|
/*HWI_HANDLE_T hwiNum 是函数的第一个参数,表示要删除的中断号或中断向量的标识。
|
|
|
|
|
|
|
|
HWI_IRQ_PARAM_S *irqParam 是函数的第二个参数,表示中断参数的结构体指针。*/
|
|
|
|
extern UINT32 LOS_HwiDelete(HWI_HANDLE_T hwiNum, HWI_IRQ_PARAM_S *irqParam);
|
|
|
|
extern UINT32 LOS_HwiDelete(HWI_HANDLE_T hwiNum, HWI_IRQ_PARAM_S *irqParam);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -492,6 +794,8 @@ extern UINT32 LOS_HwiDelete(HWI_HANDLE_T hwiNum, HWI_IRQ_PARAM_S *irqParam);
|
|
|
|
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
|
|
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//是一个函数声明,用于在 LiteOS 操作系统中触发一个指定的中断。
|
|
|
|
|
|
|
|
//HWI_HANDLE_T hwiNum 是函数的参数,表示要触发的中断号或中断向量的标识。
|
|
|
|
extern UINT32 LOS_HwiTrigger(HWI_HANDLE_T hwiNum);
|
|
|
|
extern UINT32 LOS_HwiTrigger(HWI_HANDLE_T hwiNum);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -513,6 +817,10 @@ extern UINT32 LOS_HwiTrigger(HWI_HANDLE_T hwiNum);
|
|
|
|
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
|
|
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//是一个函数声明,用于在 LiteOS 操作系统中清除(复位)一个指定的中断。
|
|
|
|
|
|
|
|
/*HWI_HANDLE_T hwiNum 是函数的参数,表示要清除的中断号或中断向量的标识。
|
|
|
|
|
|
|
|
函数的作用是根据指定的中断号,将相应的中断标志位清除,即将中断状态复位。
|
|
|
|
|
|
|
|
通过调用该函数,可以清除中断触发后的状态,以便重新准备下一次中断处理。*/
|
|
|
|
extern UINT32 LOS_HwiClear(HWI_HANDLE_T hwiNum);
|
|
|
|
extern UINT32 LOS_HwiClear(HWI_HANDLE_T hwiNum);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -536,6 +844,10 @@ extern UINT32 LOS_HwiClear(HWI_HANDLE_T hwiNum);
|
|
|
|
* @see LOS_HwiDisable
|
|
|
|
* @see LOS_HwiDisable
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//是一个函数声明,用于在 LiteOS 操作系统中使能(启用)一个指定的中断。
|
|
|
|
|
|
|
|
/*HWI_HANDLE_T hwiNum 是函数的参数,表示要使能的中断号或中断向量的标识。
|
|
|
|
|
|
|
|
函数的作用是根据指定的中断号,将相应的中断使能位设置为有效,即启用该中断。
|
|
|
|
|
|
|
|
启用中断后,当满足中断触发条件时,系统将会跳转执行对应的中断处理程序。*/
|
|
|
|
extern UINT32 LOS_HwiEnable(HWI_HANDLE_T hwiNum);
|
|
|
|
extern UINT32 LOS_HwiEnable(HWI_HANDLE_T hwiNum);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -558,6 +870,10 @@ extern UINT32 LOS_HwiEnable(HWI_HANDLE_T hwiNum);
|
|
|
|
* @see LOS_HwiEnable
|
|
|
|
* @see LOS_HwiEnable
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//是一个函数声明,用于在 LiteOS 操作系统中禁用(关闭)一个指定的中断。
|
|
|
|
|
|
|
|
/*HWI_HANDLE_T hwiNum 是函数的参数,表示要禁用的中断号或中断向量的标识。
|
|
|
|
|
|
|
|
函数的作用是根据指定的中断号,将相应的中断使能位设置为无效,即禁用该中断。
|
|
|
|
|
|
|
|
禁用中断后,即使满足中断触发条件,系统也不会跳转执行对应的中断处理程序。*/
|
|
|
|
extern UINT32 LOS_HwiDisable(HWI_HANDLE_T hwiNum);
|
|
|
|
extern UINT32 LOS_HwiDisable(HWI_HANDLE_T hwiNum);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef LOSCFG_KERNEL_SMP
|
|
|
|
#ifdef LOSCFG_KERNEL_SMP
|
|
|
@ -582,6 +898,11 @@ extern UINT32 LOS_HwiDisable(HWI_HANDLE_T hwiNum);
|
|
|
|
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
|
|
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//是一个函数声明,用于在 LiteOS 操作系统中向指定的处理器发送中断请求。
|
|
|
|
|
|
|
|
/*HWI_HANDLE_T hwiNum 是函数的第一个参数,表示要发送的中断号或中断向量的标识。
|
|
|
|
|
|
|
|
UINT32 cpuMask 是函数的第二个参数,表示中断发送的目标处理器掩码,用于指定将中断发送到哪些处理器上。
|
|
|
|
|
|
|
|
函数的作用是向指定的处理器发送中断请求,
|
|
|
|
|
|
|
|
即通过中断控制器向目标处理器发送中断信号,触发相应的中断处理操作。*/
|
|
|
|
extern UINT32 LOS_HwiSendIpi(HWI_HANDLE_T hwiNum, UINT32 cpuMask);
|
|
|
|
extern UINT32 LOS_HwiSendIpi(HWI_HANDLE_T hwiNum, UINT32 cpuMask);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -605,6 +926,12 @@ extern UINT32 LOS_HwiSendIpi(HWI_HANDLE_T hwiNum, UINT32 cpuMask);
|
|
|
|
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
|
|
* <ul><li>los_hwi.h: the header file that contains the API declaration.</li></ul>
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//是一个函数声明,用于在 LiteOS 操作系统中设置指定中断的亲和性(Affinity)。
|
|
|
|
|
|
|
|
/*HWI_HANDLE_T hwiNum 是函数的第一个参数,表示要设置亲和性的中断号或中断向量的标识。
|
|
|
|
|
|
|
|
UINT32 cpuMask 是函数的第二个参数,表示要设置的中断亲和性掩码,用于指定该中断可以在哪些处理器上执行。
|
|
|
|
|
|
|
|
函数的作用是设置指定中断的亲和性,即将中断与特定的处理器相关联。当中断被触发时,
|
|
|
|
|
|
|
|
只有与中断亲和性相关的处理器才会尝试执行中断处理程序,
|
|
|
|
|
|
|
|
从而避免了不必要的中断传递和处理开销。*/
|
|
|
|
extern UINT32 LOS_HwiSetAffinity(HWI_HANDLE_T hwiNum, UINT32 cpuMask);
|
|
|
|
extern UINT32 LOS_HwiSetAffinity(HWI_HANDLE_T hwiNum, UINT32 cpuMask);
|
|
|
|
#endif /* LOSCFG_KERNEL_SMP */
|
|
|
|
#endif /* LOSCFG_KERNEL_SMP */
|
|
|
|
|
|
|
|
|
|
|
@ -632,6 +959,11 @@ extern UINT32 LOS_HwiSetAffinity(HWI_HANDLE_T hwiNum, UINT32 cpuMask);
|
|
|
|
* @see None
|
|
|
|
* @see None
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
* @since Huawei LiteOS V200R005C00
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//是一个函数声明,用于在 LiteOS 操作系统中设置指定中断的优先级(Priority)。
|
|
|
|
|
|
|
|
/*HWI_HANDLE_T hwiNum 是函数的第一个参数,表示要设置优先级的中断号或中断向量的标识。
|
|
|
|
|
|
|
|
HWI_PRIOR_T priority 是函数的第二个参数,表示要设置的中断优先级。
|
|
|
|
|
|
|
|
函数的作用是设置指定中断的优先级,即确定中断在系统中的相对执行优先级。
|
|
|
|
|
|
|
|
较高优先级的中断将优先获得处理器资源,并在其他中断之前得到响应和执行。*/
|
|
|
|
extern UINT32 LOS_HwiSetPriority(HWI_HANDLE_T hwiNum, HWI_PRIOR_T priority);
|
|
|
|
extern UINT32 LOS_HwiSetPriority(HWI_HANDLE_T hwiNum, HWI_PRIOR_T priority);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef LOSCFG_KERNEL_LOWPOWER
|
|
|
|
#ifdef LOSCFG_KERNEL_LOWPOWER
|
|
|
@ -652,6 +984,10 @@ extern UINT32 LOS_HwiSetPriority(HWI_HANDLE_T hwiNum, HWI_PRIOR_T priority);
|
|
|
|
* @see None.
|
|
|
|
* @see None.
|
|
|
|
* @since Huawei LiteOS V200R005C10
|
|
|
|
* @since Huawei LiteOS V200R005C10
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//是一个函数指针类型的定义。
|
|
|
|
|
|
|
|
/*这部分定义了函数指针所指向的函数的参数列表,其中包含一个名为 hwiNum 的参数,其类型为 HWI_HANDLE_T。
|
|
|
|
|
|
|
|
因此,整体来说,typedef VOID (*WAKEUPFROMINTHOOK)(HWI_HANDLE_T hwiNum) 定义了一个函数指针类型 WAKEUPFROMINTHOOK,
|
|
|
|
|
|
|
|
它指向一个不返回数值的函数,并且该函数接受一个 HWI_HANDLE_T 类型的参数 hwiNum。*/
|
|
|
|
typedef VOID (*WAKEUPFROMINTHOOK)(HWI_HANDLE_T hwiNum);
|
|
|
|
typedef VOID (*WAKEUPFROMINTHOOK)(HWI_HANDLE_T hwiNum);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
@ -671,6 +1007,11 @@ typedef VOID (*WAKEUPFROMINTHOOK)(HWI_HANDLE_T hwiNum);
|
|
|
|
* @see None.
|
|
|
|
* @see None.
|
|
|
|
* @since Huawei LiteOS V200R005C10
|
|
|
|
* @since Huawei LiteOS V200R005C10
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
|
|
|
|
//是用于注册中断唤醒钩子函数的外部声明。
|
|
|
|
|
|
|
|
/*WAKEUPFROMINTHOOK hook 是函数的参数,它是一个指向中断唤醒钩子函数的指针。
|
|
|
|
|
|
|
|
函数的作用是注册中断唤醒钩子函数,
|
|
|
|
|
|
|
|
即将指定的函数指针(指向中断唤醒处理函数的指针)注册到系统中,
|
|
|
|
|
|
|
|
以便在特定的中断事件发生时执行相应的处理操作。*/
|
|
|
|
extern VOID LOS_IntWakeupHookReg(WAKEUPFROMINTHOOK hook);
|
|
|
|
extern VOID LOS_IntWakeupHookReg(WAKEUPFROMINTHOOK hook);
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|