Compare commits

...

33 Commits

Author SHA1 Message Date
openharmony_ci 3d8536b450
!1122 liteos_m cpup 中断索引值越界修复
Merge pull request !1122 from hw_llm/master
2024-09-02 12:36:22 +00:00
hw_llm 413b08295d Description: liteos_m cpup 中断索引值越界修复
IssueNo: https://gitee.com/openharmony/kernel_liteos_m/issues/I9RHZ7
Feature Or Bugfix: Bugfix
Binary Source: No
Signed-off-by: hw_llm <liu.limin@huawei.com>
2024-08-29 15:28:16 +08:00
openharmony_ci 10e00b3047
!1120 【修复】OAT告警
Merge pull request !1120 from 石子怡/master
2024-06-05 08:04:36 +00:00
石子怡 88fd668b8f
修复OAT告警
Signed-off-by: 石子怡 <z15319797139@163.com>
2024-06-05 06:47:40 +00:00
openharmony_ci ddaad05097
!1116 clear systick pending status
Merge pull request !1116 from hw_llm/master
2024-05-29 05:00:53 +00:00
openharmony_ci c739d4a164
!1114 【修复】OAT告警
Merge pull request !1114 from 石子怡/master
2024-05-27 11:39:31 +00:00
hw_llm 92fbcaf074 Description: clear systick pending status
IssueNo: https://gitee.com/openharmony/kernel_liteos_m/issues/I93ZUQ
Feature Or Bugfix: Feature
Binary Source: No
Signed-off-by: hw_llm <liu.limin@huawei.com>
2024-05-25 11:03:53 +08:00
石子怡 441d552355
修复OAT告警
Signed-off-by: 石子怡 <z15319797139@163.com>
2024-05-25 02:21:53 +00:00
石子怡 e151e8369b
修复OAT告警
Signed-off-by: 石子怡 <z15319797139@163.com>
2024-05-25 01:17:11 +00:00
openharmony_ci e539a6c951
!1102 fix:设置LOSCFG_PLATFORM_HWI_WITH_ARG为1后,编译失败问题修复
Merge pull request !1102 from zhangkt/master
2024-03-26 06:58:35 +00:00
openharmony_ci e19155f49f
!1108 删除bundle.json中的syscap信息,确保与架构信息平台设计信息一致
Merge pull request !1108 from hw_llm/master
2024-02-05 07:22:45 +00:00
hw_llm 76562c376c Description: 删除bundle.json中syscap信息
IssueNo: https://gitee.com/openharmony/kernel_liteos_a/issues/I90PKD
Feature Or Bugfix: Feature
Binary Source: No
Signed-off-by: hw_llm <liu.limin@huawei.com>
2024-02-02 15:40:05 +08:00
openharmony_ci 954c855528
!1107 cortex-m7支持iccarm 编译
Merge pull request !1107 from hw_llm/master
2024-01-27 08:20:41 +00:00
hw_llm 80f3e0f6b2 Description: cortex-m7支持iccarm 编译
IssueNo: https://gitee.com/openharmony/kernel_liteos_m/issues/I8ZCYS
Feature Or Bugfix: Feature
Binary Source: No
Signed-off-by: hw_llm <liu.limin@huawei.com>
2024-01-27 15:38:28 +08:00
zhangkt 36c0634ff5 fix:设置LOSCFG_PLATFORM_HWI_WITH_ARG为1后,编译失败问题修复
Signed-off-by: zhangkt <zhangkt1995@gmail.com>
2023-11-23 11:15:09 +08:00
openharmony_ci e22e8525e9
!1094 增加内核queue可以在中断中进行读写操作的接口
Merge pull request !1094 from libnew/master
2023-09-12 11:36:36 +00:00
zengwenlong 1b778c4267 feat: 增加内核queue在中断中进行读写操作的接口
方案描述:
1,基于 OsQueueOperate增加支持queue在中断中进行读写操作的接口。
BREAKING CHANGE:
增加支持queue在中断中进行读写操作的接口,需要适配接口描述:
适配API:

新增API:
UINT32 LOS_QueueReadCopyIsr(UINT32 queueID,   VOID *bufferAddr, UINT32 *bufferSize);
UINT32 LOS_QueueWriteCopyIsr(UINT32 queueID, VOID *bufferAddr, UINT32 bufferSize);
UINT32 LOS_QueueReadIsr(UINT32 queueID,VOID *bufferAddr,  UINT32 bufferSize);
UINT32 LOS_QueueWriteIsr(UINT32 queueID, VOID *bufferAddr,  UINT32 bufferSize);
UINT32 LOS_QueueWriteHeadIsr(UINT32 queueID, VOID *bufferAddr,UINT32 bufferSize);
UINT32 LOS_QueueWriteHeadCopyIsr(UINT32 queueID,  VOID *bufferAddr,UINT32 bufferSize);

Signed-off-by: zengwenlong <zengwenlong@openvalley.net>
2023-09-11 20:47:44 -07:00
openharmony_ci c70295cc30
!1096 xts用例
Merge pull request !1096 from 乔克叔叔/wxliu
2023-08-31 09:10:48 +00:00
liuwenxin c19dc1bc94 fix:xts用例
Signed-off-by: liuwenxin <liuwenxin11@huawei.com>
Change-Id: I2d3f856eb94e5ced0bc5a9c0211f10f453a4ad03
2023-08-31 16:49:50 +08:00
openharmony_ci d2bf535696
!1091 支持可配置是否生成asm文件
Merge pull request !1091 from wangchen/0817_m
2023-08-18 01:52:50 +00:00
wangchen bda25829af Fix: 支持可配置是否生成asm文件
Close #I7U2V4
Signed-off-by: wangchen <wangchen240@huawei.com>
2023-08-17 21:41:43 +08:00
openharmony_ci a1e215f16a
!1090 liteos_m内核xts用例补齐cmsis中task剩余
Merge pull request !1090 from zwx1232718/master
2023-08-17 02:14:08 +00:00
zwx1232718 5e36b8b599 test:xts用例,task补充
Signed-off-by: zwx1232718 <zhenghui23@huawei.com>
2023-08-17 09:06:40 +08:00
openharmony_ci 954aa6fb70
!1087 liteos_m内核xts用例补齐cmsis剩余task部分
Merge pull request !1087 from zwx1232718/master
2023-08-16 01:18:57 +00:00
zwx1232718 64a73724b3 test:xts用例补齐,cmsis中task部分
Signed-off-by: zwx1232718 <zhenghui23@huawei.com>
2023-08-15 10:40:53 +08:00
openharmony_ci 2a49ac7323
!1084 readme翻译问题修改
Merge pull request !1084 from wangchen/0804_m
2023-08-14 13:38:45 +00:00
openharmony_ci cde26d8d68
!1080 Kconfig清理冗余代码
Merge pull request !1080 from 乔克叔叔/master
2023-08-11 02:49:30 +00:00
openharmony_ci 4140bd673e
!1081 liteos_m内核xts用例补齐部分cmsis
Merge pull request !1081 from zwx1232718/master
2023-08-09 06:58:11 +00:00
openharmony_ci 2b81e524a1
!1085 Fix : 内核告警清理
Merge pull request !1085 from yinjiaming/fix
2023-08-09 02:14:05 +00:00
zwx1232718 1dae9259ef test:xts用例补齐,部分cmsis
Signed-off-by: zwx1232718 <zhenghui23@huawei.com>
2023-08-09 09:58:58 +08:00
yinjiaming 3ce50a610c fix:内核代码告警清理
内核代码经工具检测有告警,现予清理

Signed-off-by: yinjiaming <yinjiaming@huawei.com>
Change-Id: I3bf6c421296dfccd9c78cc6af47dcb1879da5cea
2023-08-08 16:22:32 +08:00
wangchen cf980647d6 Fix: readme翻译问题修改
Close #I7QAKU
Signed-off-by: wangchen <wangchen240@huawei.com>
2023-08-04 10:28:10 +08:00
liuwenxin f42c36ac8e fix:kconfig清理冗余代码
Signed-off-by: liuwenxin <liuwenxin11@huawei.com>
Change-Id: I45b8185b87b9c6cb03a470c9969239fdda5f6b4d
2023-07-29 15:57:26 +08:00
71 changed files with 6799 additions and 275 deletions

View File

