Commit Graph

1782 Commits

Author SHA1 Message Date
Meng xianglin
f397f1774f tests: msgq: add new test case for msgq
An intergration testing make use of message queue interfaces
provided by kernel

Signed-off-by: Meng xianglin <xianglinx.meng@intel.com>
2021-05-05 20:52:04 -04:00
Enjia Mai
a9edb1f46a tests: smp: add some module and integration test cases
This PR add 2 module test cases:
- test_smp_release_global_lock() and test_smp_release_global_lock_irq()
  verify z_smp_release_global_lock() works.

And 1 integration test cases:
- test_inc_concurrency() to verify parallelly increase operations will
  fail if not applying synchronization on SMP.

Signed-off-by: Enjia Mai <enjiax.mai@intel.com>
2021-05-05 20:34:28 -04:00
Gerard Marull-Paretas
7988ab4a26 pm: rename device_set/get_power_state to pm_device_set/get
Make name consistent with other device PM APIs.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
2c7b763e47 pm: replace DEVICE_PM_* states with PM_DEVICE_*
Prefix device PM states with PM.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
5a4cdd24a0 tests: replace power/power.h with pm/pm.h
Replace old header with the new one.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
c524075780 pm: runtime: rename API with pm_device prefix
Use `pm_device_*` prefix for the device runtime PM API. This adds the
API to the `pm` namespace, making it clear part of the PM subsystem.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Daniel Leung
3a7e0f875c tests: semaphore: add k_thread_join to test_sem_take_timeout_isr
This adds k_thread_join() to the thread being used in
test_sem_take_timeout_isr() to avoid a thread re-use error
in the test after this one.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-05-03 17:28:12 -04:00
Daniel Leung
8b7252cd41 tests: condvar_api: fix permissions to multiple condvar
The permission to use multiple_condvar is not granted to test
test_condvar_multiple_threads_wait_wake, which results in
bunch or permission error messages, and actually not testing
the conditional variables. This grants the permission to
the those conditional variables to the test threads. Also,
replace the k_yield() with k_msleep() to allow all created
threads time to run. A simply k_yield() might let a few to
run before the next batch of "waking" threads start to run,
resulting in some conditional variables not being initialized
but trying to wake.

Fixes #34777

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-05-03 17:28:12 -04:00
Nicolas Pitre
f1f63dda17 arm64: FPU context switching support
This adds FPU sharing support with a lazy context switching algorithm.

Every thread is allowed to use FPU/SIMD registers. In fact, the compiler
may insert FPU reg accesses in anycontext to optimize even non-FP code
unless the -mgeneral-regs-only compiler flag is used, but Zephyr
currently doesn't support such a build.

It is therefore possible to do FP access in IRS as well with this patch
although IRQs are then disabled to prevent nested IRQs in such cases.

Because the thread object grows in size, some tests have to be adjusted.

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2021-05-03 11:56:50 +02:00
Krzysztof Chruscinski
acd8d8ebda tests: kernel: fatal: Add no multithreading test
Added test which verifies that when multithreading is disabled
exception as correctly handled by the kernel.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2021-04-29 14:50:35 +02:00
Krzysztof Chruscinski
4f949a28fb tests: kernel: mem_heap: Add CONFIG_MULTITHREADING=n configuration
Extended mheap_api_concept test suite to support case when
multithreading is disabled.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2021-04-29 14:50:35 +02:00
Krzysztof Chruscinski
693c3fbb9d tests: kernel: mem_slab: Add no multithreading support
Extended mslab_api test suite with CONFIG_MULTITHREADING=n
configuration.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2021-04-29 14:50:35 +02:00
Krzysztof Chruscinski
e99a015ba3 tests: kernel: threads: no-multithreading: Extend test
Extended test to validate following functionality:
- k_busy_wait
- k_timer
- irq_lock/irq_unlock
- k_cpu_idle
- SYS_INIT()

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2021-04-29 14:50:35 +02:00
Krzysztof Chruscinski
2e085a5202 tests: kernel: timer: timer_api: Extend with CONFIG_MULTITHREADING=n case
Extended test to validate that timer API is working as expected
when CONFIG_MULTITHREADING=n.

