Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Side by Side Diff: gdb/testsuite/gdb.threads/step.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/testsuite/gdb.threads/staticthreads.exp ('k') | gdb/testsuite/gdb.threads/step.exp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /* step.c for step.exp */
2 #include <ipc.h>
3 #include <pthread.h>
4 #include <st.h>
5 #include <signal.h>
6 #include <stdio.h>
7
8 void alarm_handler ();
9 void alarm_handler1 ();
10 void alarm_handler2 ();
11 void thread1 ();
12 void thread2 ();
13
14 #define TIME_LIMIT 30
15
16
17 int count1 = 0;
18 int count2 = 0;
19
20 pthread_t tid1, tid2;
21 pthread_attr_t attr1, attr2;
22
23 pthread_mutex_t mut;
24 pthread_mutexattr_t mut_attr;
25
26 pthread_condattr_t cv_attr_a, cv_attr_b;
27 pthread_cond_t cv_a, cv_b;
28
29 struct cv_struct
30 {
31 char a;
32 char b;
33 }
34 test_struct;
35
36 main ()
37 {
38 /*init la struct */
39 test_struct.a = 0;
40 test_struct.b = 1;
41
42 /* create le mutex */
43 if (pthread_mutexattr_create (&mut_attr) == -1)
44 {
45 perror ("mutexattr_create");
46 exit (1);
47 }
48
49
50 if (pthread_mutex_init (&mut, mut_attr) == -1)
51 {
52 perror ("mutex_init");
53 exit (1);
54 }
55
56 /* create 2 cv */
57 if (pthread_condattr_create (&cv_attr_a) == -1)
58 {
59 perror ("condattr_create(1)");
60 exit (1);
61 }
62
63 if (pthread_cond_init (&cv_a, cv_attr_a) == -1)
64 {
65 perror ("cond_init(1)");
66 exit (1);
67 }
68
69 if (pthread_condattr_create (&cv_attr_b) == -1)
70 {
71 perror ("condattr_create(2)");
72 exit (1);
73 }
74
75 if (pthread_cond_init (&cv_b, cv_attr_b) == -1)
76 {
77 perror ("cond_init(2)");
78 exit (1);
79 }
80
81 /* create 2 threads of execution */
82 if (pthread_attr_create (&attr1) == -1)
83 {
84 perror ("attr_create(1)");
85 exit (1);
86 }
87
88 if (pthread_create (&tid1, attr1, thread1, &count1) == -1)
89 {
90 perror ("pthread_create(1)");
91 exit (1);
92 }
93
94 if (pthread_attr_create (&attr2) == -1)
95 {
96 perror ("attr_create(2)");
97 exit (1);
98 }
99
100 if (pthread_create (&tid2, attr2, thread2, &count2) == -1)
101 {
102 perror ("pthread_create(2)");
103 exit (1);
104 }
105
106 /* set alarm to print out data and exit */
107 signal (SIGALRM, alarm_handler);
108 alarm (TIME_LIMIT);
109
110 for (;;)
111 pause ();
112 }
113
114 void
115 thread1 (count)
116 int *count;
117 {
118 tid_t tid;
119
120 tid = getstid ();
121 printf ("Thread1 tid 0x%x (%d) \n", tid, tid);
122 printf ("Thread1 @tid=0x%x \n", &tid);
123 signal (SIGALRM, alarm_handler1);
124
125 for (;;)
126 {
127 if (pthread_mutex_lock (&mut) == -1)
128 {
129 perror ("pthread_mutex_lock(1)");
130 pthread_exit ((void *) 0);
131 }
132
133 while (test_struct.a == 0)
134 {
135 if (pthread_cond_wait (&cv_a, &mut) == -1)
136 {
137 perror ("pthread_cond_wait(1)");
138 pthread_exit ((void *) -1);
139 }
140 }
141
142 (*count)++;
143 printf ("*******thread1 count %d\n", *count);
144
145 test_struct.a = 0;
146
147 test_struct.b = 1;
148 pthread_cond_signal (&cv_b);
149
150 if (pthread_mutex_unlock (&mut) == -1)
151 {
152 perror ("pthread_mutex_unlock(1)");
153 pthread_exit ((void *) -1);
154 }
155 }
156 }
157
158 void
159 thread2 (count)
160 int *count;
161 {
162 tid_t tid;
163
164 tid = getstid ();
165 printf ("Thread2 tid 0x%x (%d) \n", tid, tid);
166 printf ("Thread1 @tid=0x%x \n", &tid);
167 signal (SIGALRM, alarm_handler2);
168
169 for (;;)
170 {
171 if (pthread_mutex_lock (&mut) == -1)
172 {
173 perror ("pthread_mutex_lock(2)");
174 pthread_exit ((void *) 0);
175 }
176
177 while (test_struct.b == 0)
178 {
179 if (pthread_cond_wait (&cv_b, &mut) == -1)
180 {
181 perror ("pthread_cond_wait(2)");
182 pthread_exit ((void *) -1);
183 }
184 }
185
186 (*count)++;
187 printf ("*******thread2 count %d\n", *count);
188
189 test_struct.b = 0;
190
191 test_struct.a = 1;
192 pthread_cond_signal (&cv_a);
193
194 if (pthread_mutex_unlock (&mut) == -1)
195 {
196 perror ("pthread_mutex_unlock(2)");
197 pthread_exit ((void *) -1);
198 }
199 }
200 }
201
202
203 void
204 alarm_handler ()
205 {
206 printf ("\tcount1 (%d) \n\tcount2 (%d)\n", count1, count2);
207 exit (0);
208 }
209
210 void
211 alarm_handler1 ()
212 {
213 printf ("ALARM thread 1\n");
214 }
215
216 void
217 alarm_handler2 ()
218 {
219 printf ("ALARM thread 2\n");
220 pthread_exit ((void *) 0);
221 }
OLDNEW
« no previous file with comments | « gdb/testsuite/gdb.threads/staticthreads.exp ('k') | gdb/testsuite/gdb.threads/step.exp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698