@ -44,6 +44,10 @@ if (defined(LOSCFG_COMPILER_ICCARM)) {
} }
} }
declare_args() {
liteos_build_asm = true
}
config("arch_config") { config("arch_config") {
cflags = arch_config_cflags cflags = arch_config_cflags
asmflags = arch_config_asmflags asmflags = arch_config_asmflags
@ -215,4 +219,7 @@ build_ext_component("build_kernel_image") {
exec_path = rebase_path(root_out_dir) exec_path = rebase_path(root_out_dir)
command = toochain_config_command command = toochain_config_command
if (liteos_build_asm) {
command += toochain_asm_command
}
} }

170
Kconfig
View File

@ -39,19 +39,9 @@ choice
config COMPILER_GCC config COMPILER_GCC
bool "GCC" bool "GCC"
config CROSS_COMPILE
string "GCC cross-compile toolchain prefix"
depends on COMPILER_GCC
default "arm-none-eabi-" if ARCH_ARM_AARCH32
config COMPILER_CLANG_LLVM config COMPILER_CLANG_LLVM
bool "Clang" bool "Clang"
config LLVM_TARGET
string "Clang LLVM target"
depends on COMPILER_CLANG_LLVM
default "arm-liteos-ohos" if ARCH_ARM_AARCH32
config COMPILER_ICCARM config COMPILER_ICCARM
bool "ICCARM" bool "ICCARM"
@ -96,15 +86,6 @@ config PLATFORM
string string
default "virt" if PLATFORM_QEMU_ARM_VIRT_CM7 || PLATFORM_QEMU_ARM_VIRT_CM4 || PLATFORM_QEMU_ARM_VIRT_CM55 || PRODUCT_QEMU_RISCV32_VIRT || PLATFORM_QEMU_CSKY_SMARTL || PLATFORM_QEMU_XTENSA_ESP32 default "virt" if PLATFORM_QEMU_ARM_VIRT_CM7 || PLATFORM_QEMU_ARM_VIRT_CM4 || PLATFORM_QEMU_ARM_VIRT_CM55 || PRODUCT_QEMU_RISCV32_VIRT || PLATFORM_QEMU_CSKY_SMARTL || PLATFORM_QEMU_XTENSA_ESP32
config PRODUCT_NAME
string
default "arm_virt" if PRODUCT_QEMU_ARM
default "arm_mps2_an386" if PRODUCT_QEMU_ARM_MPS2_AN386
default "arm_mps3_an547" if PRODUCT_QEMU_ARM_MPS3_AN547
default "riscv32_virt" if PRODUCT_QEMU_RISCV32_VIRT
default "csky_smartl_e802" if PRODUCT_QEMU_CSKY_SMARTL_E802
default "xtensa_esp32" if PRODUCT_QEMU_XTENSA_ESP32
config DEVICE_COMPANY config DEVICE_COMPANY
string string
default "qemu" if PLATFORM_QEMU_ARM_VIRT_CM7 || PLATFORM_QEMU_ARM_VIRT_CM4 || PLATFORM_QEMU_ARM_VIRT_CM55 || PRODUCT_QEMU_RISCV32_VIRT || PLATFORM_QEMU_CSKY_SMARTL || PLATFORM_QEMU_XTENSA_ESP32 default "qemu" if PLATFORM_QEMU_ARM_VIRT_CM7 || PLATFORM_QEMU_ARM_VIRT_CM4 || PLATFORM_QEMU_ARM_VIRT_CM55 || PRODUCT_QEMU_RISCV32_VIRT || PLATFORM_QEMU_CSKY_SMARTL || PLATFORM_QEMU_XTENSA_ESP32
@ -163,24 +144,9 @@ choice
help help
Select your target board. Select your target board.
config PRODUCT_QEMU_ARM
bool "arm_virt" if PLATFORM_QEMU_ARM_VIRT_CM7
config PRODUCT_QEMU_ARM_MPS2_AN386
bool "arm_mps2_an386" if PLATFORM_QEMU_ARM_VIRT_CM4
config PRODUCT_QEMU_ARM_MPS3_AN547
bool "arm_mps3_an547" if PLATFORM_QEMU_ARM_VIRT_CM55
config PRODUCT_QEMU_RISCV32_VIRT config PRODUCT_QEMU_RISCV32_VIRT
bool "riscv32_virt" if PLATFORM_QEMU_RISCV32_VIRT bool "riscv32_virt" if PLATFORM_QEMU_RISCV32_VIRT
config PRODUCT_QEMU_CSKY_SMARTL_E802
bool "csky_smartl_e802" if PLATFORM_QEMU_CSKY_SMARTL
config PRODUCT_QEMU_XTENSA_ESP32
bool "xtensa_esp32" if PLATFORM_QEMU_XTENSA_ESP32
endchoice endchoice
@ -219,12 +185,6 @@ endchoice
orsource "../../device/soc/*/Kconfig.liteos_m.soc" orsource "../../device/soc/*/Kconfig.liteos_m.soc"
config QUICK_START
bool "Enable QUICK_START"
default n
depends on DRIVERS && FS_VFS
help
Answer Y to enable LiteOS support quick start.
endmenu endmenu
######################### config options of kernel ##################### ######################### config options of kernel #####################
@ -343,21 +303,6 @@ config KERNEL_PM_IDLE
Configuration item for low power frame tailoring. Configuration item for low power frame tailoring.
If you wish to build LiteOS with support for power management idle. If you wish to build LiteOS with support for power management idle.
config KERNEL_PM_TASK_PTIORITY
int "Power Management Task Priority"
default 1
range 1 31
depends on KERNEL_PM
help
Configuration item for priority of low-power task.
config KERNEL_PM_TASK_STACKSIZE
int "Power Management Task Stack Size"
default 1024
depends on KERNEL_PM
help
Configuration item for stack size of low-power task.
config KERNEL_PM_DEBUG config KERNEL_PM_DEBUG
bool "Power Management Debug" bool "Power Management Debug"
default n default n
@ -393,17 +338,6 @@ source "components/lms/Kconfig"
endmenu endmenu
######################### config options of lib ########################
menu "Lib"
config LIB_LIBC
bool "Enable Libc"
default y
help
Answer Y to enable libc for full code.
endmenu
######################### config options of compatibility ############## ######################### config options of compatibility ##############
menu "Compat" menu "Compat"
@ -436,43 +370,6 @@ endmenu
######################## config options of debug ######################## ######################## config options of debug ########################
menu "Debug" menu "Debug"
config GDB
bool "Enable gdb functions"
default n
help
Answer Y to enable gdb functions.
config PLATFORM_ADAPT
bool "Enable Os_adapt"
default y
help
Answer Y to add os_adapt.c to LiteOS.
config ENABLE_OOM_LOOP_TASK
bool "Enable Oom loop task"
default n
depends on KERNEL_VM
help
Answer Y to enable oom loop kthread to check system out of memory.
config DO_ALIGN
bool "Enable do align for hi3518e"
default y
depends on PLATFORM_HI3518EV200
help
Answer Y to enable do align for hi3518e.
config ENABLE_MAGICKEY
bool "Enable MAGIC KEY"
default y
help
Answer Y to enable LiteOS Magic key.
ctrl + r : Magic key check switch;
ctrl + z : Show all magic op key;
ctrl + t : Show task information;
ctrl + p : System panic;
ctrl + e : Check system memory pool.
config THUMB config THUMB
bool "Enable Thumb" bool "Enable Thumb"
@ -481,20 +378,6 @@ config THUMB
help help
Answer Y to build thumb version. This will make LiteOS smaller. Answer Y to build thumb version. This will make LiteOS smaller.
config PLATFORM_DVFS
bool "Enable Dvfs"
default n
depends on COMPAT_LINUXKPI
help
Answer Y to enable LiteOS support dynamic voltage and frequency scaling feature for
low power consumption.
config SAVE_EXCINFO
bool "Enable Saving Exception Information"
default n
help
Answer Y to enable LiteOS support saving exception information to storage medium.
config DEBUG_VERSION config DEBUG_VERSION
bool "Enable a Debug Version" bool "Enable a Debug Version"
default y default y
@ -514,13 +397,6 @@ config DEBUG_KERNEL
It also means you want to get queue, mutex, semaphore, memory debug information. It also means you want to get queue, mutex, semaphore, memory debug information.
That means you want a opposite behaviour compared to release version. That means you want a opposite behaviour compared to release version.
config DEBUG_QUEUE
bool "Enable Queue Debugging"
default n
depends on DEBUG_KERNEL
help
Answer Y to enable debug queue.
config MUTEX_CREATE_TRACE config MUTEX_CREATE_TRACE
bool "Enable Mutex Trace Debugging" bool "Enable Mutex Trace Debugging"
default n default n
@ -529,20 +405,6 @@ config MUTEX_CREATE_TRACE
help help
Answer Y to enable debug mutex trace. Answer Y to enable debug mutex trace.
config DEBUG_DEADLOCK
bool "Enable Mutex Deadlock Debugging"
default n
depends on DEBUG_KERNEL
help
Answer Y to enable debug mutex deadlock.
config DEBUG_SEMAPHORE
bool "Enable Semaphore Debugging"
default n
depends on DEBUG_KERNEL
help
Answer Y to enable debug semaphore.
config NET_LWIP_SACK_TFTP config NET_LWIP_SACK_TFTP
bool "Enable Tftp" bool "Enable Tftp"
default y default y
@ -557,18 +419,6 @@ config DEBUG_HOOK
help help
Enable the kernel hook framework to support customized trace information capture. Enable the kernel hook framework to support customized trace information capture.
config SCHED_DEBUG
bool "Enable sched debug Feature"
default n
depends on DEBUG_VERSION
help
If you wish to build LiteOS with support for sched debug.
config USER_INIT_DEBUG
bool "Enable user init Debug"
default n
depends on DEBUG_VERSION
config SHELL_CMD_DEBUG config SHELL_CMD_DEBUG
bool "Enable shell cmd Debug" bool "Enable shell cmd Debug"
default n default n
@ -581,13 +431,6 @@ config DEBUG_TOOLS
help help
Answer Y to enable LiteOS debug tools, include stackdump, hwidump, tasktrack. Answer Y to enable LiteOS debug tools, include stackdump, hwidump, tasktrack.
config USB_DEBUG
bool "Enable USB Debug"
default n
depends on SHELL && DRIVERS_USB && DEBUG_VERSION
help
Answer Y to enable LiteOS support usb debug.
use shell command to open the specified debug level print.
config MEM_DEBUG config MEM_DEBUG
bool "Enable MEM Debug" bool "Enable MEM Debug"
default n default n
@ -611,13 +454,6 @@ config MEM_WATERLINE
default n default n
depends on DEBUG_VERSION && MEM_DEBUG depends on DEBUG_VERSION && MEM_DEBUG
config VM_OVERLAP_CHECK
bool "Enable VM overlap check or not"
default n
depends on DEBUG_VERSION && MEM_DEBUG
help
Answer Y to enable vm overlap check.
config TASK_MEM_USED config TASK_MEM_USED
bool "Enable show task mem used or not" bool "Enable show task mem used or not"
default n default n
@ -643,12 +479,6 @@ config SECURE_HEAP_SIZE
int "TrustZone Heap Size (bytes)" int "TrustZone Heap Size (bytes)"
default 2048 default 2048
depends on SECURE_TRUSTZONE depends on SECURE_TRUSTZONE
config SECURE_STACK_DEFAULT_SIZE
int "TrustZone Stack Size (bytes)"
default 512
depends on SECURE_TRUSTZONE
help
The secure stack must be allocated before the task calls non-secure functions.
config SECURE config SECURE
bool "Enable Security" bool "Enable Security"
default n default n

View File

@ -23,6 +23,7 @@
<policylist> <policylist>
<policy name="projectPolicy" desc=""> <policy name="projectPolicy" desc="">
<policyitem type="copyright" name="Huawei Technologies Co., Ltd. All rights reserved." path=".*" desc="original liteos copyright"/> <policyitem type="copyright" name="Huawei Technologies Co., Ltd. All rights reserved." path=".*" desc="original liteos copyright"/>
<policyitem type="copyright" name="Hunan OpenValley Digital Industry Development Co., Ltd." path=".*" desc="Developed By OpenValley Digital Co., Ltd."/>
<policyitem type="license" name="BSD-3-Clause" path=".*" desc="Liteos kernel use bsd3 license"/> <policyitem type="license" name="BSD-3-Clause" path=".*" desc="Liteos kernel use bsd3 license"/>
<policyitem type="license" name="BSD-3-Clause" path=".*" desc="Liteos kernel use bsd3 license"/> <policyitem type="license" name="BSD-3-Clause" path=".*" desc="Liteos kernel use bsd3 license"/>
</policy> </policy>
@ -66,6 +67,9 @@
<!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/--> <!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/-->
</filefilter> </filefilter>
<filefilter name="binaryFileTypePolicyFilter" desc="Filters for binary file policies"> <filefilter name="binaryFileTypePolicyFilter" desc="Filters for binary file policies">
<filteritem type="filepath"
name="figures/architecture-of-openharmony-the-liteos-cortex-m-kernel.png" desc="architecture-of-openharmony-the-liteos-cortex-m-kernel"/>
<filteritem type="filepath" name="figures/OpenHarmony-LiteOS-M核内核架构图.png" desc="内核驱动架构"/>
<!--filteritem type="filename" name="*.uvwxyz" desc="Describe the reason for filtering scan results"/--> <!--filteritem type="filename" name="*.uvwxyz" desc="Describe the reason for filtering scan results"/-->
<!--filteritem type="filepath" name="abcdefg/.*.uvwxyz" desc="Describe the reason for filtering scan results"/--> <!--filteritem type="filepath" name="abcdefg/.*.uvwxyz" desc="Describe the reason for filtering scan results"/-->
<!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/--> <!--filteritem type="filepath" name="projectroot/[a-zA-Z0-9]{20,}.sh" desc="Temp files"/-->

View File

@ -35,7 +35,7 @@ The directory structure is as follows. For more details, see [arch_spec.md](arch
│ ├── include # APIs exposed externally │ ├── include # APIs exposed externally
│ ├── risc-v # Code of the risc-v architecture │ ├── risc-v # Code of the risc-v architecture
│ │ ├── nuclei # Code of the nuclei system technology risc-v architecture │ │ ├── nuclei # Code of the nuclei system technology risc-v architecture
│ │ └── riscv32 # Code of the risc-v architecture │ │ └── riscv32 # Code of the risc-v official common architecture
│ └── xtensa # Code of the xtensa architecture │ └── xtensa # Code of the xtensa architecture
│ └── lx6 # Code of the lx6 xtensa architecture │ └── lx6 # Code of the lx6 xtensa architecture
├── components # Optional components ├── components # Optional components

View File

@ -24,27 +24,6 @@ config ARCH_FPU_DISABLE
help help
This option will bypass floating procedure in system. This option will bypass floating procedure in system.
config ARCH_SECURE_MONITOR_MODE
bool "Run On Secure Monitor Mode"
default n
depends on ARCH_ARM_AARCH64
help
This option will make the system run on EL3.
config ARCH_INTERRUPT_PREEMPTION
bool "Enable Interrupt Preemption"
default n
depends on ARCH_ARM_AARCH64
help
This option will support high priority interrupt preemption.
config IRQ_USE_STANDALONE_STACK
bool "Use Interrupt Stack"
default y
depends on ARCH_ARM_AARCH64 || ARCH_ARM_AARCH32
help
This option will support using standalone interrupt stack.
config ARCH_UNALIGNED_EXC config ARCH_UNALIGNED_EXC
bool "Enable Unaligned Exception" bool "Enable Unaligned Exception"
default y default y

View File

@ -105,10 +105,6 @@ BOOL OsHwiIsCreated(UINT32 index)
#endif #endif
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1) #if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
typedef struct {
HWI_PROC_FUNC pfnHandler;
VOID *pParm;
} HWI_HANDLER_FUNC;
/* * /* *
* @ingroup los_hwi * @ingroup los_hwi

View File

@ -63,6 +63,11 @@ extern UINT32 g_intCount;
#endif #endif
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1) #if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
typedef struct {
HWI_PROC_FUNC pfnHandler;
VOID *pParm;
} HWI_HANDLER_FUNC;
/* * /* *
* @ingroup los_arch_interrupt * @ingroup los_arch_interrupt
* Set interrupt vector table. * Set interrupt vector table.

View File

@ -86,7 +86,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;

View File

@ -85,7 +85,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -84,7 +84,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -84,7 +84,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -85,7 +85,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -84,7 +84,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -84,7 +84,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -84,7 +84,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -84,7 +84,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -84,7 +84,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -85,7 +85,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -84,7 +84,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -0,0 +1,47 @@
# Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved.
# Copyright (c) 2020-2024 Huawei Device Co., Ltd. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list of
# conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice, this list
# of conditions and the following disclaimer in the documentation and/or other materials
# provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors may be used
# to endorse or promote products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import("//kernel/liteos_m/liteos.gni")
module_name = "arch"
kernel_module(module_name) {
sources = [
"los_context.c",
"los_dispatch.S",
"los_exc.S",
"los_interrupt.c",
"los_mpu.c",
"los_timer.c",
]
configs += [ "$LITEOSTOPDIR:warn_config" ]
}
config("public") {
include_dirs = [ "." ]
}

View File

@ -84,7 +84,7 @@ STATIC UINT64 SysTickReload(UINT64 nextResponseTime)
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */ SysTick->LOAD = (UINT32)(nextResponseTime - 1UL); /* set reload register */
SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */
NVIC_ClearPendingIRQ(SysTick_IRQn); SCB->ICSR |= SCB_ICSR_PENDSTCLR_Msk;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
return nextResponseTime; return nextResponseTime;
} }

View File

@ -155,10 +155,6 @@ UINT32 ArchIntCurIrqNum(VOID)
} }
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1) #if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
typedef struct {
HWI_PROC_FUNC pfnHandler;
VOID *pParm;
} HWI_HANDLER_FUNC;
/* * /* *
* @ingroup los_hwi * @ingroup los_hwi

View File

@ -63,6 +63,11 @@ extern volatile UINT32 g_intCount;
#endif #endif
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1) #if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
typedef struct {
HWI_PROC_FUNC pfnHandler;
VOID *pParm;
} HWI_HANDLER_FUNC;
/* * /* *
* @ingroup los_arch_interrupt * @ingroup los_arch_interrupt
* Set interrupt vector table. * Set interrupt vector table.

View File

@ -110,6 +110,12 @@ typedef struct {
*/ */
#define OS_RISCV_VECTOR_CNT (OS_RISCV_SYS_VECTOR_CNT + OS_RISCV_CUSTOM_IRQ_VECTOR_CNT) #define OS_RISCV_VECTOR_CNT (OS_RISCV_SYS_VECTOR_CNT + OS_RISCV_CUSTOM_IRQ_VECTOR_CNT)
/**
* @ingroup los_arch_interrupt
* Count of risc-v system interrupt vector.
*/
#define OS_SYS_VECTOR_CNT 0
/** /**
* Maximum number of supported hardware devices that generate hardware interrupts. * Maximum number of supported hardware devices that generate hardware interrupts.
* The maximum number of hardware devices that generate hardware interrupts supported by hi3518ev200 is 32. * The maximum number of hardware devices that generate hardware interrupts supported by hi3518ev200 is 32.

View File

@ -137,10 +137,6 @@ UINT32 ArchIntCurIrqNum(VOID)
} }
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1) #if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
typedef struct {
HWI_PROC_FUNC pfnHandler;
VOID *pParm;
} HWI_HANDLER_FUNC;
/* * /* *
* @ingroup los_hwi * @ingroup los_hwi

View File

@ -63,6 +63,11 @@ extern UINT32 g_intCount;
#endif #endif
#if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1) #if (LOSCFG_PLATFORM_HWI_WITH_ARG == 1)
typedef struct {
HWI_PROC_FUNC pfnHandler;
VOID *pParm;
} HWI_HANDLER_FUNC;
/* * /* *
* @ingroup los_arch_interrupt * @ingroup los_arch_interrupt
* Set interrupt vector table. * Set interrupt vector table.

View File

@ -27,9 +27,6 @@
"component": { "component": {
"name": "liteos_m", "name": "liteos_m",
"subsystem": "kernel", "subsystem": "kernel",
"syscap": [
"SystemCapability.Kernel.Liteos-M"
],
"features": [], "features": [],
"adapted_system_type": [ "adapted_system_type": [
"mini" "mini"

View File

@ -616,11 +616,11 @@ LITE_OS_SEC_TEXT_MINOR UINT32 LOS_CpupUsageMonitor(CPUP_TYPE_E type, CPUP_MODE_E
#if (LOSCFG_CPUP_INCLUDE_IRQ == 1) #if (LOSCFG_CPUP_INCLUDE_IRQ == 1)
LITE_OS_SEC_TEXT_MINOR VOID OsCpupIrqStart(UINT32 intNum) LITE_OS_SEC_TEXT_MINOR VOID OsCpupIrqStart(UINT32 intNum)
{ {
if (g_irqCpupInitFlg == 0) { if ((g_irqCpupInitFlg == 0) || (intNum < OS_SYS_VECTOR_CNT)) {
return; return;
} }
UINT32 cpupIntNum = intNum - OS_SYS_VECTOR_CNT;
g_irqCpup[intNum].startTime = CpupTimeUsGet(); g_irqCpup[cpupIntNum].startTime = CpupTimeUsGet();
return; return;
} }
@ -629,33 +629,34 @@ LITE_OS_SEC_TEXT_MINOR VOID OsCpupIrqEnd(UINT32 intNum)
UINT64 cpuTime; UINT64 cpuTime;
UINT64 usedTime; UINT64 usedTime;
if (g_irqCpupInitFlg == 0) { if ((g_irqCpupInitFlg == 0) || (intNum < OS_SYS_VECTOR_CNT)) {
return; return;
} }
if (g_irqCpup[intNum].startTime == 0) { UINT32 cpupIntNum = intNum - OS_SYS_VECTOR_CNT;
if (g_irqCpup[cpupIntNum].startTime == 0) {
return; return;
} }
cpuTime = CpupTimeUsGet(); cpuTime = CpupTimeUsGet();
if (cpuTime < g_irqCpup[intNum].startTime) { if (cpuTime < g_irqCpup[cpupIntNum].startTime) {
cpuTime += OS_US_PER_TICK; cpuTime += OS_US_PER_TICK;
} }
g_irqCpup[intNum].cpupID = intNum; g_irqCpup[cpupIntNum].cpupID = intNum;
g_irqCpup[intNum].status = OS_CPUP_USED; g_irqCpup[cpupIntNum].status = OS_CPUP_USED;
usedTime = cpuTime - g_irqCpup[intNum].startTime; usedTime = cpuTime - g_irqCpup[cpupIntNum].startTime;
if (g_irqCpup[intNum].count <= 1000) { /* 1000, Take 1000 samples */ if (g_irqCpup[cpupIntNum].count <= 1000) { /* 1000, Take 1000 samples */
g_irqCpup[intNum].allTime += usedTime; g_irqCpup[cpupIntNum].allTime += usedTime;
g_irqCpup[intNum].count++; g_irqCpup[cpupIntNum].count++;
} else { } else {
g_irqCpup[intNum].allTime = 0; g_irqCpup[cpupIntNum].allTime = 0;
g_irqCpup[intNum].count = 0; g_irqCpup[cpupIntNum].count = 0;
} }
g_irqCpup[intNum].startTime = 0; g_irqCpup[cpupIntNum].startTime = 0;
if (usedTime > g_irqCpup[intNum].timeMax) { if (usedTime > g_irqCpup[cpupIntNum].timeMax) {
g_irqCpup[intNum].timeMax = usedTime; g_irqCpup[cpupIntNum].timeMax = usedTime;
} }
return; return;
} }