Signed-off-by: Krzysztof Chruscinski <krzysztof.chruscinski@nordicsemi.no>
2021-04-29 14:50:35 +02:00
Enjia Mai
e53d549e21 tests: mem_protect: add a test case of adding memory partition
Add a test case to validate when adding a new partition into a memory
domain with over its maximum specified limit number, an assertion
failure happens.

Signed-off-by: Maksim Masalski <maksim.masalski@intel.com>
Signed-off-by: Enjia Mai <enjiax.mai@intel.com>
2021-04-28 14:34:17 -04:00
Paul Sokolovsky
bb77186cc6 tests: kernel: no-multithreading: Use tc_util.h
The comment in this test says that it cannot use ztest, as the latter
spawns some threads. However, still format the output in a way
compatible with ztest output, by using tc_util.h macros. This is
similar to a few other tests which can't use ztest library directly.

Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
2021-04-28 12:54:13 -04:00
Maksim Masalski
2c138fb59f tests: add new kernel objects tests
Found out that important requirements are not tested by current
kernel objects tests. Decided to fix that situation

New added tests:
1. test_kobj_assign_perms_on_alloc_obj()
Create kernel object semaphore, dynamically allocate it from the
calling thread's resource pool.
Check that object's address is in bounds of that memory pool.
Then check the requestor thread will implicitly be assigned
permission on the allocated object by using
semaphore API k_sem_init()

2. test_no_ref_dyn_kobj_release_mem()
Dynamically allocated kernel objects whose access is controlled by
the permission system will use object permission as a reference count
If no threads have access to an object, the object's memory released.

Signed-off-by: Maksim Masalski <maksim.masalski@intel.com>
2021-04-28 12:53:55 -04:00
Gerard Marull-Paretas
1eabc24469 tests: kernel: remove usage of device_pm_control_nop
device_pm_control_nop is now deprecated in favour of NULL.

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-04-28 12:53:09 -04:00
Gerard Marull-Paretas
e25dc6ff80 tests: kernel: device: adjust for device pm changes
- If device PM is not supported -ENOSYS is returned, update test case to
  account for that
- Remove usage of device_pm_control_nop

Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-04-27 16:28:49 -04:00
Enjia Mai
d3747db66f tests: kernel: fix two test cases of condvar hang up in SMP
Make some change on two codvar test cases to fit testing under SMP,
and shorter the test cases execution time.

Fixes #33558.

Signed-off-by: Enjia Mai <enjiax.mai@intel.com>
2021-04-27 13:30:24 -04:00
Enjia Mai
2e1ac6b46b tests: smp: cancel CONFIG_MP_NUM_CPUS limit of some testcases
Try to remove CONFIG_MP_NUM_CPUS=1 configuration for the test of
condvar, sysmutex and semaphore, in order to test SMP condition more.

Signed-off-by: Enjia Mai <enjiax.mai@intel.com>
2021-04-27 13:30:24 -04:00
Peter Bigot
707dc22fb0 kernel: fix error in synchronous work cancellation return value
The return value is documented to be true if the work was pending, but
the implementation returned true only if the work was actually running
(i.e. the caller had to wait).  It should also return true if
scheduled or submitted work was cancelled.

Note that this means the return value cannot be used to determine
whether the call slept.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2021-04-27 13:28:45 -04:00
Thomas Stranger
32fe8a23af tests: gen_isr_table: nucleo_g071rb: decr. NUM_IRQS to avoid conflicts
After the introduction of usart1 the kernel/genisr_table test could
no longer build, due to an interrupt conflict.
Adopt the TEST_NUM_IRQS to resolve the conflict.

Signed-off-by: Thomas Stranger <thomas.stranger@outlook.com>
2021-04-26 14:16:03 -04:00
Anas Nashif
a09b5ade26 tests: kernel: remove debug message for LLVM
Remove debug message in test.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2021-04-22 07:42:58 -04:00
Julien Massot
68c54bfa33 test: kernel: context: Add Renesas RCar CMT timer
This test require explicit definition of the timer irq.

