1# Copyright (c) 2024 Intel Corporation
2# SPDX-License-Identifier: Apache-2.0
3
4mainmenu "Eclipse ThreadX Thread-Metric RTOS Test Suite"
5
6source "Kconfig.zephyr"
7
8choice TM_TEST
9	prompt "Select a Thread-Metric test to execute"
10	default TM_PREEMPTIVE
11	help
12	  The Thread-Metric benchmark suite consists of eight RTOS tests.
13	  These tests measure the total number of RTOS events that can be
14	  processed during a 30 second time interval.
15
16config TM_BASIC
17	bool "Baseline basic benchmark"
18	help
19	  The baseline basic benchmark consists of a single thread that counts
20	  the number of times it performs a set of calculations. This number
21	  is reported every 30 seconds.
22
23config TM_COOPERATIVE
24	bool "Cooperative context switching"
25	help
26	  The cooperative context switching benchmark spawns five (5) threads
27	  of equal priority that yield to each other and increment counters
28	  on each context switch. The sum total of the counters is reported
29	  every 30 seconds.
30
31config TM_INTERRUPT
32	bool "Interrupt processing"
33	select TEST
34	select IRQ_OFFLOAD
35	select IRQ_OFFLOAD_NESTED
36	help
37	  The interrupt processing benchmark has a single thread that causes
38	  an interrupt which results in its ISR incrementing a counter and then
39	  posting a semaphore. The thread then increments its own counter and
40	  takes that semaphore. The sum total of the counters is reported
41	  every 30 seconds.
42
43config TM_INTERRUPT_PREEMPTION
44	bool "Interrupt processing preemption"
45	select TEST
46	select IRQ_OFFLOAD
47	select IRQ_OFFLOAD_NESTED
48	help
49	  The interrupt preemption benchmark counts the number of times that
50	  an ISR from a software generated interrupt results in the preemption
51	  of a thread. The total number of context switches is reported every
52	  30 seconds.
53
54config TM_MEMORY_ALLOCATION
55	bool "Memory allocation"
56	help
57	  The memory allocation benchmark counts the number of times a thread
58	  is able to allocate and then release a 128-byte block. This number
59	  is reported every 30 seconds.
60
61config TM_MESSAGE
62	bool "Message processing"
63	help
64	  The message processing benchmark counts the number of times that a
65	  thread can send and receive a 16-byte message from a message queue.
66	  This number is reported every 30 seconds.
67
68config TM_PREEMPTIVE
69	bool "Preemptive context switching"
70	help
71	  The preemptive context switching benchmark creates five (5) threads
72	  of different priorities that suspend and resume each other in a
73	  cyclical pattern. The total number of context switches is reported
74	  every 30 seconds.
75
76config TM_SYNCHRONIZATION
77	bool "Synchronization"
78	help
79	  The synchronization benchmark counts the number of times that a
80	  thread can give and take a semaphore without blocking. This number
81	  is reported every 30 seconds.
82
83endchoice
84