zephyr/tests/kernel/test_context
Benjamin Walsh 6f4b9a64cf unified/test_context: adapt test to run on unified kernel
Fixing issues with the test itself really:

- reply_timeout semaphore was not initialized, causing its limit value
  to be 0 on unified kernel

- There is no API to set a fiber's priority after it is started in a
  nanokernel. However, tcs.prio can be written to and this works without
  issues. On unified kernel, this does not work however because the
  thread has to move between linked lists representing each priority in
  the ready queue.

Change-Id: I3c5585da05cbc4ac3d2f0f9ae0297d24d41b1309
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-09-13 17:12:55 -04:00
..
src unified/test_context: adapt test to run on unified kernel 2016-09-13 17:12:55 -04:00
Makefile tests: remove duplicate kernel configs and usage of ARCH 2016-05-23 16:46:08 +00:00
prj.conf tests: remove duplicate kernel configs and usage of ARCH 2016-05-23 16:46:08 +00:00
README.txt test_context: don't test dynamic exceptions 2016-09-06 16:15:59 +00:00
testcase.ini tags: basic kernel objects test for actual hardware 2016-07-01 00:38:31 +00:00

Title: Context and IRQ APIs

Description:

This test verifies that the nanokernel CPU and context APIs operate as expected.

---------------------------------------------------------------------------

Building and Running Project:

This nanokernel project outputs to the console.  It can be built and executed
on QEMU as follows:

    make qemu

---------------------------------------------------------------------------

Troubleshooting:

Problems caused by out-dated project information can be addressed by
issuing one of the following commands then rebuilding the project:

    make clean          # discard results of previous builds
                        # but keep existing configuration info
or
    make pristine       # discard results of previous builds
                        # and restore pre-defined configuration info

---------------------------------------------------------------------------

Sample Output:

tc_start() - Test Nanokernel CPU and thread routines
Initializing nanokernel objects
Testing nano_cpu_idle()
Testing interrupt locking and unlocking
Testing irq_disable() and irq_enable()
Testing sys_thread_self_get() from an ISR and task
Testing sys_execution_context_type_get() from an ISR
Testing sys_execution_context_type_get() from a task
Spawning a fiber from a task
Fiber to test sys_thread_self_get() and sys_execution_context_type_get
Fiber to test fiber_yield()
Testing sys_thread_busy_wait()
 fiber busy waiting for 20000 usecs (2 ticks)
 fiber busy waiting completed
Testing fiber_sleep()
 fiber sleeping for 5 ticks
 fiber back from sleep
Testing fiber_delayed_start() without cancellation
 fiber (q order: 2, t/o: 50) is running
 got fiber (q order: 2, t/o: 50) as expected
 fiber (q order: 3, t/o: 75) is running
 got fiber (q order: 3, t/o: 75) as expected
 fiber (q order: 0, t/o: 100) is running
 got fiber (q order: 0, t/o: 100) as expected
 fiber (q order: 6, t/o: 125) is running
 got fiber (q order: 6, t/o: 125) as expected
 fiber (q order: 1, t/o: 150) is running
 got fiber (q order: 1, t/o: 150) as expected
 fiber (q order: 4, t/o: 175) is running
 got fiber (q order: 4, t/o: 175) as expected
 fiber (q order: 5, t/o: 200) is running
 got fiber (q order: 5, t/o: 200) as expected
Testing fiber_delayed_start() with cancellations
 cancelling [q order: 0, t/o: 100, t/o order: 0]
 fiber (q order: 3, t/o: 75) is running
 got (q order: 3, t/o: 75, t/o order 1074292) as expected
 fiber (q order: 0, t/o: 100) is running
 got (q order: 0, t/o: 100, t/o order 1074292) as expected
 cancelling [q order: 3, t/o: 75, t/o order: 3]
 cancelling [q order: 4, t/o: 175, t/o order: 4]
 fiber (q order: 4, t/o: 175) is running
 got (q order: 4, t/o: 175, t/o order 1074292) as expected
 cancelling [q order: 6, t/o: 125, t/o order: 6]
PASS - main.
===================================================================
PROJECT EXECUTION SUCCESSFUL