1 /* C11 threads thread detach tests. 2 Copyright (C) 2018-2021 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #include <threads.h> 20 #include <time.h> 21 #include <stdio.h> 22 #include <unistd.h> 23 24 #include <support/check.h> 25 26 static int detach_thrd(void * arg)27detach_thrd (void *arg) 28 { 29 if (thrd_detach (thrd_current ()) != thrd_success) 30 FAIL_EXIT1 ("thrd_detach failed"); 31 thrd_exit (thrd_success); 32 } 33 34 static int do_test(void)35do_test (void) 36 { 37 thrd_t id; 38 39 /* Create new thread. */ 40 if (thrd_create (&id, detach_thrd, NULL) != thrd_success) 41 FAIL_EXIT1 ("thrd_create failed"); 42 43 /* Give some time so the thread can finish. */ 44 thrd_sleep (&(struct timespec) {.tv_sec = 2}, NULL); 45 46 if (thrd_join (id, NULL) == thrd_success) 47 FAIL_EXIT1 ("thrd_join succeed where it should fail"); 48 49 return 0; 50 } 51 52 #include <support/test-driver.c> 53