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