feat: synchronous los_hwicreate interface

BREAKING CHANGE:
    涉及接口修改:
    LOS_HwiCreate
    LOS_HwiDelete
    改动内容:
    中断处理函数参数类型由HWI_ARG_T统一改为HwiIrqParam,封装原有arg参数及riscv部分实际使用变量pDevId, 这样一方面统一LiteOS接口,也统一了中断处理函数的arg参数
    同步LOS_HwiDelete接口入参,新增HWI_IRQ_PARAM_S *irqParam参数,为后续共享中断功能的添加预留

Signed-off-by: LiteOS2021 <dinglu@huawei.com>
This commit is contained in:
LiteOS2021 2022-02-15 16:10:15 +08:00
parent b9830c61f5
commit 6c68adad4d
67 changed files with 541 additions and 329 deletions

View File

@ -233,22 +233,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -262,10 +262,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask(hwiNum);
LOS_IntRestore(intSave);
@ -277,11 +281,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -268,22 +268,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -301,10 +301,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask((IRQn_Type)hwiNum);
HwiSetPriority((IRQn_Type)hwiNum, hwiPrio);
@ -318,11 +322,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -259,22 +259,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -292,10 +292,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask((IRQn_Type)hwiNum);
HwiSetPriority((IRQn_Type)hwiNum, hwiPrio);
@ -309,11 +313,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -259,22 +259,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -292,10 +292,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask((IRQn_Type)hwiNum);
HwiSetPriority((IRQn_Type)hwiNum, hwiPrio);
@ -309,11 +313,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -267,22 +267,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINTPTR intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -300,10 +300,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask((IRQn_Type)hwiNum);
HwiSetPriority((IRQn_Type)hwiNum, hwiPrio);
@ -317,11 +321,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -267,22 +267,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINTPTR intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -300,10 +300,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask((IRQn_Type)hwiNum);
HwiSetPriority((IRQn_Type)hwiNum, hwiPrio);
@ -317,11 +321,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -263,22 +263,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -296,10 +296,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask((IRQn_Type)hwiNum);
HwiSetPriority((IRQn_Type)hwiNum, hwiPrio);
@ -313,11 +317,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -269,22 +269,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -302,10 +302,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask((IRQn_Type)hwiNum);
HwiSetPriority((IRQn_Type)hwiNum, hwiPrio);
@ -319,11 +323,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -263,22 +263,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -296,10 +296,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask((IRQn_Type)hwiNum);
HwiSetPriority((IRQn_Type)hwiNum, hwiPrio);
@ -313,11 +317,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -258,22 +258,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -291,10 +291,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask((IRQn_Type)hwiNum);
HwiSetPriority((IRQn_Type)hwiNum, hwiPrio);
@ -308,11 +312,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -265,22 +265,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -298,10 +298,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask((IRQn_Type)hwiNum);
HwiSetPriority((IRQn_Type)hwiNum, hwiPrio);
@ -315,11 +319,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -344,22 +344,22 @@ LITE_OS_SEC_TEXT VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
if (hwiNum >= OS_HWI_MAX_NUM) {
@ -376,10 +376,14 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
}
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask(hwiNum);
(VOID)HwiSetPriority(hwiNum, (UINT8)hwiPrio);
@ -392,11 +396,13 @@ LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -53,6 +53,11 @@ typedef VOID (*HWI_PROC_FUNC)(VOID *parm);
#else
typedef VOID (*HWI_PROC_FUNC)(void);
#endif
typedef struct tagIrqParam {
int swIrq; /**< The interrupt number */
VOID *pDevId; /**< The pointer to the device ID that launches the interrupt */
const CHAR *pName; /**< The interrupt name */
} HwiIrqParam;
typedef struct {
UINT32 (*triggerIrq)(HWI_HANDLE_T hwiNum);
@ -109,14 +114,15 @@ UINT32 ArchIntUnLock(VOID);
* </ul>
*
* @param hwiNum [IN] Type#HWI_HANDLE_T: hardware interrupt number. The value range applicable for a Cortex-A7 platform is [32,95].
*
* @param irqParam [IN] Type #HwiIrqParam *. ID of hardware interrupt which will base on
* when delete the hardware interrupt.
* @retval #OS_ERRNO_HWI_NUM_INVALID 0x02000900: Invalid interrupt number.
* @retval #LOS_OK 0 : The interrupt is successfully delete.
* @par Dependency:
* <ul><li>los_interrupt.h: the header file that contains the API declaration.</li></ul>
* @see None.
*/
UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum);
UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam);
/**
* @ingroup los_interrupt
@ -137,7 +143,8 @@ UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum);
* @param hwiPrio [IN] Type#HWI_PRIOR_T: hardware interrupt priority. Ignore this parameter temporarily.
* @param mode [IN] Type#HWI_MODE_T: hardware interrupt mode. Ignore this parameter temporarily.
* @param handler [IN] Type#HWI_PROC_FUNC: interrupt handler used when a hardware interrupt is triggered.
* @param arg [IN] Type#HWI_ARG_T: input parameter of the interrupt handler used when a hardware interrupt is triggered.
* @param irqParam [IN] Type#HwiIrqParam: input parameter of the interrupt
* handler used when a hardware interrupt is triggered.
*
* @retval #OS_ERRNO_HWI_PROC_FUNC_NULL 0x02000901: Null hardware interrupt handling function.
* @retval #OS_ERRNO_HWI_NUM_INVALID 0x02000900: Invalid interrupt number.
@ -152,7 +159,7 @@ UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg);
HwiIrqParam *irqParam);
STATIC INLINE UINT32 ArchIntTrigger(HWI_HANDLE_T hwiNum)
{

View File

@ -86,9 +86,9 @@ LITE_OS_SEC_TEXT_INIT VOID HalHwiInit(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- hwi interrupt mode, between vector or non-vector
handler --- hwi handler
arg --- set trig mode of the hwi handler
hwiMode --- hwi interrupt hwiMode, between vector or non-vector
hwiHandler --- hwi handler
irqParam --- set trig hwiMode of the hwi handler
Level Triggerred = 0
Postive/Rising Edge Triggered = 1
Negtive/Falling Edge Triggered = 3
@ -97,24 +97,24 @@ LITE_OS_SEC_TEXT_INIT VOID HalHwiInit(VOID)
*****************************************************************************/
UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
if (hwiNum > SOC_INT_MAX) {
return OS_ERRNO_HWI_NUM_INVALID;
}
if (mode > ECLIC_VECTOR_INTERRUPT) {
if (hwiMode > ECLIC_VECTOR_INTERRUPT) {
return OS_ERRNO_HWI_MODE_INVALID;
}
if (arg > ECLIC_NEGTIVE_EDGE_TRIGGER) {
if ((irqParam == NULL) || (irqParam->pDevId > ECLIC_NEGTIVE_EDGE_TRIGGER)) {
return OS_ERRNO_HWI_ARG_INVALID;
}
/* set interrupt vector mode */
ECLIC_SetShvIRQ(hwiNum, mode);
/* set interrupt trigger mode and polarity */
ECLIC_SetTrigIRQ(hwiNum, arg);
/* set interrupt vector hwiMode */
ECLIC_SetShvIRQ(hwiNum, hwiMode);
/* set interrupt trigger hwiMode and polarity */
ECLIC_SetTrigIRQ(hwiNum, irqParam->pDevId);
/* set interrupt level */
// default to 0
ECLIC_SetLevelIRQ(hwiNum, 0);
@ -124,9 +124,9 @@ UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
/* set interrupt priority */
// low 16 bit for priority
ECLIC_SetPriorityIRQ(hwiNum, (hwiPrio & 0xffff));
if (handler != NULL) {
if (hwiHandler != NULL) {
/* set interrupt handler entry to vector table */
ECLIC_SetVector(hwiNum, (rv_csr_t)handler);
ECLIC_SetVector(hwiNum, (rv_csr_t)hwiHandler);
}
/* enable interrupt */
HwiUnmask(hwiNum);
@ -137,10 +137,12 @@ UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Return : LOS_OK on success or error code on failure
*****************************************************************************/
LITE_OS_SEC_TEXT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
// change func to default func
ECLIC_SetVector(hwiNum, (rv_csr_t)HalHwiDefaultHandler);
// disable interrupt

View File

@ -165,7 +165,7 @@ LITE_OS_SEC_TEXT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HWI_ARG_T irqParam)
HwiIrqParam *irqParam)
{
UINT32 intSave;
@ -186,8 +186,11 @@ LITE_OS_SEC_TEXT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
g_hwiForm[hwiNum].pfnHook = hwiHandler;
g_hwiForm[hwiNum].uwParam = (VOID *)irqParam;
if (irqParam != NULL) {
g_hwiForm[hwiNum].uwParam = (VOID *)irqParam->pDevId;
} else {
g_hwiForm[hwiNum].uwParam = NULL;
}
if (hwiNum >= OS_RISCV_SYS_VECTOR_CNT) {
HalSetLocalInterPri(hwiNum, hwiPrio);
}
@ -201,10 +204,12 @@ LITE_OS_SEC_TEXT UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Return : LOS_OK on success or error code on failure
*****************************************************************************/
LITE_OS_SEC_TEXT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -61,7 +61,10 @@ STATIC UINT32 SysTickStart(HWI_PROC_FUNC handler)
ArchTickTimer *tick = &g_archTickTimer;
UINT32 period = (UINT32)LOSCFG_BASE_CORE_TICK_RESPONSE_MAX;
UINT32 ret = LOS_HwiCreate(RISCV_MACH_TIMER_IRQ, 0x1, 0, handler, period);
HwiIrqParam irqParam;
irqParam.pDevId = (VOID *)period;
UINT32 ret = LOS_HwiCreate(RISCV_MACH_TIMER_IRQ, 0x1, 0, handler, &irqParam);
if (ret != LOS_OK) {
return ret;
}

View File

@ -314,22 +314,22 @@ VOID HalInterrupt(VOID)
Description : create hardware interrupt
Input : hwiNum --- hwi num to create
hwiPrio --- priority of the hwi
mode --- unused
handler --- hwi handler
arg --- param of the hwi handler
hwiMode --- unused
hwiHandler --- hwi handler
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
HWI_PRIOR_T hwiPrio,
HWI_MODE_T mode,
HWI_PROC_FUNC handler,
HWI_ARG_T arg)
HWI_MODE_T hwiMode,
HWI_PROC_FUNC hwiHandler,
HwiIrqParam *irqParam)
{
(VOID)mode;
(VOID)hwiMode;
UINT32 intSave;
if (handler == NULL) {
if (hwiHandler == NULL) {
return OS_ERRNO_HWI_PROC_FUNC_NULL;
}
@ -347,10 +347,14 @@ UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
intSave = LOS_IntLock();
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
OsSetVector(hwiNum, handler, arg);
if (irqParam != NULL) {
OsSetVector(hwiNum, hwiHandler, irqParam->pDevId);
} else {
OsSetVector(hwiNum, hwiHandler, NULL);
}
#else
(VOID)arg;
OsSetVector(hwiNum, handler);
(VOID)irqParam;
OsSetVector(hwiNum, hwiHandler);
#endif
HwiUnmask(hwiNum);
@ -363,11 +367,13 @@ UINT32 ArchHwiCreate(HWI_HANDLE_T hwiNum,
Function : ArchHwiDelete
Description : Delete hardware interrupt
Input : hwiNum --- hwi num to delete
irqParam --- param of the hwi handler
Output : None
Return : LOS_OK on success or error code on failure
**************************************************************************** */
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum)
LITE_OS_SEC_TEXT_INIT UINT32 ArchHwiDelete(HWI_HANDLE_T hwiNum, HwiIrqParam *irqParam)
{
(VOID)irqParam;
UINT32 intSave;
if (hwiNum >= OS_HWI_MAX_NUM) {

View File

@ -47,6 +47,8 @@ extern "C" {
#endif /* __cplusplus */
#endif /* __cplusplus */
#define EXIT0_IRQ 9
UINT8 __attribute__ ((aligned (8))) g_memStart[OS_SYS_MEM_SIZE];
VOID TaskSampleEntry2(VOID)
@ -81,6 +83,9 @@ VOID TaskSample(VOID)
UINT32 taskID1;
UINT32 taskID2;
TSK_INIT_PARAM_S stTask = {0};
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = (VOID *)ECLIC_LEVEL_TRIGGER;
stTask.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskSampleEntry1;
stTask.uwStackSize = 0x0800;
@ -101,7 +106,7 @@ VOID TaskSample(VOID)
}
LOS_HwiInit();
LOS_HwiCreate(EXTI0_IRQn, 9, ECLIC_NON_VECTOR_INTERRUPT, EXTI0_IRQHandler, ECLIC_LEVEL_TRIGGER);
LOS_HwiCreate(EXTI0_IRQn, EXIT0_IRQ, ECLIC_NON_VECTOR_INTERRUPT, EXTI0_IRQHandler, &irqParam);
}
VOID RunTaskSample(VOID)

View File

@ -330,7 +330,7 @@ typedef struct tagHwiHandleForm {
UINT32 uwPrioMask;
} HWI_HANDLE_FORM_S;
#endif
#define TEST_HwiCreate(ID, prio, mode, Func, arg) LOS_HwiCreate(ID, prio, mode, Func, arg)
#define TEST_HwiCreate(ID, prio, mode, Func, irqParam) LOS_HwiCreate(ID, prio, mode, Func, irqParam)
#define uart_printf_func printf
extern VOID ItSuiteLosTask(void);

View File

@ -28,7 +28,7 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "osTest.h"
#include "it_los_hwi.h"
@ -43,9 +43,11 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiDelete(HWI_NUM_TEST);

View File

@ -38,9 +38,11 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, NULL, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, NULL, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, OS_ERRNO_HWI_PROC_FUNC_NULL, ret);
return LOS_OK;

View File

@ -44,21 +44,23 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
hwiPrio = 2; // 2, set new hwi priority
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
hwiPrio = 6; // 6, set new hwi priority
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT2);
hwiPrio = 7; // 7, set new hwi priority
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, OS_ERRNO_HWI_ALREADY_CREATED, ret, EXIT3);
TestHwiDelete(HWI_NUM_TEST);

