diff options
author | Joseph Myers <josmyers@redhat.com> | 2024-10-29 17:35:21 +0000 |
---|---|---|
committer | Joseph Myers <josmyers@redhat.com> | 2024-10-29 17:35:21 +0000 |
commit | 36b549924b259dca39a66c2281b157d8e97bd676 (patch) | |
tree | 1d9b6814221626d340b825bd890607c20710dfd8 /nptl | |
parent | 7fe1fde499507126f7de10ebf12fecaf77ae6602 (diff) | |
download | glibc-36b549924b259dca39a66c2281b157d8e97bd676.tar.gz glibc-36b549924b259dca39a66c2281b157d8e97bd676.tar.xz glibc-36b549924b259dca39a66c2281b157d8e97bd676.zip |
Add more tests of pthread attributes initial values
There are various existing tests that call pthread_attr_init and then verify properties of the resulting initial values retrieved with pthread_attr_get* functions. However, those are missing coverage of the initial values retrieved with pthread_attr_getschedparam and pthread_attr_getstacksize. Add testing for initial values from those functions as well. (tst-attr2 covers pthread_attr_getdetachstate, pthread_attr_getguardsize, pthread_attr_getinheritsched, pthread_attr_getschedpolicy, pthread_attr_getscope. tst-attr3 covers some of those together with pthread_attr_getaffinity_np. tst-pthread-attr-sigmask covers pthread_attr_getsigmask_np. pthread_attr_getstack has unspecified results if called before the relevant attributes have been set, while pthread_attr_getstackaddr is deprecated.) Tested for x86_64.
Diffstat (limited to 'nptl')
-rw-r--r-- | nptl/Makefile | 1 | ||||
-rw-r--r-- | nptl/tst-attr4.c | 62 |
2 files changed, 63 insertions, 0 deletions
diff --git a/nptl/Makefile b/nptl/Makefile index bf4c29b6ed..ceb91afafc 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -276,6 +276,7 @@ LDLIBS-tst-minstack-throw = -lstdc++ tests = \ tst-attr2 \ tst-attr3 \ + tst-attr4 \ tst-cancel4_1 \ tst-cancel4_2 \ tst-cancel7 \ diff --git a/nptl/tst-attr4.c b/nptl/tst-attr4.c new file mode 100644 index 0000000000..c53781e7f3 --- /dev/null +++ b/nptl/tst-attr4.c @@ -0,0 +1,62 @@ +/* Test initial values of pthread attributes. + Copyright (C) 2024 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#include <sched.h> +#include <stdio.h> +#include <stdint.h> + +#include <support/check.h> +#include <support/test-driver.h> +#include <support/xthread.h> + + +int +do_test (void) +{ + pthread_attr_t a; + int ret; + + xpthread_attr_init (&a); + + size_t stacksize = 0; + verbose_printf ("testing default stack size\n"); + ret = pthread_attr_getstacksize (&a, &stacksize); + TEST_VERIFY_EXIT (ret == 0); + TEST_VERIFY (stacksize >= PTHREAD_STACK_MIN); + TEST_VERIFY (stacksize <= SIZE_MAX / 2); + + int policy; + verbose_printf ("testing default scheduler parameters\n"); + ret = pthread_attr_getschedpolicy (&a, &policy); + TEST_VERIFY_EXIT (ret == 0); + struct sched_param param; + ret = pthread_attr_getschedparam (&a, ¶m); + TEST_VERIFY_EXIT (ret == 0); + int min = sched_get_priority_min (policy); + TEST_VERIFY (min != -1); + int max = sched_get_priority_max (policy); + TEST_VERIFY (max != -1); + TEST_VERIFY (param.sched_priority >= min); + TEST_VERIFY (param.sched_priority <= max); + + xpthread_attr_destroy (&a); + + return 0; +} + +#include <support/test-driver.c> |