diff --git a/tests/posix/common/src/pthread.c b/tests/posix/common/src/pthread.c index f3facdf86861d0f..5a856057cec34f5 100644 --- a/tests/posix/common/src/pthread.c +++ b/tests/posix/common/src/pthread.c @@ -539,6 +539,33 @@ ZTEST(pthread, test_pthread_testcancel) zassert_false(testcancel_failed); } +static void *test_pthread_setschedprio_fn(void *arg) +{ + pthread_t self; + int prio = K_LOWEST_APPLICATION_THREAD_PRIO; + int policy; + struct sched_param getschedparam; + + getschedparam.sched_priority = K_HIGHEST_APPLICATION_THREAD_PRIO; + + self = pthread_self(); + + zassert_equal(pthread_setschedprio(self, PRIO_INVALID), EINVAL, "EINVAL was expected"); + zassert_equal(pthread_setschedprio(PTHREAD_INVALID, prio), ESRCH, "ESRCH was expected"); + + zassert_ok(pthread_setschedprio(self, prio)); + zassert_ok(pthread_getschedparam(self, &policy, &getschedparam)); + zassert_equal(getschedparam.sched_priority, prio, "Priority unchanged"); +} + +ZTEST(pthread, test_pthread_setschedprio) +{ + pthread_t th; + + zassert_ok(pthread_create(&th, NULL, test_pthread_setschedprio_fn, NULL)); + zassert_ok(pthread_join(th, NULL)); +} + static void before(void *arg) { ARG_UNUSED(arg); diff --git a/tests/posix/headers/src/pthread_h.c b/tests/posix/headers/src/pthread_h.c index 2f6a7942092b384..66895ec549a4589 100644 --- a/tests/posix/headers/src/pthread_h.c +++ b/tests/posix/headers/src/pthread_h.c @@ -151,7 +151,7 @@ ZTEST(posix_headers, test_pthread_h) zassert_not_null(pthread_setcanceltype); zassert_not_null(pthread_setconcurrency); zassert_not_null(pthread_setschedparam); - /* zassert_not_null(pthread_setschedprio); */ /* not implemented */ + zassert_not_null(pthread_setschedprio); zassert_not_null(pthread_setspecific); zassert_not_null(pthread_spin_destroy); zassert_not_null(pthread_spin_init);