View File

@ -43,9 +43,11 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiDelete(HWI_NUM_TEST);

View File

@ -49,18 +49,20 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST2, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST2, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiCreate(HWI_NUM_INT1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_INT1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT2);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT3);
TestHwiDelete(HWI_NUM_TEST1);

View File

@ -44,9 +44,11 @@ static UINT32 Testcase(VOID)
HWI_HANDLE_T hwiNum = 241;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(hwiNum, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(hwiNum, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, OS_ERRNO_HWI_NUM_INVALID, ret);
return LOS_OK;

View File

@ -44,12 +44,14 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
UINT32 intSave;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
intSave = LOS_IntLock();

View File

@ -43,15 +43,17 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, OS_ERRNO_HWI_ALREADY_CREATED, ret, EXIT);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, OS_ERRNO_HWI_ALREADY_CREATED, ret, EXIT);
EXIT:

View File

@ -66,17 +66,19 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT2);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -44,13 +44,15 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
UINT32 intSave1;
UINT32 intSave2;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
intSave1 = LOS_IntLock();

View File

@ -79,19 +79,21 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
hwiPrio = 2; // 2, set new hwi priority
ret = LOS_HwiCreate(HWI_NUM_TEST2, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST2, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
hwiPrio = 1;
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT2);
TestHwiTrigger(HWI_NUM_TEST3);

