head 1.16; access; symbols PTH_2_0_7:1.15 PTH_2_0_6:1.14 PTH_2_0_5:1.14 PTH_2_0_4:1.14 PTH_2_0_3:1.13 PTH_2_0_2:1.13 PTH_2_0_1:1.13 PTH_2_0_0:1.12 PTH_2_0b2:1.11 PTH_2_0b1:1.11 PTH_2_0b0:1.11 PTH_1_4:1.11.0.2 PTH_1_4_1:1.11 PTH_1_4_0:1.10 PTH_1_3_7:1.9 PTH_1_4a3:1.9 PTH_1_3_6:1.9 PTH_1_4a2:1.9 PTH_1_3_5:1.9 PTH_1_4a1:1.9 PTH_1_3_4:1.9 PTH_1_3:1.9.0.2 PTH_1_3_3:1.9 PTH_1_3_2:1.9 PTH_1_3_1:1.8 PTH_1_3_0:1.8 PTH_1_3b3:1.7 PTH_1_2_3:1.3.2.1 PTH_1_3b2:1.7 PTH_1_3b1:1.7 PTH_1_3a5:1.7 PTH_1_3a4:1.7 PTH_1_3a3:1.7 PTH_1_2_2:1.3.2.1 PTH_1_3a2:1.7 PTH_1_2_1:1.3.2.1 PTH_1_3a1:1.5 PTH_1_2:1.3.0.2 PTH_1_2_0:1.3 PTH_1_2b8:1.2 PTH_1_2b7:1.2 PTH_1_1_6:1.1 PTH_1_2b6:1.2 PTH_1_2b5:1.2 PTH_1_2b4:1.2 PTH_1_2b3:1.2 PTH_1_2b2:1.1 PTH_1_2b1:1.1 PTH_1_1_5:1.1 PTH_1_1:1.1.0.2 PTH_1_1_4:1.1 PTH_1_1_3:1.1 PTH_1_1_2:1.1 PTH_1_1_1:1.1 PTH_1_1_0:1.1 PTH_1_1b7:1.1 PTH_1_1b6:1.1 PTH_1_1b5:1.1 PTH_1_1b4:1.1 PTH_1_1b3:1.1 PTH_1_1b2:1.1 PTH_1_1b1:1.1; locks; strict; comment @ * @; 1.16 date 2007.01.01.18.23.53; author rse; state Exp; branches; next 1.15; commitid 9DhdiirNzQPBIP0s; 1.15 date 2006.06.08.17.54.54; author rse; state Exp; branches; next 1.14; commitid x8N3mLVdQgkbdeAr; 1.14 date 2004.12.31.19.34.45; author rse; state Exp; branches; next 1.13; 1.13 date 2004.07.13.10.50.49; author rse; state Exp; branches; next 1.12; 1.12 date 2003.01.01.15.49.12; author rse; state Exp; branches; next 1.11; 1.11 date 2002.01.27.11.03.41; author rse; state Exp; branches; next 1.10; 1.10 date 2001.03.24.14.51.05; author rse; state Exp; branches; next 1.9; 1.9 date 2000.02.24.12.35.01; author rse; state Exp; branches; next 1.8; 1.8 date 2000.02.19.16.08.11; author rse; state Exp; branches; next 1.7; 1.7 date 99.12.30.21.59.02; author rse; state Exp; branches; next 1.6; 1.6 date 99.11.09.08.11.33; author rse; state Exp; branches; next 1.5; 1.5 date 99.11.01.19.03.49; author rse; state Exp; branches; next 1.4; 1.4 date 99.11.01.10.27.21; author rse; state Exp; branches; next 1.3; 1.3 date 99.10.31.11.46.14; author rse; state Exp; branches 1.3.2.1; next 1.2; 1.2 date 99.09.17.08.01.56; author rse; state Exp; branches; next 1.1; 1.1 date 99.08.03.12.56.35; author rse; state Exp; branches; next ; 1.3.2.1 date 99.11.01.10.25.03; author rse; state Exp; branches; next ; desc @@ 1.16 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_sfio.c: Pth test program (Sfio support) */ /* ``No, I'm not going to explain it. If you can't figure it out, you didn't want to know anyway...'' -- Larry Wall */ #include #include #include #include "pth.h" #if PTH_EXT_SFIO /* a worker thread */ static void *worker(void *_dummy) { char line[1024]; int c; int i; for (;;) { i = 0; while (!sfeof(sfstdin)) { c = sfgetc(sfstdin); if (c == '\n') { line[i] = '\0'; break; } line[i++] = (char)c; } sfprintf(sfstderr, "you entered '%s' on sfstdin\n", line); } return NULL; } /* a useless ticker thread */ static void *ticker(void *_arg) { time_t now; sfprintf(sfstderr, "ticker: start\n"); for (;;) { pth_sleep(5); now = time(NULL); sfprintf(sfstderr, "ticker was woken up on %s", ctime(&now)); } /* NOTREACHED */ return NULL; } int main(int argc, char *argv[]) { Sfdisc_t *disc; pth_attr_t a; pth_t w; pth_t t; pth_init(); /* get an Sfio discipline for Pth */ if ((disc = pth_sfiodisc()) == NULL) { perror("pth_sfioiodc"); exit(1); } /* push it onto Sfio's input/output streams */ if (sfdisc(sfstdin, disc) != disc) { perror("sfdisc"); exit(1); } if (sfdisc(sfstdout, disc) != disc) { perror("sfdisc"); exit(1); } sfprintf(sfstderr, "This is TEST_SFIO, a Pth test using Sfio disciplines.\n"); sfprintf(sfstderr, "\n"); sfprintf(sfstderr, "Stdout/Stdin are connected to Sfio streams with a Pth\n"); sfprintf(sfstderr, "discipline on top of the streams in order to use Pth's\n"); sfprintf(sfstderr, "I/O operations. It demonstrates that the process this\n"); sfprintf(sfstderr, "way does not block. Instead only one thread blocks.\n"); sfprintf(sfstderr, "\n"); a = pth_attr_new(); pth_attr_set(a, PTH_ATTR_NAME, "worker"); pth_attr_set(a, PTH_ATTR_JOINABLE, FALSE); pth_attr_set(a, PTH_ATTR_STACK_SIZE, 16*1024); w = pth_spawn(a, worker, NULL); pth_attr_set(a, PTH_ATTR_NAME, "ticker"); t = pth_spawn(a, ticker, NULL); pth_attr_destroy(a); pth_exit(NULL); return 0; } #else int main(int argc, char *argv[]) { fprintf(stderr, "You have to build Pth with --with-sfio to run this test!\n"); return 0; } #endif @ 1.15 log @Adjusted all copyright messages for new year 2006 @ text @d3 1 a3 1 ** Copyright (c) 1999-2006 Ralf S. Engelschall @ 1.14 log @Adjusted all copyright messages for new year 2005. @ text @d3 1 a3 1 ** Copyright (c) 1999-2005 Ralf S. Engelschall @ 1.13 log @Adjusted all copyright messages for new year 2004. @ text @d3 1 a3 1 ** Copyright (c) 1999-2004 Ralf S. Engelschall @ 1.12 log @Adjusted all copyright messages for new year 2003. @ text @d3 1 a3 1 ** Copyright (c) 1999-2003 Ralf S. Engelschall @ 1.11 log @bump copyright year @ text @d3 1 a3 1 ** Copyright (c) 1999-2002 Ralf S. Engelschall @ 1.10 log @*** empty log message *** @ text @d3 1 a3 1 ** Copyright (c) 1999-2001 Ralf S. Engelschall @ 1.9 log @*** empty log message *** @ text @d3 1 a3 1 ** Copyright (c) 1999-2000 Ralf S. Engelschall @ 1.8 log @*** empty log message *** @ text @d44 1 a44 1 while (1) { @ 1.7 log @*** empty log message *** @ text @d69 1 a69 1 /* NOT REACHED */ @ 1.6 log @*** empty log message *** @ text @d3 1 a3 1 ** Copyright (c) 1999 Ralf S. Engelschall @ 1.5 log @*** empty log message *** @ text @d25 2 a26 2 /* ``No, I'm not going to explain it. If you can't figure it out, you d73 1 a73 1 int main(int argc, char *argv[]) d79 1 a79 1 d114 1 a114 1 d122 2 a123 2 int main(int argc, char *argv[]) { @ 1.4 log @*** empty log message *** @ text @d25 4 a28 1 @ 1.3 log @*** empty log message *** @ text @d2 1 a2 2 ** test_sfio.c -- Pth test program (Sfio support) ** d22 2 @ 1.3.2.1 log @*** empty log message *** @ text @d2 2 a3 1 ** GNU Pth - The GNU Portable Threads a22 2 ** ** test_sfio.c: Pth test program (Sfio support) @ 1.2 log @*** empty log message *** @ text @d12 1 a12 1 ** version 2 of the License, or (at your option) any later version. @ 1.1 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 @