diff --git a/lib/posix/options/Kconfig.semaphore b/lib/posix/options/Kconfig.semaphore index b6b839c9b1fe4..b2640d970411a 100644 --- a/lib/posix/options/Kconfig.semaphore +++ b/lib/posix/options/Kconfig.semaphore @@ -33,4 +33,7 @@ config POSIX_SEM_NAMELEN_MAX Maximum length of name for a named semaphore. The max value of 255 corresponds to {NAME_MAX}. +config HEAP_MEM_POOL_ADD_SIZE_POSIX_SEMAPHORES + def_int 256 + endif # POSIX_SEMAPHORES diff --git a/tests/posix/semaphores/prj.conf b/tests/posix/semaphores/prj.conf index 5376678d6a907..49b867610a0ce 100644 --- a/tests/posix/semaphores/prj.conf +++ b/tests/posix/semaphores/prj.conf @@ -3,3 +3,7 @@ CONFIG_ZTEST=y CONFIG_POSIX_AEP_CHOICE_BASE=y CONFIG_POSIX_SEMAPHORES=y + +CONFIG_DYNAMIC_THREAD=y +CONFIG_DYNAMIC_THREAD_POOL_SIZE=2 +CONFIG_THREAD_STACK_INFO=y diff --git a/tests/posix/semaphores/src/main.c b/tests/posix/semaphores/src/main.c index 228165fb131f0..c99e0fca1e95b 100644 --- a/tests/posix/semaphores/src/main.c +++ b/tests/posix/semaphores/src/main.c @@ -13,6 +13,12 @@ #include #include +#define WAIT_TIME_MS 100 +BUILD_ASSERT(WAIT_TIME_MS > 0, "WAIT_TIME_MS must be posistive"); + +/* based on the current structure of this unit test */ +BUILD_ASSERT(CONFIG_DYNAMIC_THREAD_POOL_SIZE >= 2, "CONFIG_DYNAMIC_THREAD_POOL_SIZE must be >= 2"); + static void *child_func(void *p1) { sem_t *sem = (sem_t *)p1; @@ -51,11 +57,10 @@ static void semaphore_test(sem_t *sem) zassert_equal(clock_gettime(CLOCK_REALTIME, &abstime), 0, "clock_gettime failed"); - abstime.tv_sec += 5; + abstime.tv_sec += WAIT_TIME_MS / MSEC_PER_SEC; + abstime.tv_nsec += (WAIT_TIME_MS % MSEC_PER_SEC) * NSEC_PER_MSEC; - /* TESPOINT: Wait for 5 seconds and acquire sema given - * by thread1 - */ + /* TESPOINT: Wait to acquire sem given by thread1 */ zassert_equal(sem_timedwait(sem, &abstime), 0); /* TESTPOINT: Semaphore is already acquired, check if @@ -71,9 +76,7 @@ static void semaphore_test(sem_t *sem) zassert_equal(sem_getvalue(sem, &val), 0); zassert_equal(val, 1); - zassert_equal(sem_destroy(sem), -1, - "acquired semaphore" - " is destroyed"); + zassert_equal(sem_destroy(sem), -1, "acquired semaphore is destroyed"); zassert_equal(errno, EBUSY); /* TESTPOINT: take semaphore which is initialized with 1 */ @@ -312,14 +315,4 @@ ZTEST(posix_semaphores, test_named_semaphore) zassert_equal(nsem_get_list_len(), 0); } -static void before(void *arg) -{ - ARG_UNUSED(arg); - - if (!IS_ENABLED(CONFIG_DYNAMIC_THREAD)) { - /* skip redundant testing if there is no thread pool / heap allocation */ - ztest_test_skip(); - } -} - -ZTEST_SUITE(posix_semaphores, NULL, NULL, before, NULL, NULL); +ZTEST_SUITE(posix_semaphores, NULL, NULL, NULL, NULL, NULL);