View File

@ -79,19 +79,21 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
hwiPrio = 2; // set new hwi priority is 2
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
hwiPrio = 3; // set new hwi priority is 3
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT2);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -67,16 +67,18 @@ static UINT32 Testcase(VOID)
HWI_PRIOR_T hwiPrio = 1;
#endif
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
UINT32 intSave;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
hwiPrio = 2; // set new hwi priority is 2
ret = LOS_HwiCreate(HWI_NUM_TEST2, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST2, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
#ifdef __RISC_V__
@ -84,7 +86,7 @@ static UINT32 Testcase(VOID)
#else
hwiPrio = 3; // set new hwi priority is 3
#endif
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT2);
intSave = LOS_IntLock();

View File

@ -63,18 +63,20 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
UINT32 intSave;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT2);
intSave = LOS_IntLock();

View File

@ -64,7 +64,9 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
TSK_INIT_PARAM_S task;
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
@ -75,7 +77,7 @@ static UINT32 Testcase(VOID)
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_TaskCreate(&g_testTaskID01, &task);

View File

@ -98,7 +98,10 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
TSK_INIT_PARAM_S task;
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
@ -132,7 +135,7 @@ static UINT32 Testcase(VOID)
ret = LOS_TaskCreate(&g_testTaskID03, &task);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT2);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT3);
LOS_TaskUnlock();