View File

@ -31,11 +31,4 @@ config LMS_CHECK_STRICT
default n default n
depends on KERNEL_LMS depends on KERNEL_LMS
help help
Select y to enable byte-by-byte check in lms Select y to enable byte-by-byte check in Lms
config LMS_LIBC_FULL_CHECK
bool "Enable libc all function do lms check"
default n
depends on KERNEL_LMS
help
Select y to enable libc full check

View File

@ -162,7 +162,8 @@ UINT32 LOS_LmsCheckPoolAdd(const VOID *pool, UINT32 size)
lmsPoolNode->shadowStart = (UINTPTR)poolAddr + realSize; lmsPoolNode->shadowStart = (UINTPTR)poolAddr + realSize;
lmsPoolNode->shadowSize = poolAddr + size - lmsPoolNode->shadowStart; lmsPoolNode->shadowSize = poolAddr + size - lmsPoolNode->shadowStart;
/* init shadow value */ /* init shadow value */
(VOID)memset_s((VOID *)lmsPoolNode->shadowStart, lmsPoolNode->shadowSize, LMS_SHADOW_AFTERFREE_U8, lmsPoolNode->shadowSize); (VOID)memset_s((VOID *)lmsPoolNode->shadowStart, lmsPoolNode->shadowSize, LMS_SHADOW_AFTERFREE_U8,
lmsPoolNode->shadowSize);
LOS_ListAdd(&g_lmsCheckPoolList, &(lmsPoolNode->node)); LOS_ListAdd(&g_lmsCheckPoolList, &(lmsPoolNode->node));

View File