Signed-off-by: Julien Massot <julien.massot@iot.bzh>
2021-04-22 10:38:45 +02:00
Peter Bigot
2cff32b6c4 tests: kernel: pending: replace to-be-deprecated k_work API use
The new standard API has a different name with an additional parameter.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2021-04-21 20:42:36 -04:00
Ying ming
facd0f57db test: schedule_api : test some negative test
Add error test of api to improve
branch and line coverage in sched.c.

Signed-off-by: Ying ming <mingx.ying@intel.com>
2021-04-19 16:23:12 -04:00
Peter Bigot
f69a38162a kernel: atomic: consistently use named type for atomic pointer values
There's a typedef for non-pointer values compatible with atomic
non-pointer objects.  Add a similar typedef for pointer values, and
the corresponding macro for initializing atomic pointer types.

This also will simplify replacing the Zephyr atomic API with one
based on C11 atomics, should that be desirable.  C11 atomic pointer
values are not void*.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2021-04-19 15:22:13 +02:00
Nick Graves
56b9a422f7 tests/kernel: Add k_poll test for polling on message queues
Add tests for message queue polling functionality.

Fixes: #26728

Signed-off-by: Nick Graves <nicholas.graves@samsara.com>
2021-04-17 07:47:26 -04:00
Ningx Zhao
05e5f4842b tests: mutex: fixed a testcase assert failure
Modify the testcase design to solve some threads
can't lock mutex. Using array index to detect the order
of threads getting mutex instead of delaying.

Fixed #34116

Signed-off-by: Ningx Zhao <ningx.zhao@intel.com>
2021-04-12 11:55:04 -04:00
Peter Bigot
bf45af5dcb tests: kernel: workq: critical: replace to-be-deprecated k_work API use
The new standard API has a different name with an additional parameter.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2021-04-09 05:41:50 -05:00
Daniel Leung
b6fd177d92 test: mem_protect/demand_paging: support using timing funcs
This adds bits to support using timing functions for displaying
paging histograms. Currently on qemu_x86_tiny is supported.

Also shorten the test names.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-04-06 16:43:55 -04:00
Daniel Leung
dd239be6ec tests: mem_protect/demand_paging: add paging stats tests
This uses the new functions to get paging statistics and test
if they are valid.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-04-06 16:43:55 -04:00
Daniel Leung
ae86519819 kernel: mmu: collect more demand paging statistics
This adds more bits to gather statistics on demand paging,
e.g. clean vs dirty pages evicted, # page faults with
IRQ locked/unlocked, etc.

Also extends this to gather per-thread demand paging
statistics.

Signed-off-by: Daniel Leung <daniel.leung@intel.com>
2021-04-06 16:43:55 -04:00
Jennifer Williams
a7ea624d7e tests: kernel: key has wrong type in test_prevent_interruption
The test_prevent_interruption() uses a key for the irq_lock(),
but the key has incorrect data type. This commit makes the key
unsigned int according to API docs.

Fixes #34023

Signed-off-by: Jennifer Williams <jennifer.m.williams@intel.com>
2021-04-06 14:37:24 -04:00
Ningx Zhao
7e91223ae0 tests: mutex: verify mutil-threads take a mutex
Add a testcase to verify mutil-threads competition
for a mutex.

Signed-off-by: Ningx Zhao <ningx.zhao@intel.com>
2021-04-06 10:19:49 -04:00
Ningx Zhao
8af2e07ada tests: pipe: test some error conditions
Add some testcases to test some error conditions
about pipe's APIs.

Signed-off-by: Ningx Zhao <ningx.zhao@intel.com>
2021-04-06 10:19:24 -04:00
Jian Kang
a1db16d292 tests: kernel: Add a new testcases for mailbox
Design a new testing that send and receive mailbox message with
different priority thread, and verify the high priority of receive
thread will receive firstly.

Signed-off-by: Jian Kang <jianx.kang@intel.com>
2021-04-06 10:18:36 -04:00
Jian Kang
0124e08e0f kernel: semaphore: Add two testcases of semaphore
Add two testcases to test semaphore feature on system side. For example,
test semaphore usage and sync process between different priority threads
to verify the semaphore can be take by higher priority thread, and give
sem more than max value of semaphore that set in init step to verify sem
count is correct or not.

