head 1.19; access; symbols PTH_2_0_7:1.18 PTH_2_0_6:1.17 PTH_2_0_5:1.17 PTH_2_0_4:1.17 PTH_2_0_3:1.16 PTH_2_0_2:1.16 PTH_2_0_1:1.16 PTH_2_0_0:1.15 PTH_2_0b2:1.14 PTH_2_0b1:1.14 PTH_2_0b0:1.14 PTH_1_4:1.13.0.2 PTH_1_4_1:1.13 PTH_1_4_0:1.12 PTH_1_3_7:1.11 PTH_1_4a3:1.11 PTH_1_3_6:1.11 PTH_1_4a2:1.11 PTH_1_3_5:1.11 PTH_1_4a1:1.11 PTH_1_3_4:1.11 PTH_1_3:1.11.0.2 PTH_1_3_3:1.11 PTH_1_3_2:1.11 PTH_1_3_1:1.11 PTH_1_3_0:1.11 PTH_1_3b3:1.11 PTH_1_2_3:1.8.2.1 PTH_1_3b2:1.11 PTH_1_3b1:1.11 PTH_1_3a5:1.11 PTH_1_3a4:1.11 PTH_1_3a3:1.11 PTH_1_2_2:1.8.2.1 PTH_1_3a2:1.11 PTH_1_2_1:1.8.2.1 PTH_1_3a1:1.9 PTH_1_2:1.8.0.2 PTH_1_2_0:1.8 PTH_1_2b8:1.7 PTH_1_2b7:1.7 PTH_1_1_6:1.6 PTH_1_2b6:1.7 PTH_1_2b5:1.7 PTH_1_2b4:1.7 PTH_1_2b3:1.7 PTH_1_2b2:1.6 PTH_1_2b1:1.6 PTH_1_1_5:1.6 PTH_1_0_6:1.3 PTH_1_0_5:1.3 PTH_1_0:1.3.0.2 PTH_1_1:1.6.0.2 PTH_1_1_4:1.6 PTH_1_1_3:1.6 PTH_1_1_2:1.6 PTH_1_1_1:1.6 PTH_1_1_0:1.6 PTH_1_1b7:1.6 PTH_1_1b6:1.6 PTH_1_1b5:1.6 PTH_1_1b4:1.4 PTH_1_1b3:1.4 PTH_1_1b2:1.3 PTH_1_1b1:1.3 PTH_1_0_4:1.3 PTH_1_0_3:1.3 PTH_1_0_2:1.3 PTH_1_0_1:1.3 PTH_1_0_0:1.2 PTH_1_0b8:1.2 PTH_1_0b7:1.2 PTH_1_0b6:1.2 PTH_1_0b5:1.2 PTH_1_0b4:1.2 PTH_1_0b3:1.2 PTH_1_0b2:1.1; locks; strict; comment @ * @; 1.19 date 2007.01.01.18.23.53; author rse; state Exp; branches; next 1.18; commitid 9DhdiirNzQPBIP0s; 1.18 date 2006.06.08.17.54.54; author rse; state Exp; branches; next 1.17; commitid x8N3mLVdQgkbdeAr; 1.17 date 2004.12.31.19.34.45; author rse; state Exp; branches; next 1.16; 1.16 date 2004.07.13.10.50.49; author rse; state Exp; branches; next 1.15; 1.15 date 2003.01.01.15.49.12; author rse; state Exp; branches; next 1.14; 1.14 date 2002.11.03.09.24.42; author rse; state Exp; branches; next 1.13; 1.13 date 2002.01.27.11.03.41; author rse; state Exp; branches; next 1.12; 1.12 date 2001.03.24.14.51.05; author rse; state Exp; branches; next 1.11; 1.11 date 99.12.30.21.59.02; author rse; state Exp; branches; next 1.10; 1.10 date 99.11.09.08.11.32; author rse; state Exp; branches; next 1.9; 1.9 date 99.11.01.10.27.21; author rse; state Exp; branches; next 1.8; 1.8 date 99.10.31.11.46.14; author rse; state Exp; branches 1.8.2.1; next 1.7; 1.7 date 99.09.17.08.01.56; author rse; state Exp; branches; next 1.6; 1.6 date 99.08.17.08.08.36; author rse; state Exp; branches; next 1.5; 1.5 date 99.08.15.15.20.35; author rse; state Exp; branches; next 1.4; 1.4 date 99.08.11.09.05.38; author rse; state Exp; branches; next 1.3; 1.3 date 99.07.22.15.04.56; author rse; state Exp; branches; next 1.2; 1.2 date 99.07.06.09.22.52; author rse; state Exp; branches; next 1.1; 1.1 date 99.07.04.12.17.32; author rse; state Exp; branches; next ; 1.8.2.1 date 99.11.01.10.25.03; author rse; state Exp; branches; next ; desc @@ 1.19 log @Adjusted all copyright messages for new year 2007. @ text @/* ** GNU Pth - The GNU Portable Threads ** Copyright (c) 1999-2007 Ralf S. Engelschall ** ** This file is part of GNU Pth, a non-preemptive thread scheduling ** library which can be found at http://www.gnu.org/software/pth/. ** ** This 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. ** ** This 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 this library; if not, write to the Free Software ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ** USA, or contact Ralf S. Engelschall . ** ** test_pthread.c: Pth test program (pthread API) */ /* ``You can check out any time you like, but you can never leave.'' -- The Eagles, Hotel California */ #ifdef GLOBAL #include #else #include "pthread.h" #endif #include #include #include #include #include #define die(str) \ do { \ fprintf(stderr, "**die: %s: errno=%d\n", str, errno); \ exit(1); \ } while (0) static void *child(void *_arg) { char *name = (char *)_arg; int i; fprintf(stderr, "child: startup %s\n", name); for (i = 0; i < 100; i++) { if (i++ % 10 == 0) sleep(1); fprintf(stderr, "child: %s counts i=%d\n", name, i); } fprintf(stderr, "child: shutdown %s\n", name); return _arg; } int main(int argc, char *argv[]) { pthread_attr_t thread_attr; pthread_t thread[4]; char *rc; fprintf(stderr, "main: init\n"); fprintf(stderr, "main: initializing attribute object\n"); if (pthread_attr_init(&thread_attr) != 0) die("pthread_attr_init"); if (pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_JOINABLE) != 0) die("pthread_attr_setdetachstate"); fprintf(stderr, "main: create thread 1\n"); if (pthread_create(&thread[0], &thread_attr, child, (void *)"foo") != 0) die("pthread_create"); fprintf(stderr, "main: create thread 2\n"); if (pthread_create(&thread[1], &thread_attr, child, (void *)"bar") != 0) die("pthread_create"); fprintf(stderr, "main: create thread 3\n"); if (pthread_create(&thread[2], &thread_attr, child, (void *)"baz") != 0) die("pthread_create"); fprintf(stderr, "main: create thread 4\n"); if (pthread_create(&thread[3], &thread_attr, child, (void *)"quux") != 0) die("pthread_create"); fprintf(stderr, "main: destroying attribute object\n"); if (pthread_attr_destroy(&thread_attr) != 0) die("pthread_attr_destroy"); sleep(3); fprintf(stderr, "main: joining...\n"); if (pthread_join(thread[0], (void **)&rc) != 0) die("pthread_join"); fprintf(stderr, "main: joined thread: %s\n", rc); if (pthread_join(thread[1], (void **)&rc) != 0) die("pthread_join"); fprintf(stderr, "main: joined thread: %s\n", rc); if (pthread_join(thread[2], (void **)&rc) != 0) die("pthread_join"); fprintf(stderr, "main: joined thread: %s\n", rc); if (pthread_join(thread[3], (void **)&rc) != 0) die("pthread_join"); fprintf(stderr, "main: joined thread: %s\n", rc); fprintf(stderr, "main: exit\n"); return 0; } @ 1.18 log @Adjusted all copyright messages for new year 2006 @ text @d3 1 a3 1 ** Copyright (c) 1999-2006 Ralf S. Engelschall @ 1.17 log @Adjusted all copyright messages for new year 2005. @ text @d3 1 a3 1 ** Copyright (c) 1999-2005 Ralf S. Engelschall @ 1.16 log @Adjusted all copyright messages for new year 2004. @ text @d3 1 a3 1 ** Copyright (c) 1999-2004 Ralf S. Engelschall @ 1.15 log @Adjusted all copyright messages for new year 2003. @ text @d3 1 a3 1 ** Copyright (c) 1999-2003 Ralf S. Engelschall @ 1.14 log @add a bunch of cookies @ text @d3 1 a3 1 ** Copyright (c) 1999-2002 Ralf S. Engelschall @ 1.13 log @bump copyright year @ text @d25 3 a27 1 @ 1.12 log @*** empty log message *** @ text @d3 1 a3 1 ** Copyright (c) 1999-2001 Ralf S. Engelschall @ 1.11 log @*** empty log message *** @ text @d3 1 a3 1 ** Copyright (c) 1999-2000 Ralf S. Engelschall @ 1.10 log @*** empty log message *** @ text @d3 1 a3 1 ** Copyright (c) 1999 Ralf S. Engelschall @ 1.9 log @*** empty log message *** @ text @d59 1 a59 1 int main(int argc, char *argv[]) d72 1 a72 1 @ 1.8 log @*** empty log message *** @ text @d2 1 a2 2 ** test_pthread.c -- Pth test program (pthread API) ** d22 2 @ 1.8.2.1 log @*** empty log message *** @ text @d2 2 a3 1 ** GNU Pth - The GNU Portable Threads a22 2 ** ** test_pthread.c: Pth test program (pthread API) @ 1.7 log @*** empty log message *** @ text @d12 1 a12 1 ** version 2 of the License, or (at your option) any later version. @ 1.6 log @*** empty log message *** @ text @d10 1 a10 1 ** modify it under the terms of the GNU Library General Public d17 1 a17 1 ** Library General Public License for more details. d19 1 a19 1 ** You should have received a copy of the GNU Library General Public @ 1.5 log @*** empty log message *** @ text @d73 1 a73 1 if (pthread_create(&thread[0], &thread_attr, child, "foo") != 0) d76 1 a76 1 if (pthread_create(&thread[1], &thread_attr, child, "bar") != 0) d79 1 a79 1 if (pthread_create(&thread[2], &thread_attr, child, "baz") != 0) d82 1 a82 1 if (pthread_create(&thread[3], &thread_attr, child, "quux") != 0) @ 1.4 log @*** empty log message *** @ text @d39 1 a39 1 fprintf(stderr, "**die: %s: %s\n", str, strerror(errno)); \ @ 1.3 log @*** empty log message *** @ text @d25 6 a35 6 #ifdef GLOBAL #include #else #include "pthread.h" #endif @ 1.2 log @*** empty log message *** @ text @d1 23 d37 5 a41 4 #define die(str) do { \ fprintf(stderr, "**die: %s: %s\n", str, strerror(errno)); \ exit(1); \ } while (0) @ 1.1 log @*** empty log message *** @ text @d5 1 d7 4 d12 1 @