keykur111 opened a new issue, #17123: URL: https://github.com/apache/nuttx/issues/17123
### Description / Steps to reproduce the issue Hello all I am trying to implement a test for checking preemptive scheduling using tasks or pthread in nuttx for S32K148_EVB board. my approach is to take [tm_preemptive_scheduling_test.c](https://github.com/zephyrproject-rtos/zephyr/blob/main/tests/benchmarks/thread_metric/src/tm_preemptive_scheduling_test.c) file and write a wrapper for the called functions. Another approach to achieve the resume and suspend is using semaphore as below. ``` int tm_thread_create(int thread_id, const char *thread_name, int priority, int (*entry_function)(int argc, FAR char *argv[]), void *args) { threads[thread_id] = task_create( thread_name, // Task Name priority, // Task Priority CONFIG_DEFAULT_TASK_STACKSIZE, // Task Stack Size entry_function, // Task Function NULL // Task Arguments ); } int tm_thread_suspend(int thread_id) { return sem_wait(&g_bench_semaphores[thread_id]); } void tm_thread_resume(int thread_id) { sem_post(&g_bench_semaphores[thread_id]); } void tm_thread_sleep(int sec) { sleep(sec); } ``` for Nuttx priority i am creating the thread with priority starting for lower with lower value and higher with higher value. Main priority is 100. therefore the change in code [tm_preemptive_scheduling_test.c](https://github.com/zephyrproject-rtos/zephyr/blob/main/tests/benchmarks/thread_metric/src/tm_preemptive_scheduling_test.c) is ``` /* Create thread 0 at priority 10. */ tm_thread_create(0, 6, tm_preemptive_thread_0_entry); /* Create thread 1 at priority 9. */ tm_thread_create(1, 7, tm_preemptive_thread_1_entry); /* Create thread 2 at priority 8. */ tm_thread_create(2, 8, tm_preemptive_thread_2_entry); /* Create thread 3 at priority 7. */ tm_thread_create(3, 9, tm_preemptive_thread_3_entry); /* Create thread 4 at priority 6. */ tm_thread_create(4, 10, tm_preemptive_thread_4_entry); ``` Expected behavior is all 5 thread 0 to thread 4 is in suspend state. (waiting for semaphore) thread_report (prio:highest) goes to sleep thread 0 (prio:6) resume (semaphore release) > release the semaphore of thread 1 thread 1 (prio:7) resume (semaphore release) > release the semaphore of thread 2 thread 2 (prio:8) resume (semaphore release) > release the semaphore of thread 3 thread 3 (prio:9) resume (semaphore release) > release the semaphore of thread 4 thread 4 (prio:10) counter4++; >suspend (waiting for semaphore) >>thread 3 (prio:9) counter3++; >>suspend (waiting for semaphore) >>>>thread 2 (prio:8) counter2++; >>>>suspend (waiting for semaphore) >>>>>>thread 1 (prio:7) counter1++; >>>>>>suspend (waiting for semaphore) >>>>>>>>thread 0 (prio:6) counter0++; >release the semaphore of thread 1 ----> start from top again until sleep for thread_report (prio:highest) expires Observed behaviour all 5 thread 0 to thread 4 is in suspend state. (waiting for semaphore) thread_report (prio:highest) goes to sleep thread 0 (prio:6) resume (semaphore release) > release the semaphore of thread 1 thread 1 (prio:7) resume (semaphore release) > release the semaphore of thread 2 thread 2 (prio:8) resume (semaphore release) > release the semaphore of thread 3 thread 3 (prio:9) resume (semaphore release) > release the semaphore of thread 4 thread 4 (prio:10) counter4++; >suspend (waiting for semaphore) >release the semaphore of thread 4 >>thread 4 (prio:10) counter4++; >>>thread 4 (prio:10) counter4++; >>>>thread 4 (prio:10) counter4++; >>>>>....until sleep for thread_report (prio:highest) expires ### On which OS does this issue occur? [OS: Linux] ### What is the version of your OS? Ubuntu 22.04.5 LTS ### NuttX Version 12.10.0-RC0 ### Issue Architecture [Arch: arm] ### Issue Area [Area: Other] ### Host information file sysinfo.h not exists NuttX CFLAGS: -Wstrict-prototypes -Wno-attributes -Wno-unknown-pragmas -Wno-psabi \-O2\ -fno-strict-aliasing -fomit-frame-pointer -fno-common -Wall -Wshadow -Wundef -ffunction-sections -fdata-sections \-g3\ -mlittle-endian -march=armv7e-m -mtune=cortex-m4 -mfloat-abi=soft -mthumb -Wa-mthumb -Wa-mimplicit-it=always -isystem /home/kpit/keyur/07_nuutx_debug/nuttx/include -D__NuttX__ -DNDEBUG NuttX CXXFLAGS: -Wno-attributes -Wno-unknown-pragmas -nostdinc++ -Wno-psabi -std=\gnu++17\ -fno-exceptions -fcheck-new -fno-rtti \-O2\ -fno-strict-aliasing -fomit-frame-pointer -fno-common -Wall -Wshadow -Wundef -ffunction-sections -fdata-sections \-g3\ -mlittle-endian -march=armv7e-m -mtune=cortex-m4 -mfloat-abi=soft -mthumb -Wa-mthumb -Wa-mimplicit-it=always -isystem /home/kpit/keyur/07_nuutx_debug/nuttx/include/cxx -isystem /home/kpit/keyur/07_nuutx_debug/nuttx/include -D__NuttX__ -DNDEBUG NuttX LDFLAGS: --entry=__start -nostdlib --gc-sections --cref -Map=/home/kpit/keyur/07_nuutx_debug/nuttx/nuttx.map NuttX configuration options: CONFIG_ALLOW_BSD_COMPONENTS=y CONFIG_HOST_LINUX=y CONFIG_APPS_DIR=\../nuttx-apps\ CONFIG_BASE_DEFCONFIG=\s32k148evb:nsh-dirty\ CONFIG_BUILD_FLAT=y CONFIG_MOTOROLA_SREC=y CONFIG_RAW_BINARY=y CONFIG_OUTPUT_STRIP_PATHS=y CONFIG_ARCH_HAVE_STDARG_H=y CONFIG_ARCH_HAVE_SETJMP=y CONFIG_ARCH_NONE_DEBUG_H=y CONFIG_FORTIFY_SOURCE=0 CONFIG_NDEBUG=y CONFIG_DEBUG_ALERT=y CONFIG_ARCH_HAVE_STACKCHECK=y CONFIG_STACK_USAGE_WARNING=0 CONFIG_DEBUG_SYMBOLS=y CONFIG_DEBUG_SYMBOLS_LEVEL=\-g3\ CONFIG_ARCH_HAVE_CUSTOMOPT=y CONFIG_DEBUG_CUSTOMOPT=y CONFIG_DEBUG_OPTLEVEL=\-O2\ CONFIG_LTO_NONE=y CONFIG_DEBUG_OPT_UNUSED_SECTIONS=y CONFIG_DEBUG_LINK_MAP=y CONFIG_ARCH_ARM=y CONFIG_ARCH=\arm\ CONFIG_ARM_TOOLCHAIN_GNU_EABI=y CONFIG_ARCH_CHIP_S32K1XX=y CONFIG_ARCH_ARMV7M=y CONFIG_ARCH_CORTEXM4=y CONFIG_ARCH_FAMILY=\armv7-m\ CONFIG_ARCH_CHIP=\s32k1xx\ CONFIG_ARM_THUMB=y CONFIG_ARM_HAVE_MPU_UNIFIED=y CONFIG_ARCH_HAVE_HARDFAULT_DEBUG=y CONFIG_ARCH_HAVE_MEMFAULT_DEBUG=y CONFIG_ARCH_HAVE_BUSFAULT_DEBUG=y CONFIG_ARCH_HAVE_USAGEFAULT_DEBUG=y CONFIG_ARCH_CHIP_S32K148=y CONFIG_ARCH_CHIP_S32K14X=y CONFIG_S32K1XX_HAVE_ENET=y CONFIG_S32K1XX_HAVE_EWM=y CONFIG_S32K1XX_HAVE_FTM2=y CONFIG_S32K1XX_HAVE_FTM3=y CONFIG_S32K1XX_HAVE_FTM4=y CONFIG_S32K1XX_HAVE_FTM5=y CONFIG_S32K1XX_HAVE_FTM6=y CONFIG_S32K1XX_HAVE_FTM7=y CONFIG_S32K1XX_HAVE_HSRUN=y CONFIG_S32K1XX_HAVE_LMEM=y CONFIG_S32K1XX_HAVE_LPI2C1=y CONFIG_S32K1XX_HAVE_LPSPI1=y CONFIG_S32K1XX_HAVE_LPSPI2=y CONFIG_S32K1XX_HAVE_FLEXCAN1=y CONFIG_S32K1XX_HAVE_FLEXCAN2=y CONFIG_S32K1XX_HAVE_SAI=y CONFIG_S32K1XX_HAVE_SPLL=y CONFIG_S32K1XX_LPUART=y CONFIG_S32K1XX_LPUART1=y CONFIG_S32K1XX_WDT_DISABLE=y CONFIG_S32K1XX_FLASHCFG_BACKDOOR1=0xffffffff CONFIG_S32K1XX_FLASHCFG_BACKDOOR2=0xffffffff CONFIG_S32K1XX_FLASHCFG_FPROT=0xffffffff CONFIG_S32K1XX_FLASHCFG_FSEC=0xfe CONFIG_S32K1XX_FLASHCFG_FOPT=0x7f CONFIG_S32K1XX_FLASHCFG_FEPROT=0xff CONFIG_S32K1XX_FLASHCFG_FDPROT=0xff CONFIG_ARCH_TOOLCHAIN_GNU=y CONFIG_ARCH_TOOLCHAIN_GCC=y CONFIG_ARCH_HAVE_IRQTRIGGER=y CONFIG_ARCH_HAVE_IRQPRIO=y CONFIG_ARCH_HAVE_FORK=y CONFIG_ARCH_HAVE_FPU=y CONFIG_ARCH_HAVE_MPU=y CONFIG_ARCH_HAVE_RESET=y CONFIG_ARCH_HAVE_TESTSET=y CONFIG_ARCH_HAVE_THREAD_LOCAL=y CONFIG_ARCH_HAVE_FETCHADD=y CONFIG_ARCH_HAVE_SYSCALL_HOOKS=y CONFIG_ARCH_HAVE_BACKTRACE=y CONFIG_ARCH_HAVE_DEBUG=y CONFIG_ARCH_HAVE_PERF_EVENTS=y CONFIG_ARCH_HAVE_CPUINFO=y CONFIG_ARCH_CPUINFO_FREQ_KHZ=0 CONFIG_ARCH_HAVE_TCBINFO=y CONFIG_ARCH_STACKDUMP=y CONFIG_ARCH_STACKDUMP_MAX_LENGTH=0 CONFIG_ARCH_HAVE_RAMFUNCS=y CONFIG_ARCH_RAMFUNCS=y CONFIG_ARCH_HAVE_RAMVECTORS=y CONFIG_BOARD_LOOPSPERMSEC=6667 CONFIG_ARCH_HAVE_INTERRUPTSTACK=y CONFIG_ARCH_INTERRUPTSTACK=0 CONFIG_ARCH_HAVE_HIPRI_INTERRUPT=y CONFIG_BOOT_RUNFROMFLASH=y CONFIG_RAM_START=0x1ffe0000 CONFIG_RAM_SIZE=258048 CONFIG_FLASH_START=0x0 CONFIG_FLASH_SIZE=0 CONFIG_ARCH_BOARD_S32K148EVB=y CONFIG_ARCH_BOARD=\s32k148evb\ CONFIG_ARCH_HAVE_LEDS=y CONFIG_ARCH_LEDS=y CONFIG_ARCH_HAVE_BUTTONS=y CONFIG_ARCH_HAVE_IRQBUTTONS=y CONFIG_BOARD_CRASHDUMP_NONE=y CONFIG_BOARDCTL=y CONFIG_BOARDCTL_MKRD=y CONFIG_BOARD_MEMORY_RANGE=\\ CONFIG_DISABLE_OS_API=y CONFIG_USEC_PER_TICK=1000 CONFIG_TIMER_ADJUST_USEC=0 CONFIG_START_YEAR=2021 CONFIG_START_MONTH=9 CONFIG_START_DAY=6 CONFIG_PREALLOC_TIMERS=4 CONFIG_IRQ_NWORKS=8 CONFIG_IRQ_WORK_SECTION=\\ CONFIG_IRQ_WORK_STACKSIZE=2048 CONFIG_INIT_ENTRY=y CONFIG_INIT_ARGS=\\ CONFIG_INIT_STACKSIZE=2048 CONFIG_INIT_PRIORITY=100 CONFIG_INIT_ENTRYPOINT=\nsh_main\ CONFIG_INIT_ENTRYNAME=\nsh_main\ CONFIG_RR_INTERVAL=200 CONFIG_TASK_NAME_SIZE=31 CONFIG_SCHED_HAVE_PARENT=y CONFIG_SCHED_WAITPID=y CONFIG_PTHREAD_MUTEX_ROBUST=y CONFIG_PTHREAD_MUTEX_DEFAULT_PRIO_NONE=y CONFIG_SCHED_CPULOAD_NONE=y CONFIG_SCHED_CPULOAD_TICKSPERSEC=100 CONFIG_SCHED_PROFILE_TICKSPERSEC=1000 CONFIG_SCHED_STACK_RECORD=0 CONFIG_DEV_CONSOLE=y CONFIG_NFILE_DESCRIPTORS_PER_BLOCK=8 CONFIG_FILE_STREAM=y CONFIG_SIG_PREALLOC_ACTIONS=4 CONFIG_SIG_ALLOC_ACTIONS=1 CONFIG_SIG_PREALLOC_IRQ_ACTIONS=8 CONFIG_SIG_DEFAULT=y CONFIG_SIG_SIGKILL_ACTION=y CONFIG_SIG_SIGSTOP_ACTION=y CONFIG_PREALLOC_MQ_MSGS=8 CONFIG_PREALLOC_MQ_IRQ_MSGS=8 CONFIG_MQ_MAXMSGSIZE=32 CONFIG_DISABLE_MQUEUE_NOTIFICATION=y CONFIG_DEFAULT_TASK_STACKSIZE=2048 CONFIG_IDLETHREAD_STACKSIZE=1024 CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 CONFIG_PTHREAD_GUARDSIZE_DEFAULT=0 CONFIG_GROUP_KILL_CHILDREN_TIMEOUT_MS=-1 CONFIG_PID_INITIAL_COUNT=16 CONFIG_ARCH_HAVE_I2CRESET=y CONFIG_DEV_NULL=y CONFIG_DEV_ZERO=y CONFIG_DEV_OPTEE_NONE=y CONFIG_DRVR_MKRD=y CONFIG_ARCH_HAVE_RDWR_MEM_CPU_RUN=y CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y CONFIG_SERIAL=y CONFIG_SERIAL_CONSOLE=y CONFIG_MCU_SERIAL=y CONFIG_STANDARD_SERIAL=y CONFIG_SERIAL_NPOLLWAITERS=4 CONFIG_LPUART1_SERIAL_CONSOLE=y CONFIG_LPUART1_SERIALDRIVER=y CONFIG_LPUART1_RXBUFSIZE=256 CONFIG_LPUART1_TXBUFSIZE=256 CONFIG_LPUART1_BAUD=115200 CONFIG_LPUART1_BITS=8 CONFIG_LPUART1_PARITY=0 CONFIG_LPUART1_2STOP=0 CONFIG_LPUART1_NOIFLOWCONTROL=y CONFIG_SYSLOG=y CONFIG_SYSLOG_DEFAULT_MASK=0xff CONFIG_SYSLOG_CRLF=y CONFIG_SYSLOG_MAX_CHANNELS=1 CONFIG_SYSLOG_DEVPATH=\/dev/ttyS1\ CONFIG_SYSLOG_DEFAULT=y CONFIG_ARCH_HAVE_PHY=y CONFIG_ARCH_PHY_INTERRUPT=y CONFIG_ARCH_HAVE_NETDEV_STATISTICS=y CONFIG_FS_NEPOLL_DESCRIPTORS=8 CONFIG_FS_LOCK_BUCKET_SIZE=0 CONFIG_SENDFILE_BUFSIZE=512 CONFIG_FS_BACKTRACE=0 CONFIG_FS_MQUEUE_VFS_PATH=\/var/mqueue\ CONFIG_FS_MQUEUE_NPOLLWAITERS=4 CONFIG_FS_ANONMAP=y CONFIG_FS_PROCFS=y CONFIG_NXFONTS_PACKEDMSFIRST=y CONFIG_MM_DEFAULT_MANAGER=y CONFIG_MM_DEFAULT_ALIGNMENT=8 CONFIG_MM_NODE_GUARDSIZE=0 CONFIG_MM_REGIONS=1 CONFIG_MM_MAP_COUNT_MAX=1024 CONFIG_MM_BACKTRACE=-1 CONFIG_MM_FREE_DELAYCOUNT_MAX=0 CONFIG_MM_HEAP_BIGGEST_COUNT=30 CONFIG_MM_HEAP_MEMPOOL_THRESHOLD=-1 CONFIG_BINFMT_ELF_RELOCATABLE=y CONFIG_STDIO_BUFFER_SIZE=64 CONFIG_STDIO_LINEBUFFER=y CONFIG_NUNGET_CHARS=2 CONFIG_LIBC_LONG_LONG=y CONFIG_ARCH_LOWPUTC=y CONFIG_LIBC_RAND_ORDER=1 CONFIG_LIBC_HOMEDIR=\/\ CONFIG_LIBC_TMPDIR=\/tmp\ CONFIG_LIBC_MAX_TMPFILE=32 CONFIG_LIBC_MAX_EXITFUNS=0 CONFIG_POSIX_SPAWN_DEFAULT_STACKSIZE=2048 CONFIG_LIBC_HOSTNAME=\\ CONFIG_LIBC_OPEN_MAX=256 CONFIG_NAME_MAX=32 CONFIG_PATH_MAX=256 CONFIG_LINE_MAX=80 CONFIG_LIBC_STRERROR_ERRNUM=y CONFIG_LIBC_NEWLIB_OPTSPEED=y CONFIG_LIBC_STRSIGNAL=y CONFIG_TLS_NELEM=0 CONFIG_TLS_TASK_NELEM=0 CONFIG_TLS_NCLEANUP=0 CONFIG_LIBC_GAISTRERROR_ERRNUM=y CONFIG_LIBC_FTOK_VFS_PATH=\/var/ftok\ CONFIG_LIBC_MEMFD_ERROR=y CONFIG_LIBC_TEMPBUFFER=y CONFIG_LIBC_MAX_TEMPBUFFER=2 CONFIG_LIBC_TEMPBUFFER_MALLOC=y CONFIG_LIBC_MUTEX_BACKTRACE=0 CONFIG_BUILTIN=y CONFIG_SYMTAB_ORDEREDBYNAME=y CONFIG_STREAM_OUT_BUFFER_SIZE=64 CONFIG_STREAM_HEXDUMP_BUFFER_SIZE=128 CONFIG_STREAM_BASE64_BUFFER_SIZE=128 CONFIG_LIBC_INLINE_QUEUE=y CONFIG_LIBM_TOOLCHAIN=y CONFIG_HAVE_CXX=y CONFIG_HAVE_CXXINITIALIZE=y CONFIG_LIBCXXMINI=y CONFIG_CXX_STANDARD=\gnu++17\ CONFIG_BUILTIN_TOOLCHAIN=y CONFIG_COVERAGE_NONE=y CONFIG_COVERAGE_DEFAULT_PREFIX_STRIP=\0\ CONFIG_COVERAGE_DEFAULT_PREFIX=\/data\ CONFIG_PROFILE_NONE=y CONFIG_BENCHMARK_THREAD_METRIC=y CONFIG_BENCHMARK_THREAD_METRIC_PREEMPTIVE_SCHEDULE=y CONFIG_BENCHMARK_THREAD_METRIC_PREEMPTIVE_SCHEDULE_PRIORITY=100 CONFIG_BENCHMARK_THREAD_METRIC_PREEMPTIVE_SCHEDULE_STACKSIZE=2048 CONFIG_BENCHMARK_THREAD_METRIC_PREEMPTIVE_SCHEDULE_PRINTS=y CONFIG_NSH_LIBRARY=y CONFIG_NSH_PROMPT_STRING=\nsh> \ CONFIG_NSH_PROMPT_MAX=32 CONFIG_NSH_PROMPT_ENV=\PS1\ CONFIG_NSH_PROMPT_SUFFIX=\> \ CONFIG_NSH_READLINE=y CONFIG_NSH_MAXARGUMENTS=7 CONFIG_NSH_NESTDEPTH=3 CONFIG_NSH_ALIAS=y CONFIG_NSH_ALIAS_MAX_AMOUNT=1 CONFIG_NSH_BUILTIN_APPS=y CONFIG_NSH_DISABLE_DATE=y CONFIG_NSH_DISABLE_LOSMART=y CONFIG_NSH_DISABLE_LOMTD=y CONFIG_NSH_DISABLE_MB=y CONFIG_NSH_DISABLE_MH=y CONFIG_NSH_DISABLE_MW=y CONFIG_NSH_DISABLE_TIMEDATECTL=y CONFIG_NSH_CODECS_BUFSIZE=128 CONFIG_NSH_PROC_MOUNTPOINT=\/proc\ CONFIG_NSH_FILEIOSIZE=512 CONFIG_NSH_SYSINITSCRIPT=\init.d/rc.sysinit\ CONFIG_NSH_INITSCRIPT=\init.d/rcS\ CONFIG_NSH_SCRIPT_REDIRECT_PATH=\\ CONFIG_NSH_CONSOLE=y CONFIG_NSH_ARCHINIT=y CONFIG_SYSTEM_DD=y CONFIG_SYSTEM_DD_PROGNAME=\dd\ CONFIG_SYSTEM_DD_PRIORITY=100 CONFIG_SYSTEM_DD_STACKSIZE=2048 CONFIG_SYSTEM_DD_STATS=y CONFIG_SYSTEM_NSH=y CONFIG_SYSTEM_NSH_PRIORITY=100 CONFIG_SYSTEM_NSH_STACKSIZE=2048 CONFIG_SYSTEM_NSH_PROGNAME=\nsh\ CONFIG_SYSTEM_READLINE=y CONFIG_READLINE_HAVE_EXTMATCH=y CONFIG_READLINE_ECHO=y Host system OS: Ubuntu 22.04.5 LTS Linux D-11128L 6.8.0-79-generic #79~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 15 16:54:53 UTC 2 x86_64 x86_64 Host system PATH: /home/kpit/.local/bin /home/kpit/.local/bin /home/kpit/.local/bin /home/kpit/.local/bin /home/kpit/.local/bin /home/kpit/.local/bin /home/kpit/.local/bin /home/kpit/.local/bin /home/kpit/zephyrproject/zephyr/scripts /home/kpit/.local/bin /home/kpit/.local/bin /home/kpit/.local/bin /home/kpit/.local/bin /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /usr/games /usr/local/games /snap/bin /home/kpit/.dotnet/tools /home/kpit/Harish/gcc-arm-none-eabi-10.3-2021.10/bin /home/kpit/Harish/gcc-arm-none-eabi-10.3-2021.10/bin ### Verification - [x] I have verified before submitting the report. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
