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