Signed-off-by: Jian Kang <jianx.kang@intel.com>
2021-04-06 10:18:07 -04:00
Ying ming
fa2724b263 test: smp :add testcase
This is an integration testcase for smp. It tests
the situation when smp is configed. Fatal can be invoked on
different core and system workq can also be run on different
core.

Signed-off-by: Ying ming <mingx.ying@intel.com>
2021-04-06 10:17:44 -04:00
Ningx Zhao
fa8bc742b8 Test: queue: Add a testcase to test queue
Test point:
1. Any number of threads may wait on an empty FIFO simultaneously.
2. When a data item is added, it is given to the highest priority
thread that has waited longest.

Signed-off-by: Ningx Zhao <ningx.zhao@intel.com>
2021-04-06 10:13:49 -04:00
Ningx Zhao
ec61259f26 kernel: pipe: add a return value check.
Add a ASSERT to check tpipe_put_small_size return
value.

Fixes #33827

Signed-off-by: Ningx Zhao <ningx.zhao@intel.com>
2021-04-06 15:32:04 +02:00
Andy Ross
8505e5e00c tests/workq/work: KERNEL_COHERENCE fixups
Shared data can't live on thread stacks if they are incoherent.  These
are all just per-test-case data, so make them static.

Fixes #33898

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2021-04-02 07:23:51 -04:00
Anas Nashif
0ec3774bde userspace: rename _is_user_context -> k_is_user_context
This functions is being called across the tree, no reason why it should
not be a public API.

The current usage violates a few MISRA rules.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2021-04-01 05:34:17 -04:00
Carlo Caione
3539c2fbb3 arm/arm64: Make ARM64 a standalone architecture
Split ARM and ARM64 architectures.

Details:

- CONFIG_ARM64 is decoupled from CONFIG_ARM (not a subset anymore)
- Arch and include AArch64 files are in a dedicated directory
  (arch/arm64 and include/arch/arm64)
- AArch64 boards and SoC are moved to soc/arm64 and boards/arm64
- AArch64-specific DTS files are moved to dts/arm64
- The A72 support for the bcm_vk/viper board is moved in the
  boards/bcm_vk/viper directory

Signed-off-by: Carlo Caione <ccaione@baylibre.com>
2021-03-31 10:34:33 -05:00
Enjia Mai
95cddd4df7 testsuite: utils: move the interrupt_util.h into testsuite
The interrupt_util.h provides utils of trigger irq, now move them into
testsuite. All of the needed test cases can make use of them.

Signed-off-by: Enjia Mai <enjiax.mai@intel.com>
2021-03-30 08:18:23 -04:00
Ningx Zhao
b7bd2e5173 tests: stack: add a testcase
Add a testcase to test pop data from stack by
mutil-threads, verify data will be poped by
the highest priority thread that has waited longest
firstly.

stack integration

Signed-off-by: Ningx Zhao <ningx.zhao@intel.com>
2021-03-29 16:19:50 -05:00
Peter Bigot
fed035231f kernel: work: fix schedule from running work
k_work_schedule() is supposed to be a no-op if the work item is
already scheduled or submitted: the previous schedule is left
unchanged.  The check incorrectly inhibited the schedule operation
when the work item was neither scheduled nor submitted, but was
running.

Signed-off-by: Peter Bigot <peter.bigot@nordicsemi.no>
2021-03-29 12:27:36 -04:00
Kumar Gala
658151da3e tests: device: tweak test to test linker sorting
There was a linker script change the broke the sorting such that
priority 2 and 20 would not necessary get sorted correctly.  Modify
the test to try and catch any such issues in the future.

We modify the DEVICE_DEFINE of the larger priority first, so if the
linker isn't sorting it would get linked first in theory, and we also
tweak the priority value from 4 to 20 so if we aren't sorting correctly
between 2 and 20 we'll catch that.

Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2021-03-26 11:25:01 -04:00
Flavio Ceolin
9fd4ea91b7 coccinelle: Remove extra semicolon
coccicheck --mode=patch --cocci=semicolon.cocci

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-03-25 11:35:30 -05:00