@ -147,7 +147,6 @@ STATIC BOOL OsPmTickTimerStop(LosPmCB *pm)
realSleepTime = expireTime - currTime; realSleepTime = expireTime - currTime;
sleepCycle = OS_SYS_CYCLE_TO_NS(realSleepTime, g_sysClock); sleepCycle = OS_SYS_CYCLE_TO_NS(realSleepTime, g_sysClock);
sleepCycle = OS_SYS_NS_TO_CYCLE(sleepCycle, tickTimer->freq); sleepCycle = OS_SYS_NS_TO_CYCLE(sleepCycle, tickTimer->freq);
if (sleepCycle == 0) { if (sleepCycle == 0) {
pm->sysMode = LOS_SYS_NORMAL_SLEEP; pm->sysMode = LOS_SYS_NORMAL_SLEEP;
return FALSE; return FALSE;

View File

@ -24,18 +24,4 @@ config SHELL_STACK_SIZE
default 4096 default 4096
depends on SHELL depends on SHELL
config SHELL_LK
bool "Enable Shell lk"
default y
depends on DEBUG_VERSION && SHELL
help
Answer Y to enable LiteOS support shell lk.
config SHELL_DMESG
bool "Enable Shell dmesg"
default n
depends on DEBUG_VERSION && SHELL && SHELL_CMD_DEBUG
help
Answer Y to enable LiteOS support shell dmesg.
endmenu endmenu

View File

@ -72,7 +72,4 @@ config TRACE_CONTROL_VIA_SHELL
config TRACE_CONTROL_AGENT config TRACE_CONTROL_AGENT
bool "Via Trace Agent Task" bool "Via Trace Agent Task"
config TRACE_NO_CONTROL
bool "No Control"
endchoice endchoice

View File

@ -206,5 +206,6 @@ toochain_config_objdump = "${compile_prefix}objdump$toolchain_cmd_suffix"
toochain_config_command = toochain_config_command =
"$toochain_config_objcopy -O binary $liteos_name $liteos_name.bin" "$toochain_config_objcopy -O binary $liteos_name $liteos_name.bin"
toochain_config_command += " && sh -c '$toochain_config_objdump -t $liteos_name | sort >$liteos_name.sym.sorted'" toochain_config_command += " && sh -c '$toochain_config_objdump -t $liteos_name | sort >$liteos_name.sym.sorted'"
toochain_config_command +=
toochain_asm_command =
" && sh -c '$toochain_config_objdump -d $liteos_name >$liteos_name.asm'" " && sh -c '$toochain_config_objdump -d $liteos_name >$liteos_name.asm'"

View File

@ -149,4 +149,5 @@ toochain_config_objdump = "${compile_prefix}ielfdumparm$toolchain_cmd_suffix"
toochain_config_command = toochain_config_command =
"$toochain_config_objcopy --bin --verbose $liteos_name $liteos_name.bin" "$toochain_config_objcopy --bin --verbose $liteos_name $liteos_name.bin"
toochain_config_command += " && sh -c '$toochain_config_objdump --source --all $liteos_name -o $liteos_name.asm'"
toochain_asm_command = " && sh -c '$toochain_config_objdump --source --all $liteos_name -o $liteos_name.asm'"

View File

@ -39,6 +39,7 @@
#include "los_list.h" #include "los_list.h"
#include "los_config.h" #include "los_config.h"
#include "los_task.h"
#ifdef __cplusplus #ifdef __cplusplus
#if __cplusplus #if __cplusplus
@ -487,6 +488,50 @@ extern UINT32 LOS_QueueReadCopy(UINT32 queueID,
UINT32 *bufferSize, UINT32 *bufferSize,
UINT32 timeOut); UINT32 timeOut);
/**
* @ingroup los_queue
* @brief Read a queue in interrupt service routine.
*
* @par Description:
* This API is used to read data in a specified queue, and store the obtained data to the address specified
* by bufferAddr. The address and the size of the data to be read are defined by users.
* It is safe to use this API from within an interrupt service routine.
* @attention
* <ul>
* <li>The specific queue should be created firstly.</li>
* <li>Queue reading adopts the fist in first out (FIFO) mode. The data that is first stored in the queue is read
* first.</li>
* <li>This API read a queue in unblocking modes.</li>
* <li>bufferAddr stores the obtained data.</li>
* <li>This API cannot be called before the kernel is initialized.</li>
* </ul>
*
* @param queueID [IN] Queue ID created by LOS_QueueCreate. The value range is
* [1,LOSCFG_BASE_IPC_QUEUE_LIMIT].
* @param bufferAddr [OUT] Starting address that stores the obtained data. The starting address must not be
* null.
* @param bufferSize [IN/OUT] Where to maintain the buffer expected-size before read, and the real-size after read.
*
* @retval #LOS_OK The queue is successfully read.
* @retval #LOS_ERRNO_QUEUE_INVALID The handle of the queue that is being read is invalid.
* @retval #LOS_ERRNO_QUEUE_READ_PTR_NULL The pointer passed in during queue reading is null.
* @retval #LOS_ERRNO_QUEUE_READSIZE_ISZERO The buffer size passed in during queue reading is 0.
* @retval #LOS_ERRNO_QUEUE_NOT_CREATE The queue to be read is not created.
* @retval #LOS_ERRNO_QUEUE_ISEMPTY No resource is in the queue that is being read when the time for
* waiting to processing the queue expires.
* @retval #LOS_ERRNO_QUEUE_READ_SIZE_TOO_SMALL The buffer size passed in during queue reading is less than
* the queue size.
* @par Dependency:
* <ul><li>los_queue.h: the header file that contains the API declaration.</li></ul>
* @see LOS_QueueWriteCopy | LOS_QueueCreate
*/
STATIC INLINE UINT32 LOS_QueueReadCopyIsr(UINT32 queueID,
VOID *bufferAddr,
UINT32 *bufferSize)
{
return LOS_QueueReadCopy(queueID, bufferAddr, bufferSize, LOS_NO_WAIT);
}
/** /**
* @ingroup los_queue * @ingroup los_queue
* @brief Write data into a queue. * @brief Write data into a queue.
@ -533,6 +578,47 @@ extern UINT32 LOS_QueueWriteCopy(UINT32 queueID,
UINT32 bufferSize, UINT32 bufferSize,
UINT32 timeOut); UINT32 timeOut);
/**
* @ingroup los_queue
* @brief Write data into a queue in interrupt service routine.
*
* @par Description:
* This API is used to write the data of the size specified by bufferSize and stored at the address specified by
* bufferAddr into a queue.It is safe to use this API from within an interrupt service routine.
* @attention
* <ul>
* <li>The specific queue should be created firstly.</li>
* <li>This API write data into a queue in unblocking modes.</li>
* <li>This API cannot be called before the kernel is initialized.</li>
* <li>The data to be written is of the size specified by bufferSize and is stored at the address specified by
* BufferAddr.</li>
* </ul>
*
* @param queueID [IN] Queue ID created by LOS_QueueCreate. The value range is
* [1,LOSCFG_BASE_IPC_QUEUE_LIMIT].
* @param bufferAddr [IN] Starting address that stores the data to be written.The starting address must
* not be null.
* @param bufferSize [IN] Passed-in buffer size. The value range is [1,USHRT_MAX - sizeof(UINT32)].
*
* @retval #LOS_OK The data is successfully written into the queue.
* @retval #LOS_ERRNO_QUEUE_INVALID The queue handle passed in during queue writing is invalid.
* @retval #LOS_ERRNO_QUEUE_WRITE_PTR_NULL The pointer passed in during queue writing is null.
* @retval #LOS_ERRNO_QUEUE_WRITESIZE_ISZERO The buffer size passed in during queue writing is 0.
* @retval #LOS_ERRNO_QUEUE_NOT_CREATE The queue into which the data is written is not created.
* @retval #LOS_ERRNO_QUEUE_WRITE_SIZE_TOO_BIG The buffer size passed in during queue writing is bigger than
* the queue size.
* @retval #LOS_ERRNO_QUEUE_ISFULL No free node is available during queue writing.
* @par Dependency:
* <ul><li>los_queue.h: the header file that contains the API declaration.</li></ul>
* @see LOS_QueueReadCopy | LOS_QueueCreate
*/
STATIC INLINE UINT32 LOS_QueueWriteCopyIsr(UINT32 queueID,
VOID *bufferAddr,
UINT32 bufferSize)
{
return LOS_QueueWriteCopy(queueID, bufferAddr, bufferSize, LOS_NO_WAIT);
}
/** /**
* @ingroup los_queue * @ingroup los_queue
* @brief Read a queue. * @brief Read a queue.
@ -582,6 +668,50 @@ extern UINT32 LOS_QueueRead(UINT32 queueID,
UINT32 bufferSize, UINT32 bufferSize,
UINT32 timeOut); UINT32 timeOut);
/**
* @ingroup los_queue
* @brief Read a queue in interrupt service routine.
*
* @par Description:
* This API is used to read the address of data in a specified queue, and store it to the address specified by
* bufferAddr.It is safe to use this API from within an interrupt service routine.
* @attention
* <ul>
* <li>The specific queue should be created firstly.</li>
* <li>Queue reading adopts the fist in first out (FIFO) mode. The data that is first stored in the queue is
* read first.</li>
* <li>This API read a queue in unblocking modes.</li>
* <li>bufferAddr stores the obtained data address.</li>
* <li>This API cannot be called before the kernel is initialized.</li>
* <li>The bufferSize is not really used in LOS_QueueRead, because the interface is only used to
* obtain the address of data.</li>
* <li>The buffer which the bufferAddr pointing to must be greater than or equal to 4 bytes.</li>
* </ul>
*
* @param queueID [IN] Queue ID created by LOS_QueueCreate. The value range is
* [1,LOSCFG_BASE_IPC_QUEUE_LIMIT].
* @param bufferAddr [OUT] Starting address that stores the obtained data. The starting address must
* not be null.
* @param bufferSize [IN] Passed-in buffer size, which must not be 0. The value range is [1,0xffffffff].
*
* @retval #LOS_OK The queue is successfully read.
* @retval #LOS_ERRNO_QUEUE_INVALID The handle of the queue that is being read is invalid.
* @retval #LOS_ERRNO_QUEUE_READ_PTR_NULL The pointer passed in during queue reading is null.
* @retval #LOS_ERRNO_QUEUE_READSIZE_ISZERO The buffer size passed in during queue reading is 0.
* @retval #LOS_ERRNO_QUEUE_NOT_CREATE The queue to be read is not created.
* @retval #LOS_ERRNO_QUEUE_ISEMPTY No resource is in the queue that is being read when the time for
* waiting to processing the queue expires.
* @par Dependency:
* <ul><li>los_queue.h: The header file that contains the API declaration.</li></ul>
* @see LOS_QueueWrite | LOS_QueueCreate
*/
STATIC INLINE UINT32 LOS_QueueReadIsr(UINT32 queueID,
VOID *bufferAddr,
UINT32 bufferSize)
{
return LOS_QueueRead(queueID, bufferAddr, bufferSize, LOS_NO_WAIT);
}
/** /**
* @ingroup los_queue * @ingroup los_queue
* @brief Write data into a queue. * @brief Write data into a queue.
@ -629,6 +759,49 @@ extern UINT32 LOS_QueueWrite(UINT32 queueID,
UINT32 bufferSize, UINT32 bufferSize,
UINT32 timeOut); UINT32 timeOut);
/**
* @ingroup los_queue
* @brief Write data into a queue in interrupt service routine.
*
* @par Description:
* This API is used to write the address of data specified by bufferAddr into a queue.
* It is safe to use this API from within an interrupt service routine.
* @attention
* <ul>
* <li>The specific queue should be created firstly.</li>
* <li>This API write data into a queue in unblocking modes.</li>
* <li>This API cannot be called before the kernel is initialized.</li>
* <li>The address of the data of the size specified by bufferSize and stored at the address specified by
* BufferAddr is to be written.</li>
* <li>The bufferSize is not really used in LOS_QueueWriteIsr, because the interface is only used to write the address
* of data specified by bufferAddr into a queue.</li>
* </ul>
*
* @param queueID [IN] Queue ID created by LOS_QueueCreate. The value range is
* [1,LOSCFG_BASE_IPC_QUEUE_LIMIT].
* @param bufferAddr [IN] Starting address that stores the data to be written. The starting address
* must not be null.
* @param bufferSize [IN] Passed-in buffer size, which must not be 0. The value range is [1,0xffffffff].
*
* @retval #LOS_OK The data is successfully written into the queue.
* @retval #LOS_ERRNO_QUEUE_INVALID The queue handle passed in during queue writing is invalid.
* @retval #LOS_ERRNO_QUEUE_WRITE_PTR_NULL The pointer passed in during queue writing is null.
* @retval #LOS_ERRNO_QUEUE_WRITESIZE_ISZERO The buffer size passed in during queue writing is 0.
* @retval #LOS_ERRNO_QUEUE_NOT_CREATE The queue into which the data is written is not created.
* @retval #LOS_ERRNO_QUEUE_WRITE_SIZE_TOO_BIG The buffer size passed in during queue writing is bigger than
* the queue size.
* @retval #LOS_ERRNO_QUEUE_ISFULL No free node is available during queue writing.
* @par Dependency:
* <ul><li>los_queue.h: The header file that contains the API declaration.</li></ul>
* @see LOS_QueueRead | LOS_QueueCreate
*/
STATIC INLINE UINT32 LOS_QueueWriteIsr(UINT32 queueID,
VOID *bufferAddr,
UINT32 bufferSize)
{
return LOS_QueueWrite(queueID, bufferAddr, bufferSize, LOS_NO_WAIT);
}
/** /**
* @ingroup los_queue * @ingroup los_queue
* @brief Write data into a queue header. * @brief Write data into a queue header.
@ -676,6 +849,48 @@ extern UINT32 LOS_QueueWriteHead(UINT32 queueID,
UINT32 bufferSize, UINT32 bufferSize,
UINT32 timeOut); UINT32 timeOut);
/**
* @ingroup los_queue
* @brief Write data into a queue header in interrupt service routine.
*
* @par Description:
* This API is used to write the data of the size specified by bufferSize and stored at the address specified by
* bufferAddr into a queue header.It is safe to use this API from within an interrupt service routine.
* @attention
* <ul>
* <li>This API cannot be called before the kernel is initialized.</li>
* <li>This API write data into a queue header in unblocking modes.</li>
* <li>The address of the data of the size specified by bufferSize and stored at the address specified by
* BufferAddr is to be written.</li>
* <li>LOS_QueueRead and LOS_QueueWriteHeadIsr are a set of interfaces, and the two groups of interfaces need to be used.
* <li>
* </ul>
*
* @param queueID [IN] Queue ID created by LOS_QueueCreate. The value range is
* [1,LOSCFG_BASE_IPC_QUEUE_LIMIT].
* @param bufferAddr [OUT] Starting address that stores the data to be written. The starting address
* must not be null.
* @param bufferSize [IN] Passed-in buffer size, which must not be 0. The value range is [1,0xffffffff].
*
* @retval #LOS_OK The data is successfully written into the queue.
* @retval #LOS_ERRNO_QUEUE_INVALID The queue handle passed in during queue writing is invalid.
* @retval #LOS_ERRNO_QUEUE_WRITE_PTR_NULL The pointer passed in during queue writing is null.
* @retval #LOS_ERRNO_QUEUE_WRITESIZE_ISZERO The buffer size passed in during queue writing is 0.
* @retval #LOS_ERRNO_QUEUE_NOT_CREATE The queue into which the data is written is not created.
* @retval #LOS_ERRNO_QUEUE_WRITE_SIZE_TOO_BIG The buffer size passed in during queue writing is bigger than
* the queue size.
* @retval #LOS_ERRNO_QUEUE_ISFULL No free node is available during queue writing.
* @par Dependency:
* <ul><li>los_queue.h: The header file that contains the API declaration.</li></ul>
* @see LOS_QueueRead | LOS_QueueCreate
*/
STATIC INLINE UINT32 LOS_QueueWriteHeadIsr(UINT32 queueID,
VOID *bufferAddr,
UINT32 bufferSize)
{
return LOS_QueueWriteHead(queueID, bufferAddr, bufferSize, LOS_NO_WAIT);
}
/** /**
* @ingroup los_queue * @ingroup los_queue
* @brief Write data into a queue header. * @brief Write data into a queue header.
@ -723,6 +938,48 @@ extern UINT32 LOS_QueueWriteHeadCopy(UINT32 queueID,
UINT32 bufferSize, UINT32 bufferSize,
UINT32 timeOut); UINT32 timeOut);
/**
* @ingroup los_queue
* @brief Write data into a queue header in interrupt service routine.
*
* @par Description:
* This API is used to write the data of the size specified by bufferSize and stored at the address specified by
* bufferAddr into a queue header.It is safe to use this API from within an interrupt service routine.
* @attention
* <ul>
* <li>This API cannot be called before the kernel is initialized.</li>
* <li>This API write data into a queue header in unblocking modes.</li>
* <li>The address of the data of the size specified by bufferSize and stored at the address specified by
* BufferAddr is to be written.</li>
* <li>LOS_QueueReadCopy and LOS_QueueWriteHeadCopyIsr are a set of interfaces, and the two groups of interfaces need to be
* used.<li>
* </ul>
*
* @param queueID [IN] Queue ID created by LOS_QueueCreate. The value range is
* [1,LOSCFG_BASE_IPC_QUEUE_LIMIT].
* @param bufferAddr [OUT] Starting address that stores the data to be written.
* The starting address must not be null.
* @param bufferSize [IN] Passed-in buffer size, which must not be 0. The value range is [1,0xffffffff].
*
* @retval #LOS_OK The data is successfully written into the queue.
* @retval #LOS_ERRNO_QUEUE_INVALID The queue handle passed in during queue writing is invalid.
* @retval #LOS_ERRNO_QUEUE_WRITE_PTR_NULL The pointer passed in during queue writing is null.
* @retval #LOS_ERRNO_QUEUE_WRITESIZE_ISZERO The buffer size passed in during queue writing is 0.
* @retval #LOS_ERRNO_QUEUE_NOT_CREATE The queue into which the data is written is not created.
* @retval #LOS_ERRNO_QUEUE_WRITE_SIZE_TOO_BIG The buffer size passed in during queue writing is bigger than
* the queue size.
* @retval #LOS_ERRNO_QUEUE_ISFULL No free node is available during queue writing.
* @par Dependency:
* <ul><li>los_queue.h: The header file that contains the API declaration.</li></ul>
* @see LOS_QueueWrite | LOS_QueueWriteHeadIsr
*/
STATIC INLINE UINT32 LOS_QueueWriteHeadCopyIsr(UINT32 queueID,
VOID *bufferAddr,
UINT32 bufferSize)
{
return LOS_QueueWriteHeadCopy(queueID, bufferAddr, bufferSize, LOS_NO_WAIT);
}
/** /**
* @ingroup los_queue * @ingroup los_queue
* @brief Delete a queue. * @brief Delete a queue.

View File

@ -37,7 +37,6 @@
#include "los_interrupt.h" #include "los_interrupt.h"
#include "los_membox.h" #include "los_membox.h"
#include "los_memory.h" #include "los_memory.h"
#include "los_task.h"
#include "los_sched.h" #include "los_sched.h"
#include <stdint.h> #include <stdint.h>

View File

@ -164,6 +164,22 @@ static_library("test_queue") {
"It_los_queue_head_040.c", "It_los_queue_head_040.c",
"It_los_queue_head_041.c", "It_los_queue_head_041.c",
"It_los_queue_head_042.c", "It_los_queue_head_042.c",
"It_los_queue_isr_001.c",
"It_los_queue_isr_002.c",
"It_los_queue_isr_003.c",
"It_los_queue_isr_004.c",
"It_los_queue_isr_005.c",
"It_los_queue_isr_006.c",
"It_los_queue_isr_007.c",
"It_los_queue_isr_008.c",
"It_los_queue_isr_009.c",
"It_los_queue_isr_010.c",
"It_los_queue_isr_011.c",
"It_los_queue_isr_012.c",
"It_los_queue_isr_013.c",
"It_los_queue_isr_014.c",
"It_los_queue_isr_015.c",
"It_los_queue_isr_016.c",
"It_los_queue_static_001.c", "It_los_queue_static_001.c",
"It_los_queue_static_002.c", "It_los_queue_static_002.c",
"It_los_queue_static_003.c", "It_los_queue_static_003.c",

View File

@ -151,7 +151,22 @@ VOID ItSuiteLosQueue(VOID)
ItLosQueueHead040(); ItLosQueueHead040();
ItLosQueueHead041(); ItLosQueueHead041();
ItLosQueueHead042(); ItLosQueueHead042();
ItLosQueueIsr001();
ItLosQueueIsr002();
ItLosQueueIsr003();
ItLosQueueIsr004();
ItLosQueueIsr005();
ItLosQueueIsr006();
ItLosQueueIsr007();
ItLosQueueIsr008();
ItLosQueueIsr009();
ItLosQueueIsr010();
ItLosQueueIsr011();
ItLosQueueIsr012();
ItLosQueueIsr013();
ItLosQueueIsr014();
ItLosQueueIsr015();
ItLosQueueIsr016();
#if (LOS_KERNEL_TEST_FULL == 1) #if (LOS_KERNEL_TEST_FULL == 1)
#if (LOS_KERNEL_HWI_TEST == 1) #if (LOS_KERNEL_HWI_TEST == 1)
ItLosQueue044(); ItLosQueue044();

View File

@ -183,7 +183,22 @@ extern VOID ItLosQueueHead039(VOID);
extern VOID ItLosQueueHead040(VOID); extern VOID ItLosQueueHead040(VOID);
extern VOID ItLosQueueHead041(VOID); extern VOID ItLosQueueHead041(VOID);
extern VOID ItLosQueueHead042(VOID); extern VOID ItLosQueueHead042(VOID);
extern VOID ItLosQueueIsr001(VOID);
extern VOID ItLosQueueIsr002(VOID);
extern VOID ItLosQueueIsr003(VOID);
extern VOID ItLosQueueIsr004(VOID);
extern VOID ItLosQueueIsr005(VOID);
extern VOID ItLosQueueIsr006(VOID);
extern VOID ItLosQueueIsr007(VOID);
extern VOID ItLosQueueIsr008(VOID);
extern VOID ItLosQueueIsr009(VOID);
extern VOID ItLosQueueIsr010(VOID);
extern VOID ItLosQueueIsr011(VOID);
extern VOID ItLosQueueIsr012(VOID);
extern VOID ItLosQueueIsr013(VOID);
extern VOID ItLosQueueIsr014(VOID);
extern VOID ItLosQueueIsr015(VOID);
extern VOID ItLosQueueIsr016(VOID);
#if (LOSCFG_BASE_IPC_QUEUE_STATIC == 1) #if (LOSCFG_BASE_IPC_QUEUE_STATIC == 1)
extern VOID ItLosQueueStatic001(VOID); extern VOID ItLosQueueStatic001(VOID);
extern VOID ItLosQueueStatic002(VOID); extern VOID ItLosQueueStatic002(VOID);

View File

@ -0,0 +1,60 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
ret = LOS_QueueWriteIsr(g_testQueueID01, &buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
CHAR *buff2 = NULL;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
ret = LOS_QueueRead(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr001(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr001", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,59 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
ret = LOS_QueueWriteIsr(g_testQueueID01, &buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_QUEUE_NOT_CREATE, ret);
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
CHAR *buff2 = NULL;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_QUEUE_PARA_ISZERO, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
ret = LOS_QueueRead(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_QUEUE_NOT_CREATE, ret, EXIT);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_ERRNO_QUEUE_NOT_CREATE, ret);
return LOS_OK;
}
VOID ItLosQueueIsr002(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr002", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,60 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
ret = LOS_QueueWriteIsr(g_testQueueID01, &buff1, 0);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_QUEUE_WRITE_SIZE_TOO_BIG, ret);
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
CHAR *buff2 = NULL;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, 1);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
ret = LOS_QueueRead(g_testQueueID01, &buff2, 1, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_QUEUE_ISEMPTY, ret, EXIT);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr003(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr003", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,59 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
ret = LOS_QueueWriteIsr(g_testQueueID01, &buff1, 0);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
CHAR *buff2 = NULL;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, 4);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
ret = LOS_QueueRead(g_testQueueID01, &buff2, 1, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr004(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr004", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,63 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
ret = LOS_QueueWriteIsr(g_testQueueID01, &buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
CHAR *buff2 = NULL;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_QueueRead(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_QUEUE_ISEMPTY, ret, EXIT);
TestHwiTrigger(HWI_NUM_TEST);
ret = LOS_QueueRead(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr005(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr005", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,66 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
CHAR buff1[QUEUE_BASE_MSGSIZE] = "UniDSP";
static VOID HwiF01(VOID)
{
UINT32 ret;
ret = LOS_QueueWriteIsr(g_testQueueID01, &buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
CHAR *buff2 = NULL;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
ret = LOS_QueueRead(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
for (UINT8 index = 0; index < QUEUE_BASE_MSGSIZE - 1; index++) { // 7, QUEUE_BASE_MSGSIZE - 1
ICUNIT_GOTO_EQUAL(*((CHAR *)(intptr_t)buff2 + index), buff1[index],
*((CHAR *)(intptr_t)buff2 + index), EXIT);
}
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr006(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr006", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,63 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
ret = LOS_QueueWriteIsr((UINT32)-1, &buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_QUEUE_INVALID, ret);
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
CHAR *buff2 = NULL;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
ret = LOS_QueueRead(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_QUEUE_ISEMPTY, ret, EXIT);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr007(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr007", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,62 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
ret = LOS_QueueWriteIsr(OS_ALL_IPC_QUEUE_LIMIT + 1, &buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_QUEUE_INVALID, ret);
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
CHAR *buff2 = NULL;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
ret = LOS_QueueRead(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_ERRNO_QUEUE_ISEMPTY, ret, EXIT);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr008(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr008", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,60 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR *buff2 = NULL;
ret = LOS_QueueReadIsr(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_QueueWrite(g_testQueueID01, &buff1, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
TestHwiTrigger(HWI_NUM_TEST);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr009(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr009", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,77 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR *buff2 = NULL;
ret = LOS_QueueReadIsr(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_ERRNO_QUEUE_ISEMPTY, ret);
}
static VOID HwiF02(VOID)
{
UINT32 ret;
CHAR *buff2 = NULL;
ret = LOS_QueueReadIsr(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST0, hwiPrio, mode, (HWI_PROC_FUNC)HwiF02, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
ret = LOS_QueueWrite(g_testQueueID01, &buff1, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
TestHwiTrigger(HWI_NUM_TEST0);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
TestHwiDelete(HWI_NUM_TEST0);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr010(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr010", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,65 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static CHAR g_buff[QUEUE_BASE_MSGSIZE] = "UniDSP";
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR *buff2 = NULL;
ret = LOS_QueueReadIsr(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
for (UINT8 index = 0; index < QUEUE_BASE_MSGSIZE - 1; index++) { // 7, QUEUE_BASE_MSGSIZE - 1
ICUNIT_ASSERT_EQUAL_VOID(*((CHAR *)(intptr_t)buff2 + index), g_buff[index],
*((CHAR *)(intptr_t)buff2 + index));
}
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
ret = LOS_QueueWrite(g_testQueueID01, &g_buff, QUEUE_BASE_MSGSIZE, 0);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
TestHwiTrigger(HWI_NUM_TEST);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr011(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr011", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,81 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
ret = LOS_QueueWriteIsr(g_testQueueID01, &buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static VOID TaskF01(VOID)
{
UINT32 ret;
CHAR *buff2 = NULL;
g_testCount++;
ret = LOS_QueueRead(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE,LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
g_testCount++;
return;
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TSK_INIT_PARAM_S task1 = { 0 };
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
task1.uwStackSize = TASK_STACK_SIZE_TEST;
task1.pcName = "Tsk001A";
task1.usTaskPrio = TASK_PRIO_TEST - 1;
task1.uwResved = LOS_TASK_STATUS_DETACHED;
g_testCount = 0;
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
ICUNIT_ASSERT_EQUAL(g_testCount, 2, g_testCount);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr012(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr012", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,87 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
ret = LOS_QueueWriteIsr(g_testQueueID01, &buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static VOID TaskF01(VOID)
{
UINT32 ret;
CHAR *buff2 = NULL;
g_testCount++;
ret = LOS_QueueRead(g_testQueueID01, &buff2, QUEUE_BASE_MSGSIZE,LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
g_testCount++;
return;
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TSK_INIT_PARAM_S task1 = { 0 };
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
task1.uwStackSize = TASK_STACK_SIZE_TEST;
task1.pcName = "Tsk001A";
task1.usTaskPrio = TASK_PRIO_TEST + 1;
task1.uwResved = LOS_TASK_STATUS_DETACHED;
g_testCount = 0;
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
LOS_TaskDelay(1);
ICUNIT_ASSERT_EQUAL(g_testCount, 1, g_testCount);
TestHwiTrigger(HWI_NUM_TEST);
ICUNIT_ASSERT_EQUAL(g_testCount, 1, g_testCount);
LOS_TaskDelay(1);
ICUNIT_ASSERT_EQUAL(g_testCount, 2, g_testCount);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr013(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr013", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,84 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
ret = LOS_QueueWriteCopyIsr(g_testQueueID01, buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static VOID TaskF01(VOID)
{
UINT32 ret;
UINT32 msgSize = (UINT32)QUEUE_BASE_MSGSIZE;
CHAR buff[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
CHAR buff2[QUEUE_SHORT_BUFFER_LENGTH] = " ";
ret = LOS_QueueReadCopy(g_testQueueID01, buff2, &msgSize, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
for (UINT8 index = 0; index < QUEUE_BASE_MSGSIZE - 1; index++) { // 7, QUEUE_BASE_MSGSIZE - 1
ICUNIT_GOTO_EQUAL(*((CHAR *)(intptr_t)buff2 + index), buff[index],
*((CHAR *)(intptr_t)buff2 + index), EXIT);
}
EXIT:
return;
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TSK_INIT_PARAM_S task1 = { 0 };
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
task1.uwStackSize = TASK_STACK_SIZE_TEST;
task1.pcName = "Tsk001A";
task1.usTaskPrio = TASK_PRIO_TEST - 1;
task1.uwResved = LOS_TASK_STATUS_DETACHED;
g_testCount = 0;
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr014(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr014", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,109 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static CHAR g_buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
static CHAR g_buff2[QUEUE_SHORT_BUFFER_LENGTH] = "DOPRA";
static CHAR g_buff3[QUEUE_SHORT_BUFFER_LENGTH] = "TEST";
static VOID HwiF01(VOID)
{
UINT32 ret;
ret = LOS_QueueWriteHeadIsr(g_testQueueID01, &g_buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
ret = LOS_QueueWriteHeadIsr(g_testQueueID01, &g_buff2, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
ret = LOS_QueueWriteHeadIsr(g_testQueueID01, &g_buff3, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static VOID TaskF01(VOID)
{
UINT32 ret;
CHAR buffA[QUEUE_SHORT_BUFFER_LENGTH] = "TEST";
CHAR buffB[QUEUE_SHORT_BUFFER_LENGTH] = "DOPRA";
CHAR buffC[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
CHAR *buff = NULL;
ret = LOS_QueueRead(g_testQueueID01, &buff, QUEUE_BASE_MSGSIZE, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
for (UINT8 index = 0; index < QUEUE_BASE_MSGSIZE - 1; index++) { // 7, QUEUE_BASE_MSGSIZE - 1
ICUNIT_GOTO_EQUAL(*((CHAR *)(intptr_t)buff + index), buffA[index],
*((CHAR *)(intptr_t)buff + index), EXIT);
}
ret = LOS_QueueRead(g_testQueueID01, &buff, QUEUE_BASE_MSGSIZE, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
for (UINT8 index = 0; index < QUEUE_BASE_MSGSIZE - 1; index++) { // 7, QUEUE_BASE_MSGSIZE - 1
ICUNIT_GOTO_EQUAL(*((CHAR *)(intptr_t)buff + index), buffB[index],
*((CHAR *)(intptr_t)buff + index), EXIT);
}
ret = LOS_QueueRead(g_testQueueID01, &buff, QUEUE_BASE_MSGSIZE, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
for (UINT8 index = 0; index < QUEUE_BASE_MSGSIZE - 1; index++) { // 7, QUEUE_BASE_MSGSIZE - 1
ICUNIT_GOTO_EQUAL(*((CHAR *)(intptr_t)buff + index), buffC[index],
*((CHAR *)(intptr_t)buff + index), EXIT);
}
EXIT:
return;
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TSK_INIT_PARAM_S task1 = { 0 };
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
task1.uwStackSize = TASK_STACK_SIZE_TEST;
task1.pcName = "Tsk001A";
task1.usTaskPrio = TASK_PRIO_TEST - 1;
task1.uwResved = LOS_TASK_STATUS_DETACHED;
g_testCount = 0;
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr015(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr015", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -0,0 +1,108 @@
/*
* Copyright (c) 2023 Hunan OpenValley Digital Industry Development Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "It_los_queue.h"
static VOID HwiF01(VOID)
{
UINT32 ret;
CHAR buff1[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
CHAR buff2[QUEUE_SHORT_BUFFER_LENGTH] = "DOPRA";
CHAR buff3[QUEUE_SHORT_BUFFER_LENGTH] = "TEST";
ret = LOS_QueueWriteHeadCopyIsr(g_testQueueID01, buff1, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
ret = LOS_QueueWriteHeadCopyIsr(g_testQueueID01, buff2, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
ret = LOS_QueueWriteHeadCopyIsr(g_testQueueID01, buff3, QUEUE_BASE_MSGSIZE);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
}
static VOID TaskF01(VOID)
{
UINT32 ret;
UINT32 msgSize = (UINT32)QUEUE_BASE_MSGSIZE;
CHAR buffA[QUEUE_SHORT_BUFFER_LENGTH] = "TEST";
CHAR buffB[QUEUE_SHORT_BUFFER_LENGTH] = "DOPRA";
CHAR buffC[QUEUE_SHORT_BUFFER_LENGTH] = "UniDSP";
CHAR buff[QUEUE_SHORT_BUFFER_LENGTH] = " ";
ret = LOS_QueueReadCopy(g_testQueueID01, buff, &msgSize, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
for (UINT8 index = 0; index < QUEUE_BASE_MSGSIZE - 1; index++) { // 7, QUEUE_BASE_MSGSIZE - 1
ICUNIT_GOTO_EQUAL(*((CHAR *)(intptr_t)buff + index), buffA[index],
*((CHAR *)(intptr_t)buff + index), EXIT);
}
ret = LOS_QueueReadCopy(g_testQueueID01, buff, &msgSize, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
for (UINT8 index = 0; index < QUEUE_BASE_MSGSIZE - 1; index++) { // 7, QUEUE_BASE_MSGSIZE - 1
ICUNIT_GOTO_EQUAL(*((CHAR *)(intptr_t)buff + index), buffB[index],
*((CHAR *)(intptr_t)buff + index), EXIT);
}
ret = LOS_QueueReadCopy(g_testQueueID01, buff, &msgSize, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL_VOID(ret, LOS_OK, ret);
for (UINT8 index = 0; index < QUEUE_BASE_MSGSIZE - 1; index++) { // 7, QUEUE_BASE_MSGSIZE - 1
ICUNIT_GOTO_EQUAL(*((CHAR *)(intptr_t)buff + index), buffC[index],
*((CHAR *)(intptr_t)buff + index), EXIT);
}
EXIT:
return;
}
static UINT32 Testcase(VOID)
{
UINT32 ret;
HWI_PRIOR_T hwiPrio = 3;
HWI_MODE_T mode = 0;
HwiIrqParam irqParam;
ret = LOS_QueueCreate("Q1", QUEUE_BASE_NUM, &g_testQueueID01, 0, QUEUE_BASE_MSGSIZE);
ICUNIT_GOTO_EQUAL(ret, LOS_OK, ret, EXIT);
(VOID)memset_s(&irqParam, sizeof(HwiIrqParam), 0, sizeof(HwiIrqParam));
irqParam.pDevId = 0;
ret = LOS_HwiCreate(HWI_NUM_TEST, hwiPrio, mode, (HWI_PROC_FUNC)HwiF01, &irqParam);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TSK_INIT_PARAM_S task1 = { 0 };
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)TaskF01;
task1.uwStackSize = TASK_STACK_SIZE_TEST;
task1.pcName = "Tsk001A";
task1.usTaskPrio = TASK_PRIO_TEST - 1;
task1.uwResved = LOS_TASK_STATUS_DETACHED;
g_testCount = 0;
ret = LOS_TaskCreate(&g_testTaskID01, &task1);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
TestHwiTrigger(HWI_NUM_TEST);
EXIT:
TestHwiDelete(HWI_NUM_TEST);
ret = LOS_QueueDelete(g_testQueueID01);
ICUNIT_ASSERT_EQUAL(ret, LOS_OK, ret);
return LOS_OK;
}
VOID ItLosQueueIsr016(VOID)
{
TEST_ADD_CASE("ItLosQueueIsr016", Testcase, TEST_LOS, TEST_QUE, TEST_LEVEL1, TEST_FUNCTION);
}

View File

@ -85,7 +85,7 @@
#define ICUNIT_GOTO_WITHIN_EQUAL(param, value1, value2, retcode, label) \ #define ICUNIT_GOTO_WITHIN_EQUAL(param, value1, value2, retcode, label) \
do { \ do { \
if ((param) < (value1) || (param) > (value2)) { \ if ((param) < (value1) || (param) > (value2)) { \
ICunitSaveErr(__LINE__, (iiUINT32)retcode); \ ICunitSaveErr(__LINE__, (iiUINT32)(retcode)); \
goto label; \ goto label; \
} \ } \
} while (0) } while (0)

View File

@ -49,7 +49,7 @@ static VOID *PthreadF01(VOID *argument)
g_testCount = 2; // 2, Init test count value. g_testCount = 2; // 2, Init test count value.
EXIT1: EXIT1:
return NULL; return NULL;
EXIT2: EXIT2:
g_testCount = 0; g_testCount = 0;

View File

@ -50,7 +50,7 @@ static UINT32 Testcase(VOID)
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT); ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT);
ret = mq_close(mqdes); ret = mq_close(mqdes);
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT2); ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT2);
ret = mq_unlink(mqname); ret = mq_unlink(mqname);
ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT1); ICUNIT_GOTO_EQUAL(ret, 0, ret, EXIT1);

View File

@ -135,8 +135,8 @@ static char *TmToStr(const struct tm *timePtr, char *timeStr, unsigned len)
if (timePtr == NULL || timeStr == NULL) { if (timePtr == NULL || timeStr == NULL) {
return ""; return "";
} }
sprintf_s(timeStr, len, "%ld/%d/%d %02d:%02d:%02d WEEK(%d)", timePtr->tm_year + TM_BASE_YEAR, timePtr->tm_mon + 1, (VOID)sprintf_s(timeStr, len, "%ld/%d/%d %02d:%02d:%02d WEEK(%d)", timePtr->tm_year + TM_BASE_YEAR,
timePtr->tm_mday, timePtr->tm_hour, timePtr->tm_min, timePtr->tm_sec, timePtr->tm_wday); timePtr->tm_mon + 1, timePtr->tm_mday, timePtr->tm_hour, timePtr->tm_min, timePtr->tm_sec, timePtr->tm_wday);
return timeStr; return timeStr;
} }

View File

@ -30,6 +30,12 @@ import("//kernel/liteos_m/liteos.gni")
static_library("cmsis_test") { static_library("cmsis_test") {
sources = [ sources = [
"cmsis_event_func_test.c",
"cmsis_msg_func_test.c",
"cmsis_mutex_func_test.c",
"cmsis_sem_func_test.c",
"cmsis_task_func_test.c",
"cmsis_task_pri_func_test.c",
"cmsis_timer_func_test.c", "cmsis_timer_func_test.c",
"xts_cmsis.c", "xts_cmsis.c",
] ]

View File

@ -0,0 +1,364 @@
/*
* Copyright (c) 2023-2023 Huawei Device Co., Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "xts_cmsis.h"
osEventFlagsId_t g_eventId;
UINT16 g_cmsisTestEventCount;
LITE_TEST_SUIT(Cmsis, Cmsisevent, CmsisEventFuncTestSuite);
static BOOL CmsisEventFuncTestSuiteSetUp(void)
{
return TRUE;
}
static BOOL CmsisEventFuncTestSuiteTearDown(void)
{
return TRUE;
}
static void CmsisEventFlagsWaitFunc001(void const *argument)
{
(void)argument;
g_cmsisTestEventCount++;
UINT32 ret = osEventFlagsWait(g_eventId, EVENT_MASK_HEX_11, (osFlagsWaitAll | osFlagsNoClear), osWaitForever);
ICUNIT_ASSERT_EQUAL_VOID(ret, EVENT_MASK_HEX_11, ret);
g_cmsisTestEventCount++;
osThreadExit();
}
static void CmsisEventFlagsSetFunc002(void const *argument)
{
(void)argument;
UINT32 ret;
g_cmsisTestEventCount++;
ret = osEventFlagsWait(g_eventId, EVENT_MASK_HEX_11, (osFlagsWaitAll | osFlagsNoClear), TIMEOUT_NUM_3);
ICUNIT_ASSERT_EQUAL_VOID(ret, osErrorTimeout, ret);
g_cmsisTestEventCount++;
ret = osEventFlagsWait(g_eventId, EVENT_MASK_HEX_4, (osFlagsWaitAll | osFlagsNoClear), osWaitForever);
ICUNIT_ASSERT_EQUAL_VOID(ret, TESTCOUNT_NUM_4, ret);
g_cmsisTestEventCount++;
osThreadExit();
}
static void CmsisEventFlagsClearFunc001(void const *argument)
{
(void)argument;
g_cmsisTestEventCount++;
UINT32 ret = osEventFlagsWait(g_eventId, EVENT_MASK_HEX_1, osFlagsWaitAll, osWaitForever);
ICUNIT_ASSERT_EQUAL_VOID(ret, EVENT_MASK_HEX_1, ret);
g_cmsisTestEventCount++;
osThreadExit();
}
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_0100
* @tc.name : event operation for creat
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsNew001, Function | MediumTest | Level1)
{
g_eventId = osEventFlagsNew(NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_eventId, NULL, g_eventId);
(void)osEventFlagsDelete(g_eventId);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_0200
* @tc.name : event operation for delete
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsDelete001, Function | MediumTest | Level1)
{
UINT32 ret;
g_eventId = osEventFlagsNew(NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_eventId, NULL, g_eventId);
ret = osEventFlagsDelete(g_eventId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_0300
* @tc.name : event delete operation with EventFlagsId = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsDelete002, Function | MediumTest | Level1)
{
UINT32 ret = osEventFlagsDelete(NULL);
ICUNIT_ASSERT_EQUAL(ret, osErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_0400
* @tc.name : event operation for flags set
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsSet001, Function | MediumTest | Level1)
{
UINT32 ret;
g_eventId = osEventFlagsNew(NULL);
ret = osEventFlagsSet(g_eventId, EVENT_MASK_HEX_10);
ICUNIT_ASSERT_EQUAL(ret, EVENT_MASK_HEX_10, ret);
ret = osEventFlagsDelete(g_eventId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_0500
* @tc.name : event reliability test for flags set
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsSet002, Function | MediumTest | Level1)
{
UINT32 ret;
osThreadId_t id;
osStatus_t status;
osThreadAttr_t attr;
attr.name = "test";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = TEST_TASK_STACK_SIZE;
attr.priority = osPriorityAboveNormal;
g_cmsisTestEventCount = 0;
g_eventId = osEventFlagsNew(NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_eventId, NULL, g_eventId);
id = osThreadNew((osThreadFunc_t)CmsisEventFlagsSetFunc002, NULL, &attr);
ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
ICUNIT_ASSERT_EQUAL(g_cmsisTestEventCount, EVENT_MASK_HEX_1, g_cmsisTestEventCount);
g_cmsisTestEventCount++;
ret = osEventFlagsSet(g_eventId, EVENT_MASK_HEX_2);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
ICUNIT_ASSERT_EQUAL(g_cmsisTestEventCount, TESTCOUNT_NUM_3, g_cmsisTestEventCount);
g_cmsisTestEventCount++;
ret = osEventFlagsSet(g_eventId, EVENT_MASK_HEX_11);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
ICUNIT_ASSERT_EQUAL(g_cmsisTestEventCount, TESTCOUNT_NUM_4, g_cmsisTestEventCount);
ret = osEventFlagsSet(g_eventId, EVENT_MASK_HEX_4);
ICUNIT_ASSERT_EQUAL(g_cmsisTestEventCount, TESTCOUNT_NUM_5, g_cmsisTestEventCount);
ret = osEventFlagsDelete(g_eventId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_0600
* @tc.name : event flags set operation with EventFlagsId = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsSet003, Function | MediumTest | Level1)
{
UINT32 ret = osEventFlagsSet(NULL, EVENT_MASK_HEX_10);
ICUNIT_ASSERT_EQUAL(ret, osFlagsErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_0700
* @tc.name : event operation for wait
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsWait001, Function | MediumTest | Level1)
{
UINT32 ret;
osThreadId_t id;
osThreadAttr_t attr;
attr.name = "test";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = TEST_TASK_STACK_SIZE;
attr.priority = osPriorityAboveNormal;
g_cmsisTestEventCount = 0;
g_eventId = osEventFlagsNew(NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_eventId, NULL, g_eventId);
id = osThreadNew((osThreadFunc_t)CmsisEventFlagsWaitFunc001, NULL, &attr);
ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
ret = osEventFlagsSet(g_eventId, EVENT_MASK_HEX_10);
ICUNIT_ASSERT_EQUAL(ret, EVENT_MASK_HEX_10, ret);
ICUNIT_ASSERT_EQUAL(g_cmsisTestEventCount, EVENT_MASK_HEX_1, g_cmsisTestEventCount);
ret = osEventFlagsSet(g_eventId, EVENT_MASK_HEX_1);
ICUNIT_ASSERT_EQUAL(ret, EVENT_MASK_HEX_11, ret);
ICUNIT_ASSERT_EQUAL(g_cmsisTestEventCount, TESTCOUNT_NUM_2, g_cmsisTestEventCount);
ret = osEventFlagsDelete(g_eventId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_0800
* @tc.name : event operation for invalid option
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsWait002, Function | MediumTest | Level1)
{
UINT32 ret;
g_eventId = osEventFlagsNew(NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_eventId, NULL, g_eventId);
ret = osEventFlagsWait(g_eventId, EVENT_MASK_HEX_11, INVALID_FLAG_OPTION, osWaitForever);
ICUNIT_ASSERT_EQUAL(ret, osFlagsErrorParameter, ret);
ret = osEventFlagsDelete(g_eventId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_0900
* @tc.name : event wait operation with EventFlagsId = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsWait003, Function | MediumTest | Level1)
{
UINT32 ret = osEventFlagsWait(NULL, EVENT_MASK_HEX_11, (osFlagsWaitAll | osFlagsNoClear), osWaitForever);
ICUNIT_ASSERT_EQUAL(ret, osFlagsErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_1000
* @tc.name : event operation for flags get
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsGet001, Function | MediumTest | Level1)
{
UINT32 ret;
g_eventId = osEventFlagsNew(NULL);
ret = osEventFlagsSet(g_eventId, EVENT_MASK_HEX_10);
ICUNIT_ASSERT_EQUAL(ret, EVENT_MASK_HEX_10, ret);
ret = osEventFlagsGet(g_eventId);
ICUNIT_ASSERT_EQUAL(ret, EVENT_MASK_HEX_10, ret);
ret = osEventFlagsDelete(g_eventId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_1100
* @tc.name : event flags get operation with EventFlagsId = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsGet002, Function | MediumTest | Level1)
{
UINT32 ret = osEventFlagsGet(NULL);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_1200
* @tc.name : event operation for flags clear
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsClear001, Function | MediumTest | Level1)
{
UINT32 ret;
osThreadId_t id;
osThreadAttr_t attr;
attr.name = "test";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = TEST_TASK_STACK_SIZE;
attr.priority = osPriorityAboveNormal;
g_cmsisTestEventCount = 0;
g_eventId = osEventFlagsNew(NULL);
id = osThreadNew((osThreadFunc_t)CmsisEventFlagsClearFunc001, NULL, &attr);
ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
ret = osEventFlagsSet(g_eventId, EVENT_MASK_HEX_10);
ICUNIT_ASSERT_EQUAL(ret, EVENT_MASK_HEX_10, ret);
ICUNIT_ASSERT_EQUAL(g_cmsisTestEventCount, EVENT_MASK_HEX_1, g_cmsisTestEventCount);
ret = osEventFlagsClear(g_eventId, 0xffff);
ICUNIT_ASSERT_EQUAL(ret, EVENT_MASK_HEX_10, ret);
ret = osEventFlagsGet(g_eventId);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
ret = osEventFlagsSet(g_eventId, EVENT_MASK_HEX_1);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
ICUNIT_ASSERT_EQUAL(g_cmsisTestEventCount, TESTCOUNT_NUM_2, g_cmsisTestEventCount);
ret = osEventFlagsDelete(g_eventId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_EVENT_OPERATION_1300
* @tc.name : event flags clear operation with EventFlagsId = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisEventFuncTestSuite, testOsEventFlagsClear002, Function | MediumTest | Level1)
{
UINT32 ret = osEventFlagsClear(NULL, 0xffff);
ICUNIT_ASSERT_EQUAL(ret, osFlagsErrorParameter, ret);
return 0;
};
RUN_TEST_SUITE(CmsisEventFuncTestSuite);
void CmsisEventFuncTest(void)
{
RUN_ONE_TESTCASE(testOsEventFlagsNew001);
RUN_ONE_TESTCASE(testOsEventFlagsDelete001);
RUN_ONE_TESTCASE(testOsEventFlagsDelete002);
RUN_ONE_TESTCASE(testOsEventFlagsSet001);
RUN_ONE_TESTCASE(testOsEventFlagsSet002);
RUN_ONE_TESTCASE(testOsEventFlagsSet003);
RUN_ONE_TESTCASE(testOsEventFlagsWait001);
RUN_ONE_TESTCASE(testOsEventFlagsWait002);
RUN_ONE_TESTCASE(testOsEventFlagsWait003);
RUN_ONE_TESTCASE(testOsEventFlagsGet001);
RUN_ONE_TESTCASE(testOsEventFlagsGet002);
RUN_ONE_TESTCASE(testOsEventFlagsClear001);
RUN_ONE_TESTCASE(testOsEventFlagsClear002);
}

View File

@ -0,0 +1,419 @@
/*
* Copyright (c) 2023-2023 Huawei Device Co., Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "xts_cmsis.h"
osMessageQueueId_t g_cmsisMqId;
static char *g_cmsisMessageInfo[] = {"msg1", "msg2", "msg3", "msg4", "msg5", "msg6", "msg7", "msg8"};
LITE_TEST_SUIT(Cmsis, Cmsismsg, CmsisMsgFuncTestSuite);
static BOOL CmsisMsgFuncTestSuiteSetUp(void)
{
return TRUE;
}
static BOOL CmsisMsgFuncTestSuiteTearDown(void)
{
return TRUE;
}
static void CmsisMessageQueueGetFunc001(void const *argument)
{
(void)argument;
osStatus_t uwRet;
UINT8 msgPrio = 0;
CHAR ucTemp[MSGINFO_LEN] = "";
UINT32 uwCmp;
uwRet = osMessageQueueGet(g_cmsisMqId, ucTemp, &msgPrio, TIMEOUT_COUNT);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
uwCmp = memcmp(ucTemp, g_cmsisMessageInfo[MSGQUEUE_COUNT_INDEX_0], MSGINFO_LEN);
ICUNIT_ASSERT_EQUAL(uwRet, 0, uwCmp);
uwRet = osMessageQueueDelete(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
osThreadExit();
}
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_0100
* @tc.name : message queue operation for creat
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueNew001, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, MSG_SIZE, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
(void)osMessageQueueDelete(g_cmsisMqId);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_0200
* @tc.name : message queue operation for creat when msg_count = 0
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueNew002, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisMqId = osMessageQueueNew(0, MSG_SIZE, NULL);
ICUNIT_ASSERT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_0300
* @tc.name : message queue operation for creat when msg_size = 0
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueNew003, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, 0, NULL);
ICUNIT_ASSERT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_0400
* @tc.name : message queue operation for delete
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueDelete001, Function | MediumTest | Level1)
{
osStatus_t uwRet;
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, MSG_SIZE, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
uwRet = osMessageQueueDelete(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_0500
* @tc.name : message queue delete operation with mq_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueDelete002, Function | MediumTest | Level1)
{
osStatus_t uwRet = osMessageQueueDelete(NULL);
ICUNIT_ASSERT_EQUAL(uwRet, osErrorParameter, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_0600
* @tc.name : message queue operation for put
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueuePut001, Function | MediumTest | Level1)
{
osStatus_t uwRet;
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, MSG_SIZE, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
uwRet = osMessageQueuePut(g_cmsisMqId, g_cmsisMessageInfo[MSGQUEUE_COUNT_INDEX_0], 0, 0);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
uwRet = osMessageQueueDelete(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_0700
* @tc.name : message queue put operation with mq_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueuePut002, Function | MediumTest | Level1)
{
osStatus_t uwRet = osMessageQueuePut(NULL, g_cmsisMessageInfo[MSGQUEUE_COUNT_INDEX_0], 0, 0);
ICUNIT_ASSERT_EQUAL(uwRet, osErrorParameter, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_0800
* @tc.name : message queue operation for put when msg_ptr = 0
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueuePut003, Function | MediumTest | Level1)
{
osStatus_t uwRet;
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, MSG_SIZE, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
uwRet = osMessageQueuePut(g_cmsisMqId, NULL, 0, 0);
ICUNIT_ASSERT_EQUAL(uwRet, osErrorParameter, uwRet);
uwRet = osMessageQueueDelete(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_0900
* @tc.name : message queue operation for get
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGet001, Function | MediumTest | Level1)
{
osStatus_t uwRet;
UINT32 uId;
osThreadId_t id;
osThreadAttr_t attr;
attr.name = "test";
attr.attr_bits = 0U;
attr.cb_mem = NULL;
attr.cb_size = 0U;
attr.stack_mem = NULL;
attr.stack_size = TEST_TASK_STACK_SIZE;
attr.priority = osPriorityAboveNormal;
uId = osKernelLock();
ICUNIT_ASSERT_EQUAL(uId, 0, uId); /* 1, common data for test, no special meaning */
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, MSG_SIZE, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
id = osThreadNew((osThreadFunc_t)CmsisMessageQueueGetFunc001, NULL, &attr);
ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
uwRet = osMessageQueuePut(g_cmsisMqId, g_cmsisMessageInfo[MSGQUEUE_COUNT_INDEX_0], 0, 0);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
uId = osKernelUnlock();
ICUNIT_ASSERT_EQUAL(uId, 1, uId); /* 1, common data for test, no special meaning */
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_1000
* @tc.name : message queue get operation with mq_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGet002, Function | MediumTest | Level1)
{
osStatus_t uwRet;
UINT8 msgPrio = 0;
CHAR ucTemp[MSGINFO_LEN] = "";
uwRet = osMessageQueueGet(NULL, ucTemp, &msgPrio, TIMEOUT_COUNT);
ICUNIT_ASSERT_EQUAL(uwRet, osErrorParameter, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_1100
* @tc.name : message queue operation for get when msg_ptr = 0
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGet003, Function | MediumTest | Level1)
{
osStatus_t uwRet;
UINT8 msgPrio = 0;
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, MSG_SIZE, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
uwRet = osMessageQueueGet(g_cmsisMqId, NULL, &msgPrio, TIMEOUT_COUNT);
ICUNIT_ASSERT_EQUAL(uwRet, osErrorParameter, uwRet);
uwRet = osMessageQueueDelete(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_1200
* @tc.name : message queue operation for get msg size
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGetMsgSize001, Function | MediumTest | Level1)
{
UINT32 uwRet;
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, MSG_SIZE, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
uwRet = osMessageQueueGetMsgSize(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, MSG_SIZE, uwRet);
uwRet = osMessageQueueDelete(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_1300
* @tc.name : message queue get msg size with mq_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGetMsgSize002, Function | MediumTest | Level1)
{
UINT32 uwRet = osMessageQueueGetMsgSize(NULL);
ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_1400
* @tc.name : message queue operation for get capacity
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGetCapacity001, Function | MediumTest | Level1)
{
UINT32 uwRet;
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, MSG_SIZE, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
uwRet = osMessageQueueGetCapacity(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, MSGQUEUE_COUNT, uwRet);
uwRet = osMessageQueueDelete(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_1500
* @tc.name : message queue get capacity with mq_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGetCapacity002, Function | MediumTest | Level1)
{
UINT32 uwRet = osMessageQueueGetCapacity(NULL);
ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_1600
* @tc.name : message queue operation for get count
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGetCount001, Function | MediumTest | Level1)
{
UINT32 uwRet;
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, MSG_SIZE, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
uwRet = osMessageQueuePut(g_cmsisMqId, g_cmsisMessageInfo[MSGQUEUE_COUNT_INDEX_0], 0, 0);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
uwRet = osMessageQueuePut(g_cmsisMqId, g_cmsisMessageInfo[MSGQUEUE_COUNT_INDEX_1], 0, 0);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
uwRet = osMessageQueuePut(g_cmsisMqId, g_cmsisMessageInfo[MSGQUEUE_COUNT_INDEX_2], 0, 0);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
uwRet = osMessageQueueGetCount(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, MSGQUEUE_PUT_COUNT, uwRet);
uwRet = osMessageQueueDelete(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_1700
* @tc.name : message queue get count with mq_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGetCount002, Function | MediumTest | Level1)
{
UINT32 uwRet = osMessageQueueGetCount(NULL);
ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_1800
* @tc.name : message queue operation for get space
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGetSpace001, Function | MediumTest | Level1)
{
UINT32 uwRet;
g_cmsisMqId = osMessageQueueNew(MSGQUEUE_COUNT, MSG_SIZE, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisMqId, NULL, g_cmsisMqId);
uwRet = osMessageQueuePut(g_cmsisMqId, g_cmsisMessageInfo[MSGQUEUE_COUNT_INDEX_0], 0, 0);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
uwRet = osMessageQueuePut(g_cmsisMqId, g_cmsisMessageInfo[MSGQUEUE_COUNT_INDEX_1], 0, 0);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
uwRet = osMessageQueuePut(g_cmsisMqId, g_cmsisMessageInfo[MSGQUEUE_COUNT_INDEX_2], 0, 0);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
uwRet = osMessageQueueGetSpace(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, MSGQUEUE_SPACE_COUNT, uwRet);
uwRet = osMessageQueueDelete(g_cmsisMqId);
ICUNIT_ASSERT_EQUAL(uwRet, osOK, uwRet);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MSG_OPERATION_1900
* @tc.name : message queue get space with mq_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMsgFuncTestSuite, testOsMessageQueueGetSpace002, Function | MediumTest | Level1)
{
UINT32 uwRet = osMessageQueueGetSpace(NULL);
ICUNIT_ASSERT_EQUAL(uwRet, 0, uwRet);
return 0;
};
RUN_TEST_SUITE(CmsisMsgFuncTestSuite);
void CmsisMsgFuncTest(void)
{
RUN_ONE_TESTCASE(testOsMessageQueueNew001);
RUN_ONE_TESTCASE(testOsMessageQueueNew002);
RUN_ONE_TESTCASE(testOsMessageQueueNew003);
RUN_ONE_TESTCASE(testOsMessageQueueDelete001);
RUN_ONE_TESTCASE(testOsMessageQueueDelete002);
RUN_ONE_TESTCASE(testOsMessageQueuePut001);
RUN_ONE_TESTCASE(testOsMessageQueuePut002);
RUN_ONE_TESTCASE(testOsMessageQueuePut003);
RUN_ONE_TESTCASE(testOsMessageQueueGet001);
RUN_ONE_TESTCASE(testOsMessageQueueGet002);
RUN_ONE_TESTCASE(testOsMessageQueueGet003);
RUN_ONE_TESTCASE(testOsMessageQueueGetMsgSize001);
RUN_ONE_TESTCASE(testOsMessageQueueGetMsgSize002);
RUN_ONE_TESTCASE(testOsMessageQueueGetCapacity001);
RUN_ONE_TESTCASE(testOsMessageQueueGetCapacity002);
RUN_ONE_TESTCASE(testOsMessageQueueGetCount001);
RUN_ONE_TESTCASE(testOsMessageQueueGetCount002);
RUN_ONE_TESTCASE(testOsMessageQueueGetSpace001);
RUN_ONE_TESTCASE(testOsMessageQueueGetSpace002);
}

View File

@ -0,0 +1,296 @@
/*
* Copyright (c) 2023-2023 Huawei Device Co., Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "xts_cmsis.h"
UINT16 g_cmsisTestMutexCount;
osMutexId_t g_cmsisOsMutexId;
osMutexAttr_t g_cmsisMutexAttr;
LITE_TEST_SUIT(Cmsis, Cmsismutex, CmsisMutexFuncTestSuite);
static BOOL CmsisMutexFuncTestSuiteSetUp(void)
{
return TRUE;
}
static BOOL CmsisMutexFuncTestSuiteTearDown(void)
{
return TRUE;
}
static void CmsisMutexGetOwnerFunc001(void const *argument)
{
(void)argument;
osStatus_t ret;
osThreadId_t id1;
osThreadId_t id2;
osThreadAttr_t attr;
g_cmsisOsMutexId = osMutexNew(&g_cmsisMutexAttr);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisOsMutexId, NULL, g_cmsisOsMutexId);
ret = osMutexAcquire(g_cmsisOsMutexId, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
id1 = osMutexGetOwner(g_cmsisOsMutexId);
id2 = osThreadGetId();
ICUNIT_ASSERT_STRING_EQUAL(id1, id2, id1);
attr.name = osThreadGetName(id1);
ICUNIT_ASSERT_STRING_EQUAL("testMutexGetOwner001", attr.name, attr.name);
ret = osMutexRelease(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osMutexDelete(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
osThreadExit();
}
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_0100
* @tc.name : mutex operation for creat with NULL para
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexNew001, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisOsMutexId = osMutexNew(NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisOsMutexId, NULL, g_cmsisOsMutexId);
(void)osMutexDelete(g_cmsisOsMutexId);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_0200
* @tc.name : mutex operation for creat
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexNew002, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisOsMutexId = osMutexNew(&g_cmsisMutexAttr);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisOsMutexId, NULL, g_cmsisOsMutexId);
(void)osMutexDelete(g_cmsisOsMutexId);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_0300
* @tc.name : mutex operation for delete after creat mutex with NULL parameter
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexDelete001, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisOsMutexId = osMutexNew(NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisOsMutexId, NULL, g_cmsisOsMutexId);
ret = osMutexDelete(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osMutexDelete(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_0400
* @tc.name : mutex operation for delete
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexDelete002, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisOsMutexId = osMutexNew(&g_cmsisMutexAttr);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisOsMutexId, NULL, g_cmsisOsMutexId);
ret = osMutexDelete(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osMutexDelete(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_0500
* @tc.name : mutex operation for delete after mutex acquire and release
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexDelete003, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisOsMutexId = osMutexNew(NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisOsMutexId, NULL, g_cmsisOsMutexId);
osMutexAcquire(g_cmsisOsMutexId, LOS_WAIT_FOREVER);
ret = osMutexDelete(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osErrorResource, ret);
(void)osMutexRelease(g_cmsisOsMutexId);
ret = osMutexDelete(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_0600
* @tc.name : mutex delete operation with mutex_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexDelete004, Function | MediumTest | Level1)
{
osStatus_t ret = osMutexDelete(NULL);
ICUNIT_ASSERT_EQUAL(ret, osErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_0700
* @tc.name : mutex acquire operation with mutex_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexAcquire001, Function | MediumTest | Level1)
{
osStatus_t ret = osMutexAcquire(NULL, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL(ret, osErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_0800
* @tc.name : mutex operation for acquire
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexAcquire002, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisOsMutexId = osMutexNew(&g_cmsisMutexAttr);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisOsMutexId, NULL, g_cmsisOsMutexId);
ret = osMutexAcquire(g_cmsisOsMutexId, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
(void)osMutexRelease(g_cmsisOsMutexId);
ret = osMutexDelete(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_0900
* @tc.name : mutex operation for release
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexRelease001, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisOsMutexId = osMutexNew(&g_cmsisMutexAttr);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisOsMutexId, NULL, g_cmsisOsMutexId);
ret = osMutexAcquire(g_cmsisOsMutexId, LOS_WAIT_FOREVER);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osMutexDelete(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osErrorResource, ret);
ret = osMutexRelease(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osMutexDelete(g_cmsisOsMutexId);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_1000
* @tc.name : mutex release operation with mutex_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexRelease002, Function | MediumTest | Level1)
{
osStatus_t ret = osMutexRelease(NULL);
ICUNIT_ASSERT_EQUAL(ret, osErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_1100
* @tc.name : mutex operation for get owner
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexGetOwner001, Function | MediumTest | Level1)
{
osThreadId_t id;
osThreadAttr_t osAttr;
osAttr.name = "testMutexGetOwner001";
osAttr.attr_bits = 0U;
osAttr.cb_mem = NULL;
osAttr.cb_size = 0U;
osAttr.stack_mem = NULL;
osAttr.stack_size = TEST_TASK_STACK_SIZE;
osAttr.priority = osPriorityAboveNormal;
id = osThreadNew((osThreadFunc_t)CmsisMutexGetOwnerFunc001, NULL, &osAttr);
ICUNIT_ASSERT_NOT_EQUAL(id, NULL, id);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_MUTEX_OPERATION_1200
* @tc.name : mutex get owner operation with mutex_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisMutexFuncTestSuite, testOsMutexGetOwner002, Function | MediumTest | Level1)
{
osThreadId_t id = osMutexGetOwner(NULL);
ICUNIT_ASSERT_EQUAL(id, NULL, id);
return 0;
};
RUN_TEST_SUITE(CmsisMutexFuncTestSuite);
void CmsisMutexFuncTest(void)
{
RUN_ONE_TESTCASE(testOsMutexNew001);
RUN_ONE_TESTCASE(testOsMutexNew002);
RUN_ONE_TESTCASE(testOsMutexDelete001);
RUN_ONE_TESTCASE(testOsMutexDelete002);
RUN_ONE_TESTCASE(testOsMutexDelete003);
RUN_ONE_TESTCASE(testOsMutexDelete004);
RUN_ONE_TESTCASE(testOsMutexAcquire001);
RUN_ONE_TESTCASE(testOsMutexAcquire002);
RUN_ONE_TESTCASE(testOsMutexRelease001);
RUN_ONE_TESTCASE(testOsMutexRelease002);
RUN_ONE_TESTCASE(testOsMutexGetOwner001);
RUN_ONE_TESTCASE(testOsMutexGetOwner002);
}

View File

@ -0,0 +1,466 @@
/*
* Copyright (c) 2023-2023 Huawei Device Co., Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used
* to endorse or promote products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "xts_cmsis.h"
osSemaphoreId_t g_cmsisSemSemaph;
LITE_TEST_SUIT(Cmsis, CmsisSem, CmsisSemFuncTestSuite);
static BOOL CmsisSemFuncTestSuiteSetUp(void)
{
return TRUE;
}
static BOOL CmsisSemFuncTestSuiteTearDown(void)
{
return TRUE;
}
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_0100
* @tc.name : semaphore operation for creat when Semaphhore count = 1 and 0
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreNew001, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT1, SEMAPHHORE_COUNT_INT0, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
(void)osSemaphoreDelete(g_cmsisSemSemaph);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_0200
* @tc.name : semaphore operation for creat when Semaphhore count = 10 and 1
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreNew002, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT10, SEMAPHHORE_COUNT_INT1, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
(void)osSemaphoreDelete(g_cmsisSemSemaph);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_0300
* @tc.name : semaphore operation for creat when Semaphhore count = 0 and 10
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreNew003, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT0, SEMAPHHORE_COUNT_INT10, NULL);
ICUNIT_ASSERT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
(void)osSemaphoreDelete(g_cmsisSemSemaph);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_0400
* @tc.name : semaphore operation for creat when Semaphhore count = 0 and 0
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreNew004, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT0, SEMAPHHORE_COUNT_INT0, NULL);
ICUNIT_ASSERT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
(void)osSemaphoreDelete(g_cmsisSemSemaph);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_0500
* @tc.name : semaphore operation for creat when Semaphhore count = 1 and 1
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreNew005, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT1, SEMAPHHORE_COUNT_INT1, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
(void)osSemaphoreDelete(g_cmsisSemSemaph);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_0600
* @tc.name : semaphore operation for creat when Semaphhore count = 10 and 10
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreNew006, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT10, SEMAPHHORE_COUNT_INT10, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
(void)osSemaphoreDelete(g_cmsisSemSemaph);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_0700
* @tc.name : semaphore operation for creat when Semaphhore count = 0xFE and 0
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreNew007, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_HEX_MAX, SEMAPHHORE_COUNT_INT0, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
(void)osSemaphoreDelete(g_cmsisSemSemaph);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_0800
* @tc.name : semaphore operation for creat when Semaphhore count = 0 and 0xFE
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreNew008, Function | MediumTest | Level1)
{
osStatus_t status;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT0, SEMAPHHORE_COUNT_HEX_MAX, NULL);
ICUNIT_ASSERT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
(void)osSemaphoreDelete(g_cmsisSemSemaph);
status = osDelay(DELAY_TICKS_5);
ICUNIT_ASSERT_EQUAL(status, osOK, status);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_0900
* @tc.name : semaphore operation for delete
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreDelete001, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT10, SEMAPHHORE_COUNT_INT0, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_1000
* @tc.name : semaphore delete operation twice
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreDelete002, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT10, SEMAPHHORE_COUNT_INT0, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_1100
* @tc.name : semaphore delete operation with semaphore_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreDelete003, Function | MediumTest | Level1)
{
osStatus_t ret = osSemaphoreDelete(NULL);
ICUNIT_ASSERT_EQUAL(ret, osErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_1200
* @tc.name : semaphore operation for acquire when Semaphhore count = 1 and 1
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreAcquire001, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT1, SEMAPHHORE_COUNT_INT1, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreAcquire(g_cmsisSemSemaph, 0);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_1300
* @tc.name : semaphore operation for acquire when Semaphhore count = 1 and 0
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreAcquire002, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT1, SEMAPHHORE_COUNT_INT0, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreAcquire(g_cmsisSemSemaph, 0);
ICUNIT_ASSERT_EQUAL(ret, osErrorResource, ret);
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_1400
* @tc.name : semaphore operation for acquire when Semaphhore count = 0 and 1
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreAcquire003, Function | MediumTest | Level1)
{
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT0, SEMAPHHORE_COUNT_INT1, NULL);
ICUNIT_ASSERT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_1500
* @tc.name : semaphore acquire operation with semaphore_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreAcquire004, Function | MediumTest | Level1)
{
osStatus_t ret = osSemaphoreAcquire(NULL, 0);
ICUNIT_ASSERT_EQUAL(ret, osErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_1600
* @tc.name : semaphore operation for release
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreRelease001, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT1, SEMAPHHORE_COUNT_INT0, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreAcquire(g_cmsisSemSemaph, 0);
ICUNIT_ASSERT_EQUAL(ret, osErrorResource, ret);
ret = osSemaphoreRelease(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_1700
* @tc.name : semaphore release operation twice
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreRelease002, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT1, SEMAPHHORE_COUNT_INT0, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreRelease(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osSemaphoreRelease(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osErrorResource, ret);
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_1800
* @tc.name : semaphore operation for release after semaphore acquire
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreRelease003, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT1, SEMAPHHORE_COUNT_INT1, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreRelease(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osErrorResource, ret);
ret = osSemaphoreAcquire(g_cmsisSemSemaph, 0);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osSemaphoreRelease(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osSemaphoreRelease(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osErrorResource, ret);
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_1900
* @tc.name : semaphore release operation with semaphore_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreRelease004, Function | MediumTest | Level1)
{
osStatus_t ret = osSemaphoreRelease(NULL);
ICUNIT_ASSERT_EQUAL(ret, osErrorParameter, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_2000
* @tc.name : semaphore operation for get count when Semaphhore count = 1 or 0xFE
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreGetCount001, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT1, SEMAPHHORE_COUNT_INT1, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreGetCount(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, 1, ret); /* 1, common data for test, no special meaning */
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_HEX_MAX, SEMAPHHORE_COUNT_HEX_MAX, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreGetCount(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, SEMAPHHORE_COUNT_HEX_MAX, ret);
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_2100
* @tc.name : semaphore operation for get count when Semaphhore count = 1 or 0
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreGetCount002, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT1, SEMAPHHORE_COUNT_INT0, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreGetCount(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_INT0, SEMAPHHORE_COUNT_INT1, NULL);
ICUNIT_ASSERT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_2200
* @tc.name : semaphore operation for get count
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreGetCount003, Function | MediumTest | Level1)
{
osStatus_t ret;
g_cmsisSemSemaph = osSemaphoreNew(SEMAPHHORE_COUNT_HEX_MAX, SEMAPHHORE_COUNT_HEX_MAX, NULL);
ICUNIT_ASSERT_NOT_EQUAL(g_cmsisSemSemaph, NULL, g_cmsisSemSemaph);
ret = osSemaphoreAcquire(g_cmsisSemSemaph, osWaitForever);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
ret = osSemaphoreGetCount(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, SEMAPHHORE_COUNT_HEX_MAX - 1, ret); /* 1, common data for test, no special meaning */
ret = osSemaphoreDelete(g_cmsisSemSemaph);
ICUNIT_ASSERT_EQUAL(ret, osOK, ret);
return 0;
};
/**
* @tc.number : SUB_KERNEL_CMSIS_SEM_OPERATION_2300
* @tc.name : semaphore get count operation with semaphore_id = NULL
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisSemFuncTestSuite, testOsSemaphoreGetCount004, Function | MediumTest | Level1)
{
osStatus_t ret = osSemaphoreGetCount(NULL);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
return 0;
};
RUN_TEST_SUITE(CmsisSemFuncTestSuite);
void CmsisSemFuncTest(void)
{
RUN_ONE_TESTCASE(testOsSemaphoreNew001);
RUN_ONE_TESTCASE(testOsSemaphoreNew002);
RUN_ONE_TESTCASE(testOsSemaphoreNew003);
RUN_ONE_TESTCASE(testOsSemaphoreNew004);
RUN_ONE_TESTCASE(testOsSemaphoreNew005);
RUN_ONE_TESTCASE(testOsSemaphoreNew006);
RUN_ONE_TESTCASE(testOsSemaphoreNew007);
RUN_ONE_TESTCASE(testOsSemaphoreNew008);
RUN_ONE_TESTCASE(testOsSemaphoreDelete001);
RUN_ONE_TESTCASE(testOsSemaphoreDelete002);
RUN_ONE_TESTCASE(testOsSemaphoreDelete003);
RUN_ONE_TESTCASE(testOsSemaphoreAcquire001);
RUN_ONE_TESTCASE(testOsSemaphoreAcquire002);
RUN_ONE_TESTCASE(testOsSemaphoreAcquire003);
RUN_ONE_TESTCASE(testOsSemaphoreAcquire004);
RUN_ONE_TESTCASE(testOsSemaphoreRelease001);
RUN_ONE_TESTCASE(testOsSemaphoreRelease002);
RUN_ONE_TESTCASE(testOsSemaphoreRelease003);
RUN_ONE_TESTCASE(testOsSemaphoreRelease004);
RUN_ONE_TESTCASE(testOsSemaphoreGetCount001);
RUN_ONE_TESTCASE(testOsSemaphoreGetCount002);
RUN_ONE_TESTCASE(testOsSemaphoreGetCount003);
RUN_ONE_TESTCASE(testOsSemaphoreGetCount004);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -715,6 +715,18 @@ LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsKernelGetSysTimerFreq001, Function
return 0; return 0;
}; };
/**
* @tc.number : SUB_KERNEL_CMSIS_TIMER_OPERATION_3400
* @tc.name : os operation for get sys time count
* @tc.desc : [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(CmsisTimerFuncTestSuite, testOsKernelGetSysTimerCount001, Function | MediumTest | Level1)
{
UINT32 uwRet = osKernelGetSysTimerCount();
ICUNIT_ASSERT_WITHIN_EQUAL(uwRet, 0, UINT_MAX, uwRet);
return 0;
};
RUN_TEST_SUITE(CmsisTimerFuncTestSuite); RUN_TEST_SUITE(CmsisTimerFuncTestSuite);
void CmsisTimerFuncTest(void) void CmsisTimerFuncTest(void)
@ -752,4 +764,5 @@ void CmsisTimerFuncTest(void)
RUN_ONE_TESTCASE(testOsTimerIsRunning009); RUN_ONE_TESTCASE(testOsTimerIsRunning009);
RUN_ONE_TESTCASE(testOsKernelGetTickFreq001); RUN_ONE_TESTCASE(testOsKernelGetTickFreq001);
RUN_ONE_TESTCASE(testOsKernelGetSysTimerFreq001); RUN_ONE_TESTCASE(testOsKernelGetSysTimerFreq001);
} RUN_ONE_TESTCASE(testOsKernelGetSysTimerCount001);
}

View File

@ -32,5 +32,11 @@
void CmsisFuncTest(void) void CmsisFuncTest(void)
{ {
CmsisEventFuncTest();
CmsisMsgFuncTest();
CmsisMutexFuncTest();
CmsisSemFuncTest();
CmsisTaskFuncTest();
CmsisTaskPriFuncTest();
CmsisTimerFuncTest(); CmsisTimerFuncTest();
} }

View File

@ -36,6 +36,39 @@
#include <limits.h> #include <limits.h>
#include "cmsis_os2.h" #include "cmsis_os2.h"
#define LOS_WAIT_FOREVER 0xFFFFFFFF
#define TESTCOUNT_NUM_1 1
#define TESTCOUNT_NUM_2 2
#define TESTCOUNT_NUM_3 3
#define TESTCOUNT_NUM_4 4
#define TESTCOUNT_NUM_5 5
#define MSGQUEUE_COUNT 16
#define MSGQUEUE_SPACE_COUNT 13
#define MSGQUEUE_PUT_COUNT 3
#define MSG_SIZE 4
#define MSGINFO_LEN 4
#define TIMEOUT_COUNT 1000
#define BUF_LEN 32
#define MSGQUEUE_COUNT_INDEX_0 0
#define MSGQUEUE_COUNT_INDEX_1 1
#define MSGQUEUE_COUNT_INDEX_2 2
#define SEMAPHHORE_COUNT_HEX_MAX 0xFE
#define SEMAPHHORE_COUNT_INT0 0
#define SEMAPHHORE_COUNT_INT1 1
#define SEMAPHHORE_COUNT_INT10 10
#define EVENT_MASK_HEX_1 0x01
#define EVENT_MASK_HEX_2 0x02
#define EVENT_MASK_HEX_4 0x04
#define EVENT_MASK_HEX_10 0x10
#define EVENT_MASK_HEX_11 0x11
#define TIMEOUT_NUM_3 3
#define TIMEOUT_NUM_10 10
#define INVALID_FLAG_OPTION 0x00000004U
#define MILLISEC_NUM_INT10 10U #define MILLISEC_NUM_INT10 10U
#define MILLISEC_NUM_INT4 4U #define MILLISEC_NUM_INT4 4U
#define INVALID_TIMER_TYPE 10 #define INVALID_TIMER_TYPE 10
@ -45,4 +78,12 @@
#define DELAY_TICKS_5 5 #define DELAY_TICKS_5 5
#define DELAY_TICKS_10 10 #define DELAY_TICKS_10 10
#define PRIORITY_COUNT_NOT_MIN 3
#define PRIORITY_COUNT_MIN_1 4
#define PRIORITY_COUNT_MIN_2 5
#define PRIORITY_COUNT_MIN_3 6
#define PRIORITY_COUNT_MIN_4 7
#define MAX_UINT32 0xFFFFFFFF
#define ALIVE_INFO_DIS 10000
#endif #endif

View File

@ -647,6 +647,200 @@ LITE_TEST_CASE(IpcMqExceptionApiTestSuite, testMqSetAttrEBADFEINVAL, Function |
return 0; return 0;
} }
/* *
* @tc.number SUB_KERNEL_IPC_MQ_OPEN_0100
* @tc.name mq_open function errno for EEXIST test
* @tc.desc [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(IpcMqExceptionApiTestSuite, testMqOpenEEXIST, Function | MediumTest | Level2)
{
int ret;
char qName[MQ_NAME_LEN];
mqd_t queue, queueOther;
ret = sprintf_s(qName, sizeof(qName), "testMqOpenEEXIST_%d", GetRandom(10000)); /* 10000, common data for test, no special meaning */
ICUNIT_ASSERT_EQUAL(ret, strlen(qName), ret);
queue = mq_open(qName, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR, NULL);
ICUNIT_ASSERT_NOT_EQUAL(queue, (mqd_t)-1, queue); /* 1, common data for test, no special meaning */
queueOther = mq_open(qName, O_CREAT | O_EXCL, S_IRUSR | S_IWUSR, NULL);
ICUNIT_ASSERT_EQUAL(queueOther, (mqd_t)-1, queueOther); /* 1, common data for test, no special meaning */
ICUNIT_ASSERT_EQUAL(errno, EEXIST, errno);
ret = mq_close(queue);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
ret = mq_unlink(qName);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
return 0;
}
/* *
* @tc.number SUB_KERNEL_IPC_MQ_OPEN_0200
* @tc.name mq_open function errno for EINVAL test
* @tc.desc [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(IpcMqExceptionApiTestSuite, testMqOpenEINVAL, Function | MediumTest | Level2)
{
int i, ret;
mqd_t queue;
struct mq_attr attr = { 0 };
char qName[MQ_NAME_LEN];
const int max = 65535; /* 65535, common data for test, no special meaning */
ret = sprintf_s(qName, sizeof(qName), "testMqOpenEINVAL_%d", GetRandom(10000)); /* 10000, common data for test, no special meaning */
ICUNIT_ASSERT_EQUAL(ret, strlen(qName), ret);
for (i = 0; i < 6; i++) {
switch (i) {
case 0:
attr.mq_msgsize = -1; /* -1, common data for test, no special meaning */
attr.mq_maxmsg = max;
break;
case 1:
attr.mq_msgsize = max;
attr.mq_maxmsg = max;
break;
case 2:
attr.mq_msgsize = 10; /* 10, common data for test, no special meaning */
attr.mq_maxmsg = -1; /* -1, common data for test, no special meaning */
break;
case 3:
attr.mq_msgsize = 10; /* 10, common data for test, no special meaning */
attr.mq_maxmsg = max + 1;
break;
case 4:
attr.mq_msgsize = 0; /* 0, common data for test, no special meaning */
attr.mq_maxmsg = 16; /* 16, common data for test, no special meaning */
break;
case 5:
attr.mq_msgsize = 64; /* 64, common data for test, no special meaning */
attr.mq_maxmsg = 0; /* 0, common data for test, no special meaning */
break;
}
queue = mq_open(qName, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR, &attr);
ICUNIT_ASSERT_EQUAL(queue, (mqd_t)-1, queue); /* 1, common data for test, no special meaning */
if (queue != (mqd_t)-1) { /* 1, common data for test, no special meaning */
ret = mq_close(queue);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
ret = mq_unlink(qName);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
}
ICUNIT_ASSERT_EQUAL(errno, EINVAL, errno);
}
for (i = 0; i < MQ_NAME_LEN; i++) {
qName[i] = 0;
}
attr.mq_msgsize = MQ_MSG_SIZE;
attr.mq_maxmsg = MQ_MAX_MSG;
queue = mq_open(qName, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR, &attr);
ICUNIT_ASSERT_EQUAL(queue, (mqd_t)-1, queue); /* 1, common data for test, no special meaning */
ICUNIT_ASSERT_EQUAL(errno, EINVAL, errno);
return 0;
}
/* *
* @tc.number SUB_KERNEL_IPC_MQ_OPEN_0300
* @tc.name mq_open function errno for ENAMETOOLONG test
* @tc.desc [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(IpcMqExceptionApiTestSuite, testMqOpenENAMETOOLONG, Function | MediumTest | Level2)
{
char qName[MAX_MQ_NAME_LEN + 10]; /* 10, common data for test, no special meaning */
mqd_t queue;
int i, ret;
for (i = 0; i < MAX_MQ_NAME_LEN + 5; i++) { /* 5, common data for test, no special meaning */
qName[i] = '8';
}
qName[i] = '\0';
queue = mq_open(qName, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR, NULL);
ICUNIT_ASSERT_EQUAL(queue, (mqd_t)-1, queue); /* -1, common data for test, no special meaning */
if (queue != (mqd_t)-1) { /* -1, common data for test, no special meaning */
ret = mq_close(queue);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
ret = mq_unlink(qName);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
}
ICUNIT_ASSERT_EQUAL(errno, ENAMETOOLONG, errno);
return 0;
}
/* *
* @tc.number SUB_KERNEL_IPC_MQ_OPEN_0400
* @tc.name mq_open function errno for ENOENT test
* @tc.desc [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(IpcMqExceptionApiTestSuite, testMqOpenENOENT, Function | MediumTest | Level3)
{
int ret;
mqd_t queue;
char qName[MQ_NAME_LEN];
ret = sprintf_s(qName, MQ_NAME_LEN, "testMqOpenENOENT_%d", GetRandom(10000)); /* 10000, common data for test, no special meaning */
ICUNIT_ASSERT_EQUAL(ret, strlen(qName), ret);
queue = mq_open(qName, O_RDWR, S_IRUSR | S_IWUSR, NULL);
ICUNIT_ASSERT_EQUAL(queue, (mqd_t)-1, queue); /* -1, common data for test, no special meaning */
if (queue != (mqd_t)-1) { /* -1, common data for test, no special meaning */
ret = mq_close(queue);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
ret = mq_unlink(qName);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
}
ICUNIT_ASSERT_EQUAL(errno, ENOENT, errno);
return 0;
}
/* *
* @tc.number SUB_KERNEL_IPC_MQ_OPEN_0600
* @tc.name mq_open function errno for ENOSPC test
* @tc.desc [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(IpcMqExceptionApiTestSuite, testMqOpenENOSPC, Function | MediumTest | Level3)
{
int ret;
mqd_t queue;
struct mq_attr setAttr = { 0 };
char qName[MQ_NAME_LEN];
ret = sprintf_s(qName, MQ_NAME_LEN, "testMqOpenENOSPC_%d", GetRandom(10000)); /* 10000, common data for test, no special meaning */
ICUNIT_ASSERT_EQUAL(ret, strlen(qName), ret);
setAttr.mq_msgsize = MAX_MQ_MSG_SIZE + 1; /* 1, common data for test, no special meaning */
setAttr.mq_maxmsg = MAX_MQ_NAME_LEN;
queue = mq_open(qName, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR, &setAttr);
ICUNIT_ASSERT_EQUAL(queue, (mqd_t)-1, queue); /* -1, common data for test, no special meaning */
if (queue != (mqd_t)-1) { /* -1, common data for test, no special meaning */
ret = mq_close(queue);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
ret = mq_unlink(qName);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
}
ICUNIT_ASSERT_EQUAL(errno, ENOSPC, errno);
return 0;
}
/* *
* @tc.number SUB_KERNEL_IPC_MQ_CLOSE_0100
* @tc.name mq_close function errno for EBADF test
* @tc.desc [C- SOFTWARE -0200]
*/
LITE_TEST_CASE(IpcMqExceptionApiTestSuite, testMqCloseEBADF, Function | MediumTest | Level2)
{
int ret = mq_close(NULL);
ICUNIT_ASSERT_EQUAL(ret, -1, ret); /* -1, common data for test, no special meaning */
ICUNIT_ASSERT_EQUAL(errno, EBADF, errno);
return 0;
}
RUN_TEST_SUITE(IpcMqExceptionApiTestSuite); RUN_TEST_SUITE(IpcMqExceptionApiTestSuite);
void IpcMqExceptionFuncTest(void) void IpcMqExceptionFuncTest(void)
@ -667,4 +861,10 @@ void IpcMqExceptionFuncTest(void)
RUN_ONE_TESTCASE(testMqUnlinkEINVAL); RUN_ONE_TESTCASE(testMqUnlinkEINVAL);
RUN_ONE_TESTCASE(testMqGetAttrEBADFEINVAL); RUN_ONE_TESTCASE(testMqGetAttrEBADFEINVAL);
RUN_ONE_TESTCASE(testMqSetAttrEBADFEINVAL); RUN_ONE_TESTCASE(testMqSetAttrEBADFEINVAL);
RUN_ONE_TESTCASE(testMqOpenEEXIST);
RUN_ONE_TESTCASE(testMqOpenEINVAL);
RUN_ONE_TESTCASE(testMqOpenENAMETOOLONG);
RUN_ONE_TESTCASE(testMqOpenENOENT);
RUN_ONE_TESTCASE(testMqOpenENOSPC);
RUN_ONE_TESTCASE(testMqCloseEBADF);
} }