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