OSDN Git Service

Replace FSF snail mail address with URLs
[uclinux-h8/uClibc.git] / test / nptl / tst-sched1.c
1 /* Copyright (C) 2003 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
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    <http://www.gnu.org/licenses/>.  */
18
19 #include <pthread.h>
20 #include <stdio.h>
21 #include <unistd.h>
22 #include <sys/types.h>
23
24
25 static int global;
26
27 static void *
28 tf (void *a)
29 {
30   global = 1;
31
32   return 0;
33 }
34
35
36 int
37 do_test (void)
38 {
39   pthread_t th;
40   pthread_attr_t at;
41
42   if (pthread_attr_init (&at) != 0)
43     {
44       puts ("attr_init failed");
45       return 1;
46     }
47
48   if (pthread_attr_setschedpolicy (&at, SCHED_OTHER) != 0)
49     {
50       puts ("attr_setschedpolicy failed");
51       return 1;
52     }
53
54   struct sched_param pa;
55   if (sched_getparam (getpid (), &pa) != 0)
56     {
57       puts ("sched_getschedparam failed");
58       return 1;
59     }
60
61   if (pthread_attr_setschedparam (&at, &pa) != 0)
62     {
63       puts ("attr_setschedparam failed");
64       return 1;
65     }
66
67   if (pthread_attr_setinheritsched (&at, PTHREAD_EXPLICIT_SCHED) != 0)
68     {
69       puts ("attr_setinheritsched failed");
70       return 1;
71     }
72
73   if (pthread_create (&th, &at, tf, NULL) != 0)
74     {
75       puts ("create failed");
76       return 1;
77     }
78
79   int e = pthread_join (th, NULL);
80   if (e != 0)
81     {
82       printf ("join failed: %d\n", e);
83       return 1;
84     }
85
86   if (global == 0)
87     {
88       puts ("thread didn't run");
89       return 1;
90     }
91
92   return 0;
93 }
94
95
96 #define TEST_FUNCTION do_test ()
97 #include "../test-skeleton.c"