View File

@ -44,14 +44,16 @@ static VOID TaskF01(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ICUNIT_GOTO_EQUAL(g_testCount, 1, g_testCount, EXIT);
g_testCount++;
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
EXIT:
@ -86,11 +88,13 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -69,7 +69,10 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
TSK_INIT_PARAM_S task;
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
@ -80,7 +83,7 @@ static UINT32 Testcase(VOID)
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_TaskCreate(&g_testTaskID01, &task);

View File

@ -78,7 +78,10 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
TSK_INIT_PARAM_S task;
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
@ -89,7 +92,7 @@ static UINT32 Testcase(VOID)
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_TaskCreate(&g_testTaskID01, &task);

View File

@ -28,7 +28,7 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "osTest.h"
#include "it_los_hwi.h"
@ -96,7 +96,10 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
TSK_INIT_PARAM_S task;
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
@ -107,7 +110,7 @@ static UINT32 Testcase(VOID)
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_TaskCreate(&g_testTaskID01, &task);

View File

@ -88,7 +88,10 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
TSK_INIT_PARAM_S task;
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
@ -99,7 +102,7 @@ static UINT32 Testcase(VOID)
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_TaskCreate(&g_testTaskID01, &task);

View File

@ -55,12 +55,14 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_EventInit(&g_exampleEvent);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -71,11 +71,13 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -82,7 +82,10 @@ static UINT32 Testcase(VOID)
UINT32 semCount = 1;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
TSK_INIT_PARAM_S task;
task.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
@ -99,7 +102,7 @@ static UINT32 Testcase(VOID)
ret = LOS_SemPend(g_usSemID, LOS_NO_WAIT);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
ret = LOS_TaskCreate(&g_testTaskID01, &task);

View File

@ -29,7 +29,7 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "osTest.h"
#include "osTest.h"
#include "it_los_hwi.h"
@ -59,12 +59,14 @@ static UINT32 Testcase(VOID)
UINT32 semCount = 1;
HWI_PRIOR_T hwiPrio = 7;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_SemCreate(semCount, &g_usSemID);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
TestHwiTrigger(HWI_NUM_TEST);
@ -86,5 +88,5 @@ Testcase brief in English
VOID ItLosHwi025(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("ItLosHwi025", Testcase, TEST_LOS, TEST_HWI, TEST_LEVEL2, TEST_FUNCTION);
}
}

View File

@ -45,9 +45,11 @@ static VOID SwtmrF01(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -45,14 +45,16 @@ static UINT32 Testcase(VOID)
UINT32 loop;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
for (loop = 0; loop < HWI_LOOP_NUM; loop++) {
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
for (index = 0; index < HWI_LOOP_NUM; index++) {
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, OS_ERRNO_HWI_ALREADY_CREATED, ret, EXIT);
}
TestHwiDelete(HWI_NUM_TEST);

View File

@ -58,20 +58,23 @@ static UINT32 Testcase(VOID)
UINT32 loop;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
UINT32 intSave1;
UINT32 intSave2;
UINT32 intSave3;
for (loop = 0; loop < HWI_LOOP_NUM; loop++) {
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT2);
intSave1 = LOS_IntLock();

View File

@ -74,17 +74,19 @@ static UINT32 Testcase(VOID)
UINT32 loop;
HWI_PRIOR_T hwiPrio = 2;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
for (loop = 0; loop < HWI_LOOP_NUM; loop++) {
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST3, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST1, hwiPrio, mode, (HWI_PROC_FUNC)HwiF03, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT2);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -48,12 +48,14 @@ static UINT32 Testcase(VOID)
UINT32 loop;
HWI_PRIOR_T hwiPrio = 2;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
UINT32 intSave;
for (loop = 0; loop < HWI_LOOP_NUM; loop++) {
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
intSave = LOS_IntLock();

View File

@ -48,12 +48,14 @@ static UINT32 Testcase(VOID)
UINT32 loop;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount = 0;
for (loop = 0; loop < HWI_LOOP_NUM; loop++) {
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -28,7 +28,7 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "osTest.h"
#if (LOS_KERNEL_MULTI_HWI_TEST == 1)
@ -63,13 +63,15 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount = 0;
/* Creates 3 interrupts in a row with interrupt number */
for (g_uwIndex = 0; g_uwIndex < 3; g_uwIndex++) {
ret = LOS_HwiCreate(HWI_NUM_INT0 + g_uwIndex, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_INT0 + g_uwIndex, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_INT0 + g_uwIndex);
}
@ -78,7 +80,7 @@ static UINT32 Testcase(VOID)
for (g_uwIndex = 4; g_uwIndex < TEST_MAX_NUMBER_HWI; g_uwIndex++) {
/* if interrupt number is not HWI_NUM_INT0 + 5 */
if (g_uwIndex != 5) {
ret = LOS_HwiCreate(HWI_NUM_INT0 + g_uwIndex, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_INT0 + g_uwIndex, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_INT0 + g_uwIndex);
}

View File

@ -51,13 +51,15 @@ static UINT32 Testcase(VOID)
UINT32 loop;
HWI_PRIOR_T hwiPrio = OS_HWI_PRIO_LOWEST;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
for (loop = 0; loop < HWI_LOOP_NUM; loop++) {
for (index = 0; index < OS_HWI_MAX_USED_NUM; index++) {
/* if not Interrupt number HWI_NUM_TEST1 + 3\4\32\35\36. */
if ((index != 3) && (index != 4) && (index != 32) && (index != 35) && (index != 36)) {
ret = LOS_HwiCreate(HWI_NUM_TEST1 + index, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST1 + index, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
}

View File

@ -47,11 +47,13 @@ static UINT32 Testcase(VOID)
UINT32 loop;
HWI_PRIOR_T hwiPrio = 2;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
for (loop = 0; loop < HWI_LOOP_NUM; loop++) {
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -45,10 +45,12 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 2;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
LOS_HwiDisable(HWI_NUM_TEST);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -86,7 +86,10 @@ static UINT32 Testcase(VOID)
UINT32 irqNum = 0;
HWI_PRIOR_T hwiPrio = 2; // 2, Set hwi priority.
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
HwiControllerOps *ops = NULL;
HwiControllerOps *opsBac = (HwiControllerOps *)malloc(sizeof(HwiControllerOps));
if (opsBac == NULL) {
@ -97,19 +100,19 @@ static UINT32 Testcase(VOID)
(VOID)memset_s(opsBac, sizeof(HwiControllerOps), 0, sizeof(HwiControllerOps));
g_testCount = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiTrigger(LOSCFG_PLATFORM_HWI_LIMIT + 1);
ICUNIT_ASSERT_EQUAL(ret, OS_ERRNO_HWI_NUM_INVALID, ret);
ret = LOS_HwiEnable(LOSCFG_PLATFORM_HWI_LIMIT + 1);
ret = LOS_HwiEnable(OS_HWI_MAX_NUM + 1);
ICUNIT_ASSERT_EQUAL(ret, OS_ERRNO_HWI_NUM_INVALID, ret);
ret = LOS_HwiDisable(LOSCFG_PLATFORM_HWI_LIMIT + 1);
ret = LOS_HwiDisable(OS_HWI_MAX_NUM + 1);
ICUNIT_ASSERT_EQUAL(ret, OS_ERRNO_HWI_NUM_INVALID, ret);
ret = LOS_HwiClear(LOSCFG_PLATFORM_HWI_LIMIT + 1);
ret = LOS_HwiClear(OS_HWI_MAX_NUM + 1);
ICUNIT_ASSERT_EQUAL(ret, OS_ERRNO_HWI_NUM_INVALID, ret);
hwiPrio = 3; // 3, Set hwi priority.
ret = LOS_HwiSetPriority(LOSCFG_PLATFORM_HWI_LIMIT + 1, hwiPrio);
ret = LOS_HwiSetPriority(OS_HWI_MAX_NUM + 1, hwiPrio);
ICUNIT_ASSERT_NOT_EQUAL(ret, LOS_OK, ret);
ops = LOS_HwiOpsGet();

View File

@ -29,14 +29,14 @@
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "osTest.h"
#include "osTest.h"
#include "it_los_hwi.h"
static VOID TaskF01(VOID)
{
}
VOID ItHwiM3B001F001()
{
return;
@ -49,7 +49,10 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 2;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
TSK_INIT_PARAM_S task1 = {0};
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
@ -61,8 +64,8 @@ static UINT32 Testcase(VOID)
ret = LOS_TaskCreate(&g_testTaskIdHwi, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiCreate(HWI_NUM_INT0, hwiPrio, mode, (HWI_PROC_FUNC)ItHwiM3B001F001, arg);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_HwiCreate(HWI_NUM_INT0, hwiPrio, mode, (HWI_PROC_FUNC)ItHwiM3B001F001, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
@ -80,5 +83,5 @@ Testcase brief in English
VOID LltLosHwi035(VOID) // IT_Layer_ModuleORFeature_No
{
TEST_ADD_CASE("LltLosHwi035", Testcase, TEST_LOS, TEST_HWI, TEST_LEVEL3, TEST_PRESSURE);
}
}

View File

@ -44,8 +44,13 @@ static UINT32 Testcase(VOID)
ret = LOS_QueueCreate("Q1", 1, &g_testQueueID01, 0, 0xFFFE);
ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_QUEUE_SIZE_TOO_BIG, ret, EXIT);
#ifdef __CSKY_V2__
// CB2201 Board is low memory device, set max message size 0x4000.
ret = LOS_QueueCreate("Q1", 1, &g_testQueueID01, 0, 0x4000);
#else
// 0x8000, is the middle number.
ret = LOS_QueueCreate("Q1", 1, &g_testQueueID01, 0, 0x8000);
#endif
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ret = LOS_QueueWrite(g_testQueueID01 + 1, &buff1, QUEUE_BASE_MSGSIZE, 0);

View File

@ -63,18 +63,20 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T hwiMode;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount1 = 0;
// 1, Timeout interval of a periodic software timer.
ret = LOS_SwtmrCreate(1, LOS_SWTMR_MODE_ONCE, (SWTMR_PROC_FUNC)Case2, &g_swtmrId1, arg
ret = LOS_SwtmrCreate(1, LOS_SWTMR_MODE_ONCE, (SWTMR_PROC_FUNC)Case2, &g_swtmrId1, &irqParam
#if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1)
, OS_SWTMR_ROUSES_ALLOW, OS_SWTMR_ALIGN_INSENSITIVE
#endif
);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
hwiMode = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, hwiMode, (HWI_PROC_FUNC)Case1, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, hwiMode, (HWI_PROC_FUNC)Case1, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
TestHwiTrigger(HWI_NUM_TEST);
LOS_TaskDelay(5); // 5, set delay time.

View File

@ -62,11 +62,13 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T hwiMode;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount1 = 0;
// 1, Timeout interval of a periodic software timer.
ret = LOS_SwtmrCreate(1, LOS_SWTMR_MODE_PERIOD, (SWTMR_PROC_FUNC)Case2, &g_swtmrId1, arg
ret = LOS_SwtmrCreate(1, LOS_SWTMR_MODE_PERIOD, (SWTMR_PROC_FUNC)Case2, &g_swtmrId1, &irqParam
#if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1)
, OS_SWTMR_ROUSES_ALLOW, OS_SWTMR_ALIGN_INSENSITIVE
#endif
@ -74,7 +76,7 @@ static UINT32 Testcase(VOID)
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
hwiMode = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, hwiMode, (HWI_PROC_FUNC)Case1, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, hwiMode, (HWI_PROC_FUNC)Case1, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -74,25 +74,28 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T hwiMode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount1 = 0;
TestHwiClear(HWI_NUM_TEST);
// 10, Timeout interval of a periodic software timer.
ret = LOS_SwtmrCreate(10, LOS_SWTMR_MODE_ONCE, (SWTMR_PROC_FUNC)Case3, &g_swtmrId1, arg
ret = LOS_SwtmrCreate(10, LOS_SWTMR_MODE_ONCE, (SWTMR_PROC_FUNC)Case3, &g_swtmrId1, &irqParam
#if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1)
, OS_SWTMR_ROUSES_ALLOW, OS_SWTMR_ALIGN_INSENSITIVE
#endif
);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
// 20, Timeout interval of a periodic software timer.
ret = LOS_SwtmrCreate(20, LOS_SWTMR_MODE_PERIOD, (SWTMR_PROC_FUNC)Case2, &g_swtmrId2, arg
ret = LOS_SwtmrCreate(20, LOS_SWTMR_MODE_PERIOD, (SWTMR_PROC_FUNC)Case2, &g_swtmrId2, &irqParam
#if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1)
, OS_SWTMR_ROUSES_ALLOW, OS_SWTMR_ALIGN_INSENSITIVE
#endif
);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, hwiMode, (HWI_PROC_FUNC)Case1, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, hwiMode, (HWI_PROC_FUNC)Case1, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
ret = LOS_SwtmrStart(g_swtmrId2);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);

View File

@ -60,7 +60,9 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T hwiMode;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount = 0;
@ -73,7 +75,7 @@ static UINT32 Testcase(VOID)
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
hwiMode = 0;
ret = TEST_HwiCreate(HWI_NUM_TEST, hwiPrio, hwiMode, (HWI_PROC_FUNC)HwiF01, arg);
ret = TEST_HwiCreate(HWI_NUM_TEST, hwiPrio, hwiMode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
ret = LOS_SwtmrStart(g_swtmrId1);

View File

@ -58,7 +58,9 @@ static UINT32 Testcase(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 1;
HWI_MODE_T hwiMode;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
g_testCount = 0;
ret = LOS_SwtmrCreate(TIMER_LOS_EXPIRATION1, LOS_SWTMR_MODE_PERIOD, (SWTMR_PROC_FUNC)SwtmrF01, &g_swtmrId1,
@ -70,7 +72,7 @@ static UINT32 Testcase(VOID)
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
hwiMode = 0;
ret = TEST_HwiCreate(HWI_NUM_TEST, hwiPrio, hwiMode, (HWI_PROC_FUNC)HwiF01, arg);
ret = TEST_HwiCreate(HWI_NUM_TEST, hwiPrio, hwiMode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT1);
ret = LOS_SwtmrStart(g_swtmrId1);

View File

@ -32,6 +32,8 @@
#include "osTest.h"
#include "It_los_swtmr.h"
#define SWTMR_PERIOD 4 // 4, Timeout interval of a periodic software timer ticks.
static UINT32 g_testCount1 = 0;
static VOID Case1(UINT32 arg)
{
@ -41,15 +43,15 @@ static VOID Case1(UINT32 arg)
static UINT32 Testcase(VOID)
{
UINT32 ret;
UINT32 ret = LOS_NOK;
g_testCount1 = 0;
UINT64 tickRecord;
UINT64 tickUpdate;
UINT64 delayTicks;
const UINT64 delayMs = 10; // delay 10 MS
const UINT64 delayMs = 80; // delay 80 ms.
delayTicks = delayMs * LOSCFG_BASE_CORE_TICK_PER_SECOND / OS_SYS_MS_PER_SECOND;
// 4, Timeout interval of a periodic software timer.
ret = LOS_SwtmrCreate(4, LOS_SWTMR_MODE_PERIOD, Case1, &g_swtmrId1, 0xffff
ret = LOS_SwtmrCreate(SWTMR_PERIOD, LOS_SWTMR_MODE_PERIOD, Case1, &g_swtmrId1, 0xffff
#if (LOSCFG_BASE_CORE_SWTMR_ALIGN == 1)
, OS_SWTMR_ROUSES_ALLOW, OS_SWTMR_ALIGN_INSENSITIVE
#endif
@ -63,18 +65,21 @@ static UINT32 Testcase(VOID)
LOS_MDelay(delayMs);
tickUpdate = LOS_TickCountGet();
// 0, Here, assert that g_testCount is equal to this.
ICUNIT_ASSERT_EQUAL(g_testCount1, 0, g_testCount);
if ((g_testCount1 >= delayTicks / SWTMR_PERIOD - 1)
|| (g_testCount1 <= delayTicks / SWTMR_PERIOD + 1)) {
ret = LOS_OK;
}
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
delayTicks = delayMs * LOSCFG_BASE_CORE_TICK_PER_SECOND / OS_SYS_MS_PER_SECOND;
ICUNIT_ASSERT_WITHIN_EQUAL(delayTicks, tickUpdate - tickRecord - 1, tickUpdate - tickRecord + 1, delayTicks);
// 10, set task delay time.
LOS_TaskDelay(10);
// 2, Here, assert that g_testCount is equal to this.
ICUNIT_ASSERT_EQUAL(g_testCount1, 2, g_testCount);
// delayTicks / SWTMR_PERIOD + 2, Here, g_testCount1 is equal to this.
ICUNIT_GOTO_EQUAL(g_testCount1, delayTicks / SWTMR_PERIOD + 2, g_testCount1, EXIT);
EXIT:
LOS_SwtmrDelete(g_swtmrId1);
return LOS_OK;

View File

@ -68,7 +68,9 @@ static VOID TaskF01(VOID)
HWI_PRIOR_T hwiPrio = 3; // Set reasonable priority for interrupt.
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_TaskCreate(&g_testTaskID02, &task1);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
@ -76,7 +78,7 @@ static VOID TaskF01(VOID)
ICUNIT_GOTO_EQUAL(g_testCount, 0, g_testCount, EXIT);
g_testCount++;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -48,9 +48,11 @@ static VOID TaskF01(VOID)
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -63,7 +63,9 @@ static VOID TaskF01(VOID)
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HWI_ARG_T arg = 0;
HwiIrqParam irqParam;
(void)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_TaskCreate(&g_testTaskID02, &task1);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
@ -71,7 +73,7 @@ static VOID TaskF01(VOID)
ICUNIT_GOTO_EQUAL(g_testCount, 0, g_testCount, EXIT);
g_testCount++;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, arg);
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);

View File

@ -317,7 +317,7 @@ VOID TestHwiUnTrigger(UINT32 hwiNum)
UINT32 TestHwiDelete(UINT32 hwiNum)
{
UINT32 ret = LOS_HwiDelete(hwiNum);
UINT32 ret = LOS_HwiDelete(hwiNum, NULL);
if (ret != LOS_OK) {
return LOS_NOK;
}