Remove unused Makefile.
[platform/upstream/glibc.git] / nptl / ChangeLog
1 2012-02-15  Marek Polacek  <polacek@redhat.com>
2
3         * sysdeps/unix/sysv/linux/x86_64/Makefile: Remove file.
4
5 2012-02-09  Paul Eggert  <eggert@cs.ucla.edu>
6
7         Replace FSF snail mail address with URLs, as per GNU coding standards.
8
9 2012-02-08  Andreas Schwab  <schwab@linux-m68k.org>
10
11         * Makefile (extra-objs) [crti.S in sysdirs]: Add pt-crti.o.
12
13 2012-02-08  Joseph Myers  <joseph@codesourcery.com>
14
15         Support crti.S and crtn.S provided directly by architectures.
16         * Makefile [crti.S in sysdirs] (omit-deps): Do not append.
17         [crti.S in sysdirs] (CFLAGS-pt-initfini.s): Do not define variable.
18         [crti.S in sysdirs] ($(objpfx)pt-initfini.s): Disable rule.
19         [crti.S in sysdirs] ($(objpfx)crti.S): Likewise.
20         [crti.S in sysdirs] ($(objpfx)crtn.S): Likewise.
21         [crti.S in sysdirs] ($(objpfx)defs.h): Likewise.
22         [crti.S in sysdirs] ($(objpfx)crti.o): Likewise.
23         [crti.S in sysdirs] ($(objpfx)crtn.o): Likewise.
24         [crti.S in sysdirs] (pt-initfini.c): Remove vpath directive.
25         [crti.S in sysdirs] ($(objpfx)crti.o): New rule.
26         * pt-crti.S: New file.
27         * sysdeps/unix/sysv/linux/i386/Makefile: Remove file.
28
29 2012-02-03  Joseph Myers  <joseph@codesourcery.com>
30
31         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use
32         macros for PIC register setup.
33         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
34         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
35         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
36         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
37         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise.
38
39 2012-01-11  Marek Polacek  <polacek@redhat.com>
40
41         * forward.c (FORWARD_NORETURN): Define macro.
42         (__pthread_unwind): Use FORWARD_NORETURN macro to avoid warning.
43         (__pthread_exit): Likewise.
44
45 2012-01-10  Ulrich Drepper  <drepper@gmail.com>
46
47         * sysdeps/pthread/pthread.h: Add const attribute to pthread_equal.
48
49         * pthreadP.h: Add noreturn to __pthread_exit.
50         * sysdeps/pthread/pthread-functions.h: Likewise for ptr___pthread_exit.
51
52 2011-12-30  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
53
54         * sysdeps/unix/sysv/linux/aio_misc.h (__aio_create_helper_thread):
55         Call pthread_attr_setstacksize() with result of
56         __pthread_get_minstack() to account for application TLS usage.
57
58 2012-01-08  Marek Polacek  <polacek@redhat.com>
59
60         * sysdeps/unix/sysv/linux/mq_notify.c: Include <nptl/pthreadP.h>.
61
62 2012-01-07  Ulrich Drepper  <drepper@gmail.com>
63
64         [BZ #13553]
65         * pthreadP.h: Use const instead of __const.
66         * semaphore.h: Likewise.
67         * sysdeps/pthread/bits/libc-lock.h: Likewise.
68         * sysdeps/pthread/bits/sigthread.h: Likewise.
69         * sysdeps/pthread/pthread.h: Likewise.
70
71         * Makefile: Remove elf=yes test, only ELF is supported.
72
73         * shlib-versions: Remove entries for ports architectures.
74
75         In case anyone cares, the IA-64 architecture could move to ports.
76         * sysdeps/ia64/*: Removed.
77         * sysdeps/unix/sysv/linux/ia64/*: Removed.
78
79 2011-12-22  Ulrich Drepper  <drepper@gmail.com>
80
81         * sysdeps/pthread/gai_misc.h (__gai_create_helper_thread): Use
82         __pthread_get_minstack.
83         * sysdeps/unix/sysv/linux/mq_notify.c (init_mq_netlink): Likewise.
84
85         [BZ #13088]
86         * sysdeps/unix/sysv/linux/timer_routines.c: Get minimum stack size
87         through __pthread_get_minstack.
88         * nptl-init.c (__pthread_initialize_minimal_internal): Get page size
89         directly from _rtld_global_ro.
90         (__pthread_get_minstack): New function.
91         * pthreadP.h: Declare __pthread_get_minstack.
92         * Versions (libpthread) [GLIBC_PRIVATE]: Add __pthread_get_minstack.
93
94 2011-12-21  Ulrich Drepper  <drepper@gmail.com>
95
96         [BZ #13515]
97         * sysdeps/unix/sysv/linux/pthread_getname.c (pthread_getname_np):
98         Correct reading name from file.
99
100 2011-12-14  Carlos O'Donell  <carlos@systemhalted.org>
101
102         * allocatestack.c (allocate_stack): Return errno on failure.
103
104 2011-12-14  Jeff Law  <law@redhat.com>
105
106         [BZ #5245]
107         * pthread_create.c (__pthread_create_2_1): Translate ENOMEM to EAGAIN.
108
109 2011-11-28  Andreas Schwab  <schwab@redhat.com>
110
111         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Handle
112         EAGAIN from FUTEX_WAIT_REQUEUE_PI.
113         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
114
115 2011-11-15  Ulrich Drepper  <drepper@gmail.com>
116
117         * pthread_getattr_np.c (pthread_getattr_np): Set FD_CLOEXEC for
118         /proc/self/maps.
119
120 2011-10-29  Ulrich Drepper  <drepper@gmail.com>
121
122         [BZ #13358]
123         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
124         (__pthread_cond_timedwait): Initialize %r15 correctly also for code
125         path for kernels with FUTEX_CLOCK_REALTIME.
126         Debugged by H.J. Lu <hjl.tools@gmail.com>.
127
128 2011-10-27  Andreas Schwab  <schwab@redhat.com>
129
130         [BZ #13344]
131         * sysdeps/pthread/pthread.h: Use __THREADNL instead of __THREAD
132         for memory synchronization functions.
133         * semaphore.h: Likewise.
134
135 2011-10-24  Ulrich Drepper  <drepper@gmail.com>
136
137         * tst-cancel7.c: Avoid warning.
138         * tst-mutex6.c: Likewise.
139         * tst-mutex9.c: Likewise.
140         * tst-mutexpi6.c: Likewise.
141
142 2011-10-23  Ulrich Drepper  <drepper@gmail.com>
143
144         * sysdeps/i386/tls.h: Remove #include <list.h>.
145
146 2011-10-15  Ulrich Drepper  <drepper@gmail.com>
147
148         * pthread_create.c (start_thread): Call __ctype_init.
149
150 2011-09-15  Andreas Schwab  <schwab@redhat.com>
151
152         * sysdeps/pthread/list.h: Define only list_t if __need_list_t is
153         defined.
154         (list_add): Add atomic_write_barrier.
155         * descr.h: Define __need_list_t before including <list.h>.
156         * nptl-init.c: Include <list.h>
157         * allocatestack.c: Likewise.
158
159 2011-09-11  Ulrich Drepper  <drepper@gmail.com>
160
161         * sysdeps/i386/tls.h: Remove HAVE_TLS_SUPPORT test.
162         * sysdeps/ia64/tls.h: Likewise.
163         * sysdeps/powerpc/tls.h: Likewise.
164         * sysdeps/s390/tls.h: Likewise.
165         * sysdeps/sh/tls.h: Likewise.
166         * sysdeps/sparc/tls.h: Likewise.
167         * sysdeps/x86_64/tls.h: Likewise.
168
169 2011-09-10  Ulrich Drepper  <drepper@gmail.com>
170
171         * sysdeps/pthread/malloc-machine.h: Define MUTEX_INITIALIZER.
172
173         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Don't handle
174         !USE___THREAD.
175         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
176         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
177         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
178         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
179         * sysdeps/unix/sysv/linux/sh/sem_post.S: Likewise.
180         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
181         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Likewise.
182         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
183         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
184         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
185         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
186         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
187
188         * tst-tls1.c: Support for __thread is now mandatory.
189         * tst-tls2.c: Likewise.
190         * tst-tls3.c: Likewise.
191         * tst-tls3mod.c: Likewise.
192         * tst-tls4.c: Likewise.
193         * tst-tls4moda.c: Likewise.
194         * tst-tls4modb.c: Likewise.
195         * tst-tls5.h: Likewise.
196
197 2011-09-08  Ulrich Drepper  <drepper@gmail.com>
198
199         [BZ #12403]
200         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
201         (pthread_rwlock_timedwrlock): Use correct macro in test.
202         Patch by H.J. Lu <hongjiu.lu@intel.com>.
203
204 2011-09-06  Ulrich Drepper  <drepper@gmail.com>
205
206         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait): Don't
207         use gettimeofday vsyscall, just call gettimeofday.
208         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
209         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: Likewise.
210         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
211         Likewise.
212         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
213         Likewise.
214         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
215         Simplify __vdso_clock_gettime use.
216
217 2011-09-05  David S. Miller  <davem@davemloft.net>
218
219         * sysdeps/unix/sysv/linux/sem_timedwait.c (do_futex_timed_wait):
220         New function.
221         (sem_timedwait): Call it to force an exception region around
222         the async cancel enable and the futex operation.
223         * sysdeps/unix/sysv/linux/sparc/sem_timedwait.c: Likewise.
224         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c: Likewise.
225         * sysdeps/unix/sysv/linux/sem_wait.c (do_futex_wait): New function.
226         (__new_sem_wait): Call it to force an exception region around
227         the async cancel enable and the futex operation.
228         * sysdeps/unix/sysv/linux/sparc/sem_wait.c: Likewise.
229         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c: Likewise.
230
231 2011-08-31  Andreas Schwab  <schwab@redhat.com>
232
233         * allocatestack.c (setxid_mark_thread): Ensure that the exiting
234         thread is woken up.
235
236 2011-08-20  David S. Miller  <davem@davemloft.net>
237
238         * Makefile (tst-cleanup0.out): Fix typo in output redirection.
239
240 2011-08-14  Roland McGrath  <roland@hack.frob.com>
241
242         * sysdeps/i386/pthreaddef.h (TCB_ALIGNMENT): Set to 64, optimal on Atom.
243         * sysdeps/x86_64/pthreaddef.h (TCB_ALIGNMENT): Likewise.
244
245 2011-08-08  Andreas Schwab  <schwab@redhat.com>
246
247         * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Maintain aligned
248         stack.
249         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
250         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
251
252 2011-07-22  Ulrich Drepper  <drepper@gmail.com>
253
254         * sysdeps/pthread/unwind-forcedunwind.c (_Unwind_Resume): Add read
255         barrier.
256         (__gcc_personality_v0): Likewise.
257         (_Unwind_ForcedUnwind): Likewise.
258         (_Unwind_GetCFA): Likewise.
259
260 2011-07-14  Roland McGrath  <roland@hack.frob.com>
261
262         * allocatestack.c (__reclaim_stacks): Use uintptr_t cast rather than
263         UINTMAX_C.
264
265 2011-06-30  Ulrich Drepper  <drepper@gmail.com>
266
267         * nptl-init.c (__nptl_set_robust): New function.
268         (pthread_functions): Add reference.
269         * npthreadP.h: Declare __nptl_set_robust.
270         * sysdeps/pthread/pthread-functions.h (pthread_functions): Add
271         ptr_set_robust member.
272         * sysdeps/unix/sysv/linux/fork.c: Call set_robust_list syscall in
273         child if threads are used.
274
275 2011-06-14  Andreas Jaeger  <aj@suse.de>
276
277         * pthread_rwlock_init.c: Include <string.h> for memset declaration.
278
279 2011-05-11  Ulrich Drepper  <drepper@gmail.com>
280
281         [BZ #386]
282         * allocatestack.c (allocate_stack): Convert ENOMEM error to EAGAIN.
283
284 2011-04-10  Ulrich Drepper  <drepper@gmail.com>
285
286         [BZ #12650]
287         * allocatestack.c (get_cached_stack): Deallocate DTV entries before
288         clearing memory.
289         Patch partly by Robert Rex <robert.rex@exasol.com>.
290
291 2011-01-19  Roland McGrath  <roland@redhat.com>
292
293         * pthread_cond_wait.c (__pthread_cond_wait): Fix comment typo.
294         * pthread_cond_timedwait.c (__pthread_cond_timedwait): Likewise.
295         * pthread_rwlock_rdlock.c (__pthread_rwlock_rdlock): Likewise.
296         * pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock): Likewise.
297         * pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock): Likewise.
298         * pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock): Likewise.
299
300 2011-01-16  Andreas Schwab  <schwab@linux-m68k.org>
301
302         * Makefile (test-extras): Add tst-cleanup4aux.
303
304 2011-01-14  Ulrich Drepper  <drepper@gmail.com>
305
306         [BZ #10563]
307         * sysdeps/pthread/setxid.h (__SETXID_1): Add cast to assignment.
308         (__SETXID_2): Likewise.
309         (__SETXID_3): Likewise.
310
311 2011-01-13  Ulrich Drepper  <drepper@gmail.com>
312
313         [BZ #10484]
314         * Versions [libc] (GLIBC_PRIVATE): Export __libc_alloca_cutoff.
315         * alloca_cutoff.c: Add libc_hidden_def.
316
317 2010-10-13  H.J. Lu  <hongjiu.lu@intel.com>
318
319         [BZ #12113]
320         * sysdeps/x86_64/pthreaddef.h (TCB_ALIGNMENT): Changed to 32.
321         * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Defined with alignment
322         of "struct pthread".
323
324 2010-09-21  Andreas Schwab  <schwab@redhat.com>
325
326         * sysdeps/pthread/pthread.h (pthread_cleanup_push)
327         [!__EXCEPTIONS]: Mangle local variable not_first_call.
328         (pthread_cleanup_push_defer_np): Likewise.
329
330 2010-09-03  Ulrich Drepper  <drepper@redhat.com>
331
332         * sysdeps/pthread/allocalim.h (__libc_use_alloca): Expect blocks are
333         small.
334
335 2010-08-10  Dinakar Guniguntala  <dino@in.ibm.com>
336             Stefan Hajnoczi  <stefanha@linux.vnet.ibm.com>
337
338         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: If
339         FUTEX_WAKE_OP fails make sure to call FUTEX_WAKE instead.
340
341 2010-08-12  H.J. Lu  <hongjiu.lu@intel.com>
342
343         * sysdeps/unix/sysv/linux/i386/Makefile: New file.
344
345 2010-05-01  Alan Modra  <amodra@gmail.com>
346
347         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
348         (PSEUDO): Use correct cr save.  Don't use wrong parm save area
349         to save temps.  Correct cfi for possible later frame manipulation.
350         (DOCARGS_1, UNDOCARGS_1): Use the correct parm save area.
351         (DOCARGS_2, UNDOCARGS_2, DOCARGS_3, UNDOCARGS_3): Likewise.
352         (DOCARGS_4, UNDOCARGS_4, DOCARGS_5, UNDOCARGS_5): Likewise.
353         (DOCARGS_6, UNDOCARGS_6): Likewise.
354         (CENABLE, CDISABLE): Add nops for non-shared calls.
355
356 2010-07-06  Andreas Schwab  <schwab@redhat.com>
357
358         * sysdeps/unix/sysv/linux/pthread_getname.c (pthread_getname_np):
359         Fix type mismatch.
360
361 2010-07-03  Ulrich Drepper  <drepper@redhat.com>
362
363         * tst-abstime.c (do_test): Some more cleanups
364
365 2010-07-02  Ulrich Drepper  <drepper@redhat.com>
366
367         * tst-abstime.c: Correct testing and add test for sem_timedwait.
368
369 2010-07-01  Andreas Schwab  <schwab@redhat.com>
370             Ulrich Drepper  <drepper@redhat.com>
371
372         * Makefile (tests): Add tst-abstime.
373         * tst-abstime.c: New file.
374         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
375         (__lll_timedlock_wait): Check for timestamp before the Epoch.
376         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
377         (__lll_timedlock_wait): Likewise.
378         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
379         (__lll_robust_timedlock_wait): Likewise.
380         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
381         (__pthread_cond_timedwait): Likewise.
382         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
383         (pthread_rwlock_timedrdlock): Likewise.
384         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
385         (pthread_rwlock_timedwrlock): Likewise.
386         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
387         Likewise.
388
389 2010-07-01  Ulrich Drepper  <drepper@redhat.com>
390
391         * Makefile (tst-_res1): Add tst-_res1mod1 to dependency list.
392
393 2010-06-01  Takashi Yoshii  <takashi.yoshii.zj@renesas.com>
394
395         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Fix incorrect
396         location of ifndef __ASSUME_FUTEX_CLOCK_REALTIME.
397
398 2010-04-09  Ulrich Drepper  <drepper@redhat.com>
399
400         [BZ #11390]
401         * sysdeps/unix/sysv/linux/pthread_getname.c: New file.
402         * sysdeps/unix/sysv/linux/pthread_setname.c: New file.
403         * nptl/sysdeps/pthread/pthread.h: Declare pthread_getname and
404         pthread_setname.
405         * Makefile (libpthread-routines): Add pthread_getname and
406         pthread_setname.
407         * Versions: Export pthread_getname and pthread_setname for GLIBC_2.12.
408
409 2010-04-05  Thomas Schwinge  <thomas@schwinge.name>
410
411         * sysdeps/pthread/unwind-resume.c: Moved to main tree sysdeps/gnu/.
412         * sysdeps/pthread/rt-unwind-resume.c: Likewise.
413         * sysdeps/pthread/Makefile: Remove csu section and rt section's
414         unwind-resume bits, now in main tree sysdeps/gnu/Makefile instead.
415
416 2010-03-23  Luis Machado  <luisgpm@br.ibm.com>
417
418         * pthread_cond_timedwait.c: Add check for
419         HAVE_CLOCK_GETTIME_VSYSCALL to use VDSO whenever possible.
420         (pthread_cond_timedwait): Use INTERNAL_VSYSCALL instead of
421         INTERNAL_SYSCALL.
422
423 2010-03-09  Ulrich Drepper  <drepper@redhat.com>
424
425         * pthread_create.c (__pthread_create_2_1): If priorities are incorrect
426         and the call fails wake eventually waiting setxid threads.  Don't free
427         stack here if we try starting a thread.
428         * sysdeps/pthread/createthread.c (do_clone): Only wake setxid waiter
429         if the clone call failed.
430
431 2010-03-08  Andreas Schwab  <schwab@redhat.com>
432
433         * pthread_create.c (__pthread_create_2_1): Don't set setxid_futex.
434         * allocatestack.c (get_cached_stack): Set setxid_futex.
435         (allocate_stack): Likewise.
436
437 2010-03-05  Andreas Schwab  <schwab@redhat.com>
438             Ulrich Drepper  <drepper@redhat.com>
439
440         * allocatestack.c (setxid_mark_thread): Delay handling of thread if
441         it is creating a thread or it is just being created.
442         * pthread_create.c (start_thread): Wake setxid thread if it is
443         waiting.
444         (__pthread_create_2_1): Initialize setxid_futex.
445         * sysdeps/pthread/createthread.c (do_clone): Wake setxid thread if it
446         is waiting.
447
448 2010-01-15  Ulrich Drepper  <drepper@redhat.com>
449
450         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
451         Fix unwind info.
452         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
453
454 2010-01-15  Michal Schmidt  <mschmidt@redhat.com>
455
456         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
457         Fix pthread_cond_timedwait with requeue-PI.
458         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
459         Fix pthread_cond_wait with requeue-PI.
460
461 2010-01-14  Ulrich Drepper  <drepper@redhat.com>
462
463         * Versions: Add pthread_mutex_consistent, pthread_mutexattr_getrobust,
464         and pthread_mutexattr_setrobust for GLIBC_2.12.
465         * pthread_mutex_consistent.c: Define alias pthread_mutex_consistent.
466         * pthread_mutexattr_getrobust.c: Define alias
467         pthread_mutexattr_getrobust.
468         * pthread_mutexattr_setrobust.c: Define alias
469         pthread_mutexattr_setrobust.
470
471 2010-01-12  Ulrich Drepper  <drepper@redhat.com>
472
473         * sysdeps/pthread/pthread.h: Cleanup.  Fix up for XPG7.
474
475 2010-01-08  Ulrich Drepper  <drepper@redhat.com>
476
477         * sysdeps/pthread/pthread.h: Fix pthread_mutex_consistent declaration.
478
479 2009-12-18  Thomas Schwinge  <thomas@codesourcery.com>
480
481         * sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c (_init): Don't
482         call __gmon_start__.
483         * sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c (_init): Likewise.
484
485 2009-12-17  Ulrich Drepper  <drepper@redhat.com>
486
487         * pthread_rwlock_init.c (__pthread_rwlock_init): Simplify code by
488         using memset.
489
490 2009-12-01  Dinakar Guniguntala  <dino@in.ibm.com>
491
492         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.h: Define
493         FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI.
494         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: If mutex
495         is a non robust PI mutex, then use FUTEX_CMP_REQUEUE_PI.
496         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
497         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: If mutex
498         is a non robust PI mutex, then use FUTEX_WAIT_REQUEUE_PI.
499         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
500
501 2009-12-12  Ulrich Drepper  <drepper@redhat.com>
502
503         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
504         Don't update nwaiters after invalid timeout is recognized.
505
506 2009-11-27  Thomas Schwinge  <thomas@codesourcery.com>
507
508         * sysdeps/unix/sysv/linux/sh/pt-initfini.c (_init): Don't call
509         __gmon_start__.
510
511 2009-11-27  Andreas Schwab  <schwab@redhat.com>
512
513         * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Reload
514         THREAD_SELF->cancelhandling after returning from futex call.
515
516 2009-11-24  Ulrich Drepper  <drepper@redhat.com>
517
518         * tst-sem13.c: New file.
519         * Makefile (tests): Add tst-sem13.
520
521 2009-11-22  Roland McGrath  <roland@redhat.com>
522
523         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: # include "i686/dl-sysdep.h"
524         instead of recapitulating its contents.
525
526 2009-11-18  Ulrich Drepper  <drepper@redhat.com>
527
528         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Minor
529         optimizations and cleanups.
530
531 2009-11-18  Dinakar Guniguntala  <dino@in.ibm.com>
532
533         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S:
534         Remove redundant code. Fix cfi offsets.
535         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S:
536         Fix cfi offsets.
537
538 2009-11-17  Ulrich Drepper  <drepper@redhat.com>
539
540         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Minimally
541         reduce size of unwind info.
542
543         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Convert to use
544         cfi directives.
545         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
546         Based on a patch by Dinakar Guniguntala <dino@in.ibm.com>.
547
548 2009-11-03  Andreas Schwab  <schwab@linux-m68k.org>
549
550         [BZ #4457]
551         * sysdeps/pthread/unwind-resume.c: Include <libgcc_s.h> and use
552         LIBGCC_S_SO.
553         * sysdeps/pthread/unwind-forcedunwind.c: Likewise.
554
555 2009-10-30  Ulrich Drepper  <drepper@redhat.com>
556
557         * tst-sem11.c (main): Rewrite to avoid aliasing problems.
558
559         [BZ #3270]
560         * allocatestack.c (__nptl_setxid): Perform the operation in multiple
561         steps to avoid races with creation and terminations.
562         * nptl-init.c (sighandler_setxid): Adjust.
563         Patch by Daniel Jacobowitz.
564
565 2009-09-07  Andreas Schwab  <schwab@redhat.com>
566
567         * sysdeps/pthread/bits/libc-lock.h (BP_SYM): Remove space before paren.
568
569 2009-09-02  Suzuki K P  <suzuki@in.ibm.com>
570             Joseph Myers  <joseph@codesourcery.com>
571
572         [BZ #7094]
573         * sysdeps/unix/sysv/linux/timer_create.c (timer_create):
574         Initialize the sigev_notify field for newly created timer to make sure
575         the timer gets deleted from the active timer's list upon timer_delete.
576
577 2009-08-27  Andrew Stubbs  <ams@codesourcery.com>
578
579         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait):
580         Correct a logic error.
581
582 2009-08-25  Ulrich Drepper  <drepper@redhat.com>
583
584         * sysdeps/x86_64/tls.h (RTLD_ENABLE_FOREIGN_CALL): Store old value
585         of the field in local variables.
586         (RTLD_FINALIZE_FOREIGN_CALL): Restore rtld_must_xmm_save from local
587         variable and don't unconditionally clear it.
588
589 2009-08-24  Ulrich Drepper  <drepper@redhat.com>
590
591         * pthread_create.c (start_thread): Hint to the kernel that memory for
592         the stack can be reused.  We do not mark all the memory.  The part
593         still in use and some reserve are kept.
594
595 2009-08-23  Ulrich Drepper  <drepper@redhat.com>
596
597         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Clean up namespace.
598
599 2009-08-11  Ulrich Drepper  <drepper@redhat.com>
600
601         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Add CFI
602         directives.
603
604 2009-08-10  Ulrich Drepper  <drepper@redhat.com>
605
606         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Add CFI
607         directives.
608         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
609
610 2009-08-10  Andreas Schwab  <schwab@redhat.com>
611
612         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
613         (__pthread_cond_signal): Don't clobber register used for syscall
614         number.
615
616 2009-08-08  Ulrich Drepper  <drepper@redhat.com>
617
618         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
619         Optimize code path used when FUTEX_CLOCK_REALTIME is supported.
620
621         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
622         (__pthread_cond_wait): Optimize by avoiding use of callee-safe
623         register.
624
625 2009-08-07  Ulrich Drepper  <drepper@redhat.com>
626
627         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Little optimizations
628         enabled by the special *_asynccancel functions.
629         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
630         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
631
632         * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Include lowlevellock.h.
633
634 2009-08-04  Ulrich Drepper  <drepper@redhat.com>
635
636         * sysdeps/unix/sysv/linux/x86_64/cancellation.S: New file.
637         * sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S: New file.
638         * sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S: New file.
639         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (PSEUDO): Optimize
640         since we can assume the special __*_{en,dis}able_asynccancel
641         functions.
642         (PUSHARGS_*, POPARGS_*, SAVESTK_*, RESTSTK_*): Removed.
643         * sysdeps/x86_64/tcb-offsets.sym: Add cancellation-related bits
644         and PTHREAD_CANCELED.
645
646 2009-07-31  Ulrich Drepper  <drepper@redhat.com>
647
648         * descr.h: Better definition of *_BITMASK macros for cancellation.
649
650 2009-07-29  Ulrich Drepper  <drepper@redhat.com>
651
652         * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Define explicitly to 32.
653
654         * sysdeps/x86_64/tls.h (tcbhead_t): Add room for SSE registers the
655         dynamic linker might have to save.
656         Define RTLD_CHECK_FOREIGN_CALL, RTLD_ENABLE_FOREIGN_CALL,
657         RTLD_PREPARE_FOREIGN_CALL, and RTLD_FINALIZE_FOREIGN_CALL.  Pretty
658         printing.
659
660         * sysdeps/x86_64/tcb-offsets.sym: Add RTLD_SAVESPACE_SSE.
661
662 2009-07-28  Ulrich Drepper  <drepper@redhat.com>
663
664         * pthread_mutex_lock.c [NO_INCR] (__pthread_mutex_cond_lock_adjust):
665         New function.
666         * pthreadP.h: Declare __pthread_mutex_cond_lock_adjust.
667         * sysdeps/unix/sysv/linux/pthread-pi-defines.sym: Add ROBUST_BIT.
668         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Don't use
669         requeue_pi for robust mutexes.
670         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
671         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
672         Don't only skip __pthread_mutex_cond_lock.  Call instead
673         __pthread_mutex_cond_lock_adjust.
674         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
675
676         * pthread_mutex_unlock.c (__pthread_mutex_unlock_full): Minor
677         optimization of PI mutex handling.
678
679 2009-07-27  Ulrich Drepper  <drepper@redhat.com>
680
681         [BZ #10418]
682         * pthread_mutex_unlock.c (__pthread_mutex_unlock_full): Use _rel
683         instead of of _acq variants of cmpxchg.
684
685 2009-07-23  Ulrich Drepper  <drepper@redhat.com>
686
687         * sysdeps/x86_64/configure.in: New file.
688
689         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Fix error
690         path when not using absolute timeout futex.
691
692 2009-07-20  Ulrich Drepper  <drepper@redhat.com>
693
694         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Minor
695         optimizations of last changes.
696         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
697
698 2009-07-19  Ulrich Drepper  <drepper@redhat.com>
699
700         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Define
701         FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI.
702         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: If mutex
703         is a PI mutex, then use FUTEX_CMP_REQUEUE_PI.
704         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
705         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: If mutex
706         is a PI mutex, then use FUTEX_WAIT_REQUEUE_PI.
707         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
708
709         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
710         (__pthread_cond_timedwait): Make more robust.
711
712 2009-07-18  Ulrich Drepper  <drepper@redhat.com>
713
714         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
715         (__lll_robust_timedlock_wait): If possible use FUTEX_WAIT_BITSET to
716         directly use absolute timeout.
717
718         * tst-sem5.c (do_test): Add test for premature timeout.
719         * Makefile: Linu tst-sem5 with librt.
720
721         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
722         (pthread_rwlock_timedwrlock): If possible use FUTEX_WAIT_BITSET to
723         directly use absolute timeout.
724         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
725         (pthread_rwlock_timedrdlock): Likewise.
726
727         * tst-cond11.c (run_test): Add test to check that the timeout is
728         long enough.
729
730         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
731         (__pthread_cond_timedwait): If possible use FUTEX_WAIT_BITSET to
732         directly use absolute timeout.
733
734         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
735         (__pthread_cond_wait): Convert to using exception handler instead of
736         registered unwind buffer.
737         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
738         (__pthread_cond_timedwait): Likewise.
739
740 2009-07-17  Ulrich Drepper  <drepper@redhat.com>
741
742         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
743         If possible use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME to directly
744         use absolute timeout.
745
746         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Optimize
747         handling of uncontested semaphore.
748
749         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
750         (__condvar_cleanup): Rewrite to use cfi directives instead of
751         hand-coded unwind tables.
752         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S (__pthread_once):
753         Likewise.
754         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Likewise.
755         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
756         Likewise.
757
758 2009-06-12  Ulrich Drepper  <drepper@redhat.com>
759
760         * Makefile (libpthread-routines): Add pthread_sigqueue.
761         * Versions: Add pthread_sigqueue for GLIBC_2.11.
762         * sysdeps/pthread/bits/sigthread.h: Declare pthread_sigqueue.
763         * sysdeps/unix/sysv/linux/pthread_sigqueue.c: New file.
764
765 2009-06-11  Ulrich Drepper  <drepper@redhat.com>
766
767         [BZ #10262]
768         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
769         (LOAD_FUTEX_WAIT_ABS): Fix futex parameter in case private futexes
770         cannot be assumed.
771         Patch by Bryan Kadzban <bz-glibc@kdzbn.homelinux.net>.
772
773 2009-05-16  Ulrich Drepper  <drepper@redhat.com>
774
775         * libc-cancellation.c: Move __libc_cleanup_routine to...
776         * libc-cleanup.c: ...here.  New file.
777         * Makefile (routines): Add libc-cleanup.
778
779         * cancellation.c (__pthread_disable_asynccancel): Remove unnecessary
780         test.
781         * libc-cancellation.c: Use <nptl/cancellation.c: to define the code.
782         * sysdeps/pthread/librt-cancellation.c: Likewise.
783
784         [BZ #9924]
785         * nptl-init.c: Renamed from init.c.
786         * Makefile: Change all occurences of init.c to nptl-init.c.
787
788 2009-05-15  Ulrich Drepper  <drepper@redhat.com>
789
790         * cancellation.c (__pthread_disable_asynccancel): Correct the bits
791         to test when deciding on the delay.
792         * libc-cancellation.c (__libc_disable_asynccancel): Likewise.
793         * pthread_cancel.c: Close race between deciding on sending a signal
794         and setting the CANCELING_BIT bit.
795
796         * cancellation.c (__pthread_disable_asynccancel): Don't return if
797         thread is canceled.
798         * libc-cancellation.c (__libc_disable_asynccancel): Likewise.
799
800 2009-04-27  Ulrich Drepper  <drepper@redhat.com>
801
802         * cancellation.c (__pthread_disable_asynccancel): Use THREAD_ATOMIC_AND
803         is available.
804         * libc-cancellation.c (__libc_disable_asynccancel): Likewise.
805         * sysdeps/x86_64/tls.h: Define THREAD_ATOMIC_AND.
806         * sysdeps/i386/tls.h: Likewise.
807         (tcbhead_t): Add __private_tm member.
808
809 2009-04-26  Ulrich Drepper  <drepper@redhat.com>
810
811         * sem_open.c (sem_open): Rewrite initialization of initsem to
812         avoid warnings.
813
814         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
815         Avoid warning by using may_alias attribute on ptrhack.
816
817 2009-04-22  Ulrich Drepper  <drepper@redhat.com>
818
819         [BZ #10090]
820         * pthread_attr_setschedparam.c (__pthread_attr_setschedparam):
821         Check policy and priority for validity.
822         Patch mostly by Zhang Xiliang <zhangxiliang@cn.fujitsu.com>.
823
824 2009-03-15  Ulrich Drepper  <drepper@redhat.com>
825
826         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
827         (__pthread_cond_timedwait): Change to use cfi directives instead of
828         hand-coded unwind sections.
829
830 2009-03-10  Ulrich Drepper  <drepper@redhat.com>
831
832         * init.c (nptl_freeres): Compile only for SHARED.
833
834 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
835
836         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Define
837         FUTEX_WAIT_BITSET, FUTEX_WAKE_BITSET, FUTEX_CLOCK_REALTIME and
838         FUTEX_BITSET_MATCH_ANY.
839
840 2009-02-27  Roland McGrath  <roland@redhat.com>
841
842         * init.c (__nptl_initial_report_events): Mark __attribute_used__.
843         * pthread_create.c (__nptl_threads_events, __nptl_last_event): Likewise.
844
845 2009-02-26  Ulrich Drepper  <drepper@redhat.com>
846
847         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
848         _POSIX_THREAD_ROBUST_PRIO_INHERIT and
849         _POSIX_THREAD_ROBUST_PRIO_PROTECT.  Reset value of macros from
850         200112L to 200809L.
851
852 2009-02-25  Ulrich Drepper  <drepper@redhat.com>
853
854         * sysdeps/pthread/pthread.h: The robust mutex functions are in
855         POSIX 2008.
856
857 2009-02-24  Ulrich Drepper  <drepper@redhat.com>
858
859         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_BITS_POSIX_OPT_H):
860         Unify name of include protector macro.
861
862 2009-02-14  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
863
864         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define
865         LOAD_FUTEX_WAIT_ABS even if (FUTEX_WAIT == 0).
866
867 2009-01-29  Ulrich Drepper  <drepper@redhat.com>
868
869         * sysdeps/pthread/unwind-forcedunwind.c: Encrypt all function
870         pointer variables.
871
872         * allocatestack.c (__free_stacks): Renamed from free_stacks.
873         (__free_stack_cache): Removed.  Change callers to call __free_stacks.
874         * init.c (nptl_freeres): New function.
875         (pthread_functions): Initialize ptr_freeres to nptl_freeres.
876         * pthreadP.h: Don't declare __free_stack_cache.  Declare __free_stacks.
877         * sysdeps/pthread/unwind-forcedunwind.c (libgcc_s_handle): New
878         variable.
879         (pthread_cancel_init): Depend in libgcc_s_handle for decision to
880         load DSO.  Assign last.
881         (__unwind_freeres): New function.
882
883         * allocatestack.c (__reclaim_stacks): Reset in_flight_stack later
884         for better debugging.  No need to use stack_list_add here.
885
886 2009-01-14  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
887
888         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
889         (__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME
890         instead of computing relative timeout.
891         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define
892         FUTEX_CLOCK_REALTIME and FUTEX_BITSET_MATCH_ANY.
893
894 2009-01-25  Ulrich Drepper  <drepper@redhat.com>
895
896         * pthread_mutex_lock.c (__pthread_mutex_lock): Remove unused label out.
897
898 2009-01-08  Ulrich Drepper  <drepper@redhat.com>
899
900         * sysdeps/pthread/list.h (list_add): Initialize new element first.
901         (list_add_tail): Removed.
902
903 2009-01-07  Ulrich Drepper  <drepper@redhat.com>
904
905         * (in_flight_stack): New variable.
906         (stack_list_del): New function.  Use instead of list_del.
907         (stack_list_add): New function.  Use instead of list_add when adding to
908         stack_cache and stack_used lists.
909         (__reclaim_stacks): Complete operations on stack_cache and stack_used lists
910         when the fork call interrupted another thread.
911
912 2009-01-04  Ulrich Drepper  <drepper@redhat.com>
913
914         * init.c (__pthread_initialize_minimal_internal): Optimize test
915         FUTEX_CLOCK_REALTIME a bit.
916
917 2009-01-03  Ulrich Drepper  <drepper@redhat.com>
918
919         * init.c (__pthread_initialize_minimal_internal): Cheat a bit by
920         only passing five parameters to FUTEX_WAIT_BITSET call.
921
922         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
923         (__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME
924         instead of computing relative timeout.
925
926 2009-01-02  Ulrich Drepper  <drepper@redhat.com>
927
928         * init.c (__pthread_initialize_minimal_internal): Check for
929         FUTEX_CLOCK_REALTIME flag.
930         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedlock_wait):
931         Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME instead of computing
932         relative timeout.
933
934         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Define
935         FUTEX_CLOCK_REALTIME and FUTEX_BITSET_MATCH_ANY.
936         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
937         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
938         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
939         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
940
941 2008-12-09  Ulrich Drepper  <drepper@redhat.com>
942
943         * sysdeps/pthread/pthread.h (pthread_cleanup_pop): Use { } as empty
944         loop body instead of ; to avoid gcc warnings.
945         (pthread_cleanup_pop_restore_np): Likewise.
946         Patch by Caolán McNamara <caolanm@redhat.com>.
947
948 2008-12-09  Jakub Jelinek  <jakub@redhat.com>
949
950         * pthread_mutex_lock.c (__pthread_mutex_lock): Handle only the
951         fast path here, for robust/PI/PP mutexes call
952         __pthread_mutex_lock_full.  Don't use switch, instead use a series
953         of ifs according to their probability.
954         (__pthread_mutex_lock_full): New function.
955         * pthread_mutex_unlock.c: Include assert.h.
956         (__pthread_mutex_unlock_usercnt): Handle only the
957         fast path here, for robust/PI/PP mutexes call
958         __pthread_mutex_unlock_full.  Don't use switch, instead use a series
959         of ifs according to their probability.
960         (__pthread_mutex_unlock_full): New function.
961         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c
962         (__pthread_mutex_lock_full): Define.
963
964 2008-12-08  Ulrich Drepper  <drepper@redhat.com>
965
966         * sysdeps/x86_64/tls.h (tcbhead_t): Add fields reserved for TM
967         implementation.  Add necessary padding and.
968         * descr.h (struct pthread): Increase padding for tcbhead_t to 24
969         words.
970
971 2008-12-04  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
972
973         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define FUTEX_WAIT_BITSET
974         and FUTEX_WAKE_BITSET.
975
976 2008-12-02  Ulrich Drepper  <drepper@redhat.com>
977
978         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define FUTEX_WAIT_BITSET
979         and FUTEX_WAKE_BITSET.
980         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
981         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
982         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
983         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
984
985 2008-11-25  Roland McGrath  <roland@redhat.com>
986
987         * sysdeps/alpha, sysdeps/unix/sysv/linux/alpha:
988         Subdirectories moved to ports repository as
989         sysdeps/.../nptl subdirectories.
990
991 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
992
993         [BZ #7008]
994         * pthread_condattr_setclock.c (pthread_condattr_setclock): Fix masking
995         of old value.
996         * pthread_cond_init.c (__pthread_cond_init): Fix
997         cond->__data.__nwaiters initialization.
998         * Makefile (tests): Add tst-cond23.
999         * tst-cond23.c: New test.
1000
1001 2008-11-07  Jakub Jelinek  <jakub@redhat.com>
1002
1003         * sysdeps/pthread/malloc-machine.h (MALLOC): Adjust __libc_tsd_define
1004         arguments.
1005         (tsd_setspecific, tsd_getspecific): Adjust __libc_tsd_{set,get}
1006         arguments.
1007
1008 2008-11-01  Ulrich Drepper  <drepper@redhat.com>
1009
1010         [BZ #6955]
1011         * pthread_mutex_lock.c: Add support for private PI mutexes.
1012         * pthread_mutex_timedlock.c: Likewise.
1013         * pthread_mutex_trylock.c: Likewise.
1014         * pthread_mutex_unlock.c: Likewise.
1015         Patch mostly by Ben Jackson <ben@ben.com>.
1016
1017 2008-10-31  Ulrich Drepper  <drepper@redhat.com>
1018
1019         [BZ #6843]
1020         * sysdeps/pthread/gai_misc.h (__gai_create_helper_thread):
1021         Increase stack size for helper thread.
1022
1023 2008-10-06  Martin Schwidefsky  <schwidefsky@de.ibm.com>
1024
1025         * sysdeps/s390/tls.h (THREAD_SET_STACK_GUARD): Add empty inline
1026         assembly with a clobber list for access registers a0 and a1.
1027
1028 2008-09-11  Martin Schwidefsky  <schwidefsky@de.ibm.com>
1029
1030         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Add memory barrier
1031         to force runp->refcntr to be read from memory.
1032
1033 2008-09-08  Richard Guenther  <rguenther@suse.de>
1034
1035         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_lock,
1036         lll_robust_lock, lll_cond_lock, lll_robust_cond_lock,
1037         lll_timedlock, lll_robust_timedlock, lll_unlock,
1038         lll_robust_unlock): Promote private to int.
1039
1040 2008-08-15  Ulrich Drepper  <drepper@redhat.com>
1041
1042         * sysdeps/x86_64/pthreaddef.h: Remove ARCH_MAP_FLAGS and
1043         ARCH_RETRY_MMAP definitions.
1044         * allocatestack.c: Remove definition of ARCH_MAP_FLAGS.
1045         Define MAP_STACK when not defined.
1046         (allocate_stack): Use MAP_STACK instead of ARCH_MAP_FLAGS.  Remove
1047         handling of ARCH_RETRY_MMAP.
1048
1049 2008-07-30  Ulrich Drepper  <drepper@redhat.com>
1050
1051         * tst-align2.c (f): Print message that f is reached.
1052
1053 2008-04-28  Hiroki Kaminaga  <kaminaga@sm.sony.co.jp>
1054
1055         [BZ #6740]
1056         * sysdeps/powerpc/tcb-offsets.sym (PRIVATE_FUTEX_OFFSET): Guard symbol
1057         definition with #ifndef __ASSUME_PRIVATE_FUTEX.
1058
1059 2008-07-25  Ulrich Drepper  <drepper@redhat.com>
1060
1061         * sysdeps/unix/sysv/linux/mq_notify.c (init_mq_netlink): Use
1062         SOCK_CLOEXEC if possible.
1063
1064 2008-05-29  Ulrich Drepper  <drepper@redhat.com>
1065
1066         * Makefile (tests): Add tst-rwlock2a.
1067         * tst-rwlock2.c: Use TYPE macro to decide what rwlock type to use.
1068         * tst-rwlock2a.c: New file.
1069
1070 2008-06-12  Ulrich Drepper  <drepper@redhat.com>
1071
1072         * sysdeps/pthread/pthread.h: Remove inadvertant checkin.
1073
1074 2008-05-17  Samuel Thibault  <samuel.thibault@ens-lyon.org>
1075
1076         * sysdeps/pthread/pthread.h: Fix typo in comment.
1077
1078 2008-05-28  Ulrich Drepper  <drepper@redhat.com>
1079
1080         * sysdeps/pthread/createthread.c (do_clone): Pass accurate length
1081         of CPU set to the kernel.
1082
1083 2008-05-23  Paul Pluzhnikov  <ppluzhnikov@google.com>
1084
1085         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Add
1086         cfi directives.
1087         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
1088         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
1089         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
1090         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
1091         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
1092         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
1093
1094 2008-05-22  Paul Pluzhnikov  <ppluzhnikov@google.com>
1095
1096         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S: Add
1097         cfi directives.
1098         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
1099         Likewise.
1100         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
1101         Likewise.
1102         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
1103         Likewise.
1104
1105 2008-05-26  Ulrich Drepper  <drepper@redhat.com>
1106
1107         * tst-typesizes.c: Explicitly check __SIZEOF_PTHREAD_* constants.
1108
1109 2008-05-20  Jakub Jelinek  <jakub@redhat.com>
1110
1111         David S. Miller  <davem@davemloft.net>
1112
1113         * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: New file.
1114
1115 2008-05-10  Ulrich Drepper  <drepper@redhat.com>
1116
1117         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Access
1118         __pshared correctly.
1119         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
1120         Likewise.
1121         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
1122         Likewise.
1123         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S:
1124         Likewise.
1125         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S:
1126         Likewise.
1127         Reported by Clemens Kolbitsch <clemens.kol@gmx.at>.
1128
1129 2008-04-14  David S. Miller  <davem@davemloft.net>
1130
1131         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
1132         (__old_sem_wait): Fix argument to lll_futex_wait().
1133
1134 2007-11-26  Daniel Jacobowitz  <dan@codesourcery.com>
1135
1136         * pthread_create.c: Require pthread_mutex_trylock and
1137         pthread_key_delete for libgcc.
1138
1139 2008-04-08  Jakub Jelinek  <jakub@redhat.com>
1140
1141         [BZ #6020]
1142         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h
1143         (lll_futex_wake_unlock): Add private argument to the pre-v9 macro.
1144         Patch by Sunil Amitkumar Janki <devel.sjanki@gmail.com>.
1145
1146 2008-03-27  Ulrich Drepper  <drepper@redhat.com>
1147
1148         * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine ARG_MAX if
1149         <linux/limits.h> has defined it.
1150         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise.
1151         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise.
1152         * sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: Likewise.
1153         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise.
1154
1155 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
1156
1157         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: Use __ASSEMBLER__ instead
1158         of ASSEMBLER.
1159         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: Likewise.
1160         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Likewise.
1161
1162 2008-03-14  Ulrich Drepper  <drepper@redhat.com>
1163
1164         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define
1165         HAVE_DL_DISCOVER_OSVERSION.
1166         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: Likewise.
1167         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: Likewise.
1168
1169 2008-03-07  Ulrich Drepper  <drepper@redhat.com>
1170
1171         [BZ #5778]
1172         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Change
1173         _POSIX_CHOWN_RESTRICTED value to zero.
1174
1175 2008-01-31  Roland McGrath  <roland@redhat.com>
1176
1177         * Makefile (omit-deps): Variable removed.
1178
1179 2008-01-30  Ulrich Drepper  <drepper@redhat.com>
1180
1181         * sysdeps/unix/sysv/linux/x86_64/sem_post.S (sem_post): Avoid
1182         unnecessary addr32 prefix.
1183
1184 2008-01-29  Roland McGrath  <roland@redhat.com>
1185
1186         * Makeconfig (ptw-CPPFLAGS, sysd-rules-patterns): New variables.
1187
1188 2008-01-22  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1189
1190         * sysdeps/unix/sysv/linux/sh/sem_post.S: Don't overflow value field.
1191
1192 2008-01-21  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1193
1194         * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h (XADD): Use
1195         a scratch register.
1196         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
1197         (__lll_lock_wait_private): Fix typo.
1198         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
1199         (pthread_barrier_wait): Likewise.  Adjust XADD use.
1200         * sysdeps/unix/sysv/linux/sh/sem_post.S (__new_sem_post):
1201         Adjust XADD use.
1202         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
1203         (pthread_rwlock_timedrdlock): Return correct return value.
1204         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
1205         (pthread_rwlock_timedwrlock): Likewise.
1206
1207 2008-01-15  Ulrich Drepper  <drepper@redhat.com>
1208
1209         * tst-eintr2.c (do_test): make sure that if mutex_lock in main
1210         thread returns the program exits with an error code.
1211
1212 2008-01-10  Ulrich Drepper  <drepper@redhat.com>
1213
1214         * pthread-errnos.sym: Add EOVERFLOW.
1215         * sysdeps/unix/sysv/linux/structsem.sym: Add SEM_VALUE_MAX.
1216         * sysdeps/unix/sysv/linux/sem_post.c: Don't overflow value field.
1217         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
1218         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
1219
1220 2007-12-14  Ulrich Drepper  <drepper@redhat.com>
1221
1222         * sysdeps/x86_64/pthreaddef.h (ARCH_RETRY_MMAP): Take additional
1223         parameter.  Passed it as permission to mmap.
1224         * allocatestack.c (allocate_stack): Pass prot as second parameter
1225         to ARCH_RETRY_MMAP.
1226
1227 2007-12-12  Ulrich Drepper  <drepper@redhat.com>
1228
1229         * tst-basic7.c: Allocate memory for the stack.
1230
1231         [BZ #5465]
1232         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S [!SHARED]
1233         (__pthread_cond_timedwait): Don't use VDSO.
1234         Patch by Michal Januszewski.
1235
1236 2007-12-07  Ulrich Drepper  <drepper@redhat.com>
1237
1238         [BZ #5455]
1239         * sysdeps/pthread/pthread.h [!__EXCEPTIONS] (pthread_cleanup_pop):
1240         Allow label before pthread_cleanup_pop.
1241         (pthread_cleanup_pop_restore_np): Likewise.
1242
1243 2007-12-04  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1244
1245         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait):
1246         Store 2 before returning ETIMEDOUT.
1247
1248 2007-11-23  Ulrich Drepper  <drepper@redhat.com>
1249
1250         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedlock_wait):
1251         Store 2 before returning ETIMEDOUT.
1252         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise
1253         * sysdeps/unix/sysv/linux/lowlevellock.c: Likewise.
1254         (__lll_lock_wait_private): Optimize.
1255         (__lll_lock_wait): Likewise.
1256
1257 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
1258
1259         * sysdeps/pthread/pthread.h (pthread_cleanup_push,
1260         pthread_cleanup_push_defer_np): Add extra (void *) cast to shut up
1261         g++ 4.1 and 4.2 -Wstrict-aliasing warnings.
1262
1263 2007-11-08  Ulrich Drepper  <drepper@redhat.com>
1264
1265         [BZ #5240]
1266         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
1267         If we time out, try one last time to lock the futex to avoid
1268         losing a wakeup signal.
1269         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
1270         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
1271
1272         [BZ #5245]
1273         * sysdeps/pthread/createthread.c (do_clone): Translate clone error
1274         if necessary.
1275
1276 2007-11-07  Ulrich Drepper  <drepper@redhat.com>
1277
1278         [BZ #5245]
1279         * allocatestack.c (allocate_stack): Change ENOMEM error in case
1280         mmap failed to EAGAIN.
1281         * Makefile (tests): Add tst-basic7.
1282         * tst-basic7.c: New file.
1283
1284 2007-11-05  Ulrich Drepper  <drepper@redhat.com>
1285
1286         * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork):
1287         Use __linkin_atfork.
1288
1289 2007-11-03  Mike Frysinger  <vapier@gentoo.org>
1290
1291         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (LOAD_FUTEX_WAIT): Add
1292         missing line continuations.
1293         * sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S (LOAD_FUTEX_WAIT,
1294         LOAD_FUTEX_WAKE): Likewise.  Also add missing 3rd parameter.
1295
1296 2007-10-28  Ulrich Drepper  <drepper@redhat.com>
1297
1298         [BZ #5220]
1299         * sysdeps/unix/sysv/linux/kernel-posix-timers.h: Declare
1300         __active_timer_sigev_thread and __active_timer_sigev_thread_lock.
1301         (struct timer): Add next element.
1302         * sysdeps/unix/sysv/linux/timer_create.c: For SIGEV_THREAD timers,
1303         enqueue timer structure into __active_timer_sigev_thread list.
1304         * sysdeps/unix/sysv/linux/timer_delete.c: For SIGEV_THREAD timers,
1305         remove timer struct from __active_timer_sigev_thread.
1306         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
1307         Before using timer structure make sure it is still on the
1308         __active_timer_sigev_thread list.  Keep lock until done.
1309         Define __active_timer_sigev_thread and
1310         __active_timer_sigev_thread_lock.
1311
1312 2007-10-27  Ulrich Drepper  <drepper@redhat.com>
1313
1314         * sysdeps/pthread/malloc-machine.h: Define ATFORK_MEM.
1315         Redefine thread_atfork for use of ATFORK_MEM.
1316         * sysdeps/unix/sysv/linux/fork.h: Define __linkin_atfork.
1317         * sysdeps/unix/sysv/linux/register-atfork.c (__linkin_atfork): New
1318         function.
1319         * sysdeps/unix/sysv/linux/unregister-atfork.c (__unregister_atfork):
1320         Use atomic operation when removing first element of list.
1321
1322 2007-10-17  Jakub Jelinek  <jakub@redhat.com>
1323
1324         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__old_sem_post): New
1325         routine instead of an alias to __new_sem_post.
1326
1327 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
1328
1329         * init.c (__pthread_initialize_minimal): Initialize word to appease
1330         valgrind.
1331
1332 2007-10-10  Jakub Jelinek  <jakub@redhat.com>
1333
1334         * sysdeps/pthread/bits/libc-lock.h (__libc_rwlock_init): Inside of
1335         libc.so just clear NAME.
1336         (__libc_rwlock_fini): Nop inside of libc.so.
1337         * tst-initializers1.c (main): Test if PTHREAD_RWLOCK_INITIALIZER is
1338         all zeros.
1339
1340 2007-09-02  Ulrich Drepper  <drepper@redhat.com>
1341
1342         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
1343         (__pthread_cond_wait): Fix unlocking of internal lock after mutex
1344         unlocking failed.
1345         Patch by Luca Barbieri <luca.barbieri@gmail.com>.
1346
1347 2007-08-21  Ulrich Drepper  <drepper@redhat.com>
1348
1349         [BZ #4938]
1350         * allocatestack.c (__reclaim_stacks): Clear the TSD in the
1351         reclaimed stack if necessary.
1352         * Makefile (tests): Add tst-tsd6.
1353         * tst-tsd6.c: New file.
1354
1355 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
1356
1357         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_robust_dead):
1358         Add private argument.
1359
1360 2007-08-20  Ulrich Drepper  <drepper@redhat.com>
1361
1362         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
1363         (__pthread_cond_timedwait): Use clock_gettime from VDSO if possible.
1364
1365 2007-08-16  Jakub Jelinek  <jakub@redhat.com>
1366
1367         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h
1368         (__lll_robust_timedlock): Pass private as last argument to
1369         __lll_robust_timedlock_wait.
1370         (__lll_unlock): Fix a pasto.
1371
1372 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
1373
1374         * sysdeps/unix/sysv/linux/sparc/internaltypes.h (sparc_new_sem,
1375         sparc_old_sem): New structs.
1376         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
1377         (__sem_wait_cleanup): New function.
1378         (__new_sem_wait): Use sparc_new_sem structure.  Bump and afterwards
1379         decrease nwaiters.  Register __sem_wait_cleanup as cleanup handler.
1380         Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
1381         lll_futex_wait.
1382         (__old_sem_wait): New function.
1383         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c: Include
1384         nptl/sysdeps/unix/sysv/linux/sparc version.
1385         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c:
1386         Likewise.
1387         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c: Likewise.
1388         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c
1389         (__new_sem_trywait): Use sparc_old_sem structure.
1390         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c
1391         (sem_timedwait): Use sparc_new_sem structure.  Bump and afterwards
1392         decrease nwaiters.  Register __sem_wait_cleanup as cleanup handler.
1393         Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
1394         lll_futex_timed_wait.
1395         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c (__new_sem_post):
1396         Use sparc_new_sem structure.  Only wake if nwaiters > 0.  Pass
1397         isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
1398         lll_futex_wake.
1399         (__old_sem_post): New function.
1400         * sysdeps/unix/sysv/linux/sparc/sem_wait.c: New file.
1401         * sysdeps/unix/sysv/linux/sparc/sem_init.c: New file.
1402         * sysdeps/unix/sysv/linux/sparc/sem_timedwait.c: New file.
1403         * sysdeps/unix/sysv/linux/sparc/sem_post.c: New file.
1404         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c: Remove.
1405         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c: Remove.
1406
1407 2007-08-14  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1408
1409         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
1410         (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
1411         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
1412         Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
1413         * sysdeps/unix/sysv/linux/shpthread_cond_signal.S
1414         (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
1415         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
1416         Use FUTEX_WAKE_OP.
1417         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Include
1418         kernel-features.h and tcb-offsets.h.
1419         (__pthread_cond_wait, __condvar_w_cleanup): Pass LLL_PRIVATE to
1420         lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
1421         process private.
1422         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Include
1423         tcb-offsets.h.
1424         (__pthread_cond_timedwait, __condvar_tw_cleanup): Pass LLL_PRIVATE
1425         to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
1426         process private.
1427         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Use #ifdef
1428         __ASSUME_PRIVATE_FUTEX instead of #if __ASSUME_PRIVATE_FUTEX.
1429         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
1430         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
1431         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
1432         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
1433         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
1434
1435 2007-08-14  Jakub Jelinek  <jakub@redhat.com>
1436
1437         * sysdeps/unix/sysv/linux/lowlevellock.c: Comment fix.
1438         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
1439         (__lll_timedwait_tid): Pass LLL_SHARED as 4th argument to
1440         lll_futex_timed_wait.
1441
1442         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (__lll_unlock,
1443         __lll_robust_unlock): Rewrite as macros instead of inline functions.
1444         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_unlock,
1445         __lll_robust_unlock, __lll_wait_tid): Likewise.
1446
1447 2007-08-13  Jakub Jelinek  <jakub@redhat.com>
1448
1449         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (__lll_private_flag):
1450         Fix a pasto.
1451         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
1452         (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
1453         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
1454         Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
1455         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
1456         (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
1457         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
1458         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Include
1459         kernel-features.h.
1460         (__pthread_cond_wait, __condvar_w_cleanup): Pass LLL_PRIVATE to
1461         lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
1462         process private.  Switch DW_CFA_advance_loc1 and some
1463         DW_CFA_advance_loc .eh_frame opcodes to DW_CFA_advance_loc4.
1464         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
1465         (__pthread_cond_timedwait, __condvar_tw_cleanup): Pass LLL_PRIVATE to
1466         lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
1467         process private.  Switch DW_CFA_advance_loc{1,2} and some
1468         DW_CFA_advance_loc .eh_frame opcodes to DW_CFA_advance_loc4.
1469         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Use
1470         #ifdef __ASSUME_PRIVATE_FUTEX instead of #if __ASSUME_PRIVATE_FUTEX.
1471         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
1472         Likewise.
1473         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
1474         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
1475         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
1476         Likewise.
1477         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
1478         (__pthread_cond_broadcast): Compare %r8 instead of
1479         dep_mutex-cond_*(%rdi) with $-1.
1480         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
1481         (__pthread_cond_signal): Xor FUTEX_WAKE_OP with FUTEX_WAKE instead
1482         of oring.
1483
1484 2007-08-13  Ulrich Drepper  <drepper@redhat.com>
1485
1486         * sysdeps/unix/sysv/linux/i386/i786/Implies: New file.
1487
1488 2007-08-13  Jakub Jelinek  <jakub@redhat.com>
1489
1490         * allocatestack.c: Include kernel-features.h.
1491         * pthread_create.c: Likewise.
1492         * pthread_mutex_init.c: Likewise.
1493         * init.c: Likewise.
1494         * pthread_cond_timedwait.c: Likewise.
1495         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise.
1496         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
1497         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
1498         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
1499         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
1500         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
1501         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
1502         Likewise.
1503         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
1504         Likewise.
1505         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
1506         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
1507         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
1508         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
1509
1510 2007-08-12  Jakub Jelinek  <jakub@redhat.com>
1511
1512         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
1513         [__WORDSIZE=32] (pthread_rwlock_t): Split __flags element into four
1514         byte elements.  One of them is the new __shared element.
1515         [__WORDSIZE=64] (pthread_rwlock_t): Renamed __pad1 element to __shared,
1516         adjust names of other padding elements.
1517         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h
1518         [__WORDSIZE=32] (pthread_rwlock_t): Split __flags element into four
1519         byte elements.  One of them is the new __shared element.
1520         [__WORDSIZE=64] (pthread_rwlock_t): Renamed __pad1 element to __shared,
1521         adjust names of other padding elements.
1522         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_rwlock_t):
1523         Renamed __pad1 element to __shared, adjust names of other padding
1524         elements.
1525         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
1526         (pthread_rwlock_t): Likewise.
1527         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_lock): Fix a
1528         typo.
1529
1530 2007-08-09  Anton Blanchard  <anton@samba.org>
1531
1532         * sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c: New file.
1533
1534 2007-08-12  Ulrich Drepper  <drepper@redhat.com>
1535
1536         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Include
1537         <kernel-features.h>.
1538         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
1539
1540 2007-08-11  Ulrich Drepper  <drepper@redhat.com>
1541
1542         * pthreadP.h (PTHREAD_ROBUST_MUTEX_PSHARED): Define.
1543         * pthread_mutex_lock.c: Use it instead of PTHREAD_MUTEX_PSHARED when
1544         dealing with robust mutexes.
1545         * pthread_mutex_timedlock.c: Likewise.
1546         * pthread_mutex_trylock.c: Likewise.
1547         * pthread_mutex_unlock.c: Likewise.
1548         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise.
1549
1550 2007-08-06  Jakub Jelinek  <jakub@redhat.com>
1551
1552         * pthreadP.h (PTHREAD_MUTEX_PSHARED_BIT): Define.
1553         (PTHREAD_MUTEX_TYPE): Mask __kind with 127.
1554         (PTHREAD_MUTEX_PSHARED): Define.
1555         * pthread_mutex_init.c (__pthread_mutex_init): Set
1556         PTHREAD_MUTEX_PSHARED_BIT for pshared or robust
1557         mutexes.
1558         * pthread_mutex_lock.c (LLL_MUTEX_LOCK): Take mutex as argument
1559         instead of its __data.__lock field, pass PTHREAD_MUTEX_PSHARED
1560         as second argument to lll_lock.
1561         (LLL_MUTEX_TRYLOCK): Take mutex as argument
1562         instead of its __data.__lock field.
1563         (LLL_ROBUST_MUTEX_LOCK): Take mutex as argument instead of its
1564         __data.__lock field, pass PTHREAD_MUTEX_PSHARED as second argument
1565         to lll_robust_lock.
1566         (__pthread_mutex_lock): Update LLL_MUTEX_LOCK, LLL_MUTEX_TRYLOCK,
1567         LLL_ROBUST_MUTEX_LOCK users, use PTHREAD_MUTEX_TYPE (mutex)
1568         instead of mutex->__data.__kind directly, pass
1569         PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock and lll_futex_wait.
1570         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Use
1571         PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind
1572         directly, pass PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock.
1573         (pthread_mutex_timedlock): Pass PTHREAD_MUTEX_PSHARED (mutex)
1574         to lll_timedlock, lll_robust_timedlock, lll_unlock and
1575         lll_futex_timed_wait.  Use PTHREAD_MUTEX_TYPE (mutex) instead
1576         of mutex->__data.__kind directly.
1577         * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Pass
1578         PTHREAD_MUTEX_PSHARED (mutex) to lll_timedlock,
1579         lll_robust_timedlock, lll_unlock and lll_futex_timed_wait.  Use
1580         PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind directly.
1581         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Pass
1582         PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock, lll_robust_unlock
1583         and lll_futex_wake.
1584         * pthread_mutex_setprioceiling.c (pthread_mutex_setprioceiling): Pass
1585         PTHREAD_MUTEX_PSHARED (mutex) to lll_futex_wait and lll_futex_wake.
1586         Use PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind
1587         directly.
1588         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c (LLL_MUTEX_LOCK):
1589         Take mutex as argument instead of its __data.__lock field, pass
1590         PTHREAD_MUTEX_PSHARED as second argument to lll_cond_lock.
1591         (LLL_MUTEX_TRYLOCK): Take mutex as argument instead of its
1592         __data.__lock field.
1593         (LLL_ROBUST_MUTEX_LOCK): Take mutex as argument instead of its
1594         __data.__lock field, pass PTHREAD_MUTEX_PSHARED as second argument
1595         to lll_robust_cond_lock.
1596         * pthread_cond_broadcast.c (__pthread_cond_broadcast): Add pshared
1597         variable, pass it to lll_lock, lll_unlock, lll_futex_requeue and
1598         lll_futex_wake.  Don't use lll_futex_requeue if dependent mutex
1599         has PTHREAD_MUTEX_PSHARED_BIT bit set in its __data.__kind.
1600         * pthread_cond_destroy.c (__pthread_cond_destroy): Add pshared
1601         variable, pass it to lll_lock, lll_unlock, lll_futex_wake and
1602         lll_futex_wait.
1603         * pthread_cond_signal.c (__pthread_cond_signal): Add pshared
1604         variable, pass it to lll_lock, lll_unlock, lll_futex_wake_unlock and
1605         lll_futex_wake.
1606         * pthread_cond_timedwait.c (__pthread_cond_wait): Add
1607         pshared variable, pass it to lll_lock, lll_unlock,
1608         lll_futex_timedwait and lll_futex_wake.
1609         * pthread_cond_wait.c (__condvar_cleanup, __pthread_cond_wait): Add
1610         pshared variable, pass it to lll_lock, lll_unlock, lll_futex_wait
1611         and lll_futex_wake.
1612         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_futex_requeue,
1613         lll_futex_wake_unlock): Add private argument, use __lll_private_flag
1614         macro.
1615         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_requeue,
1616         lll_futex_wake_unlock): Likewise.
1617         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (lll_futex_requeue):
1618         Likewise.
1619         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (lll_futex_requeue,
1620         lll_futex_wake_unlock): Likewise.
1621         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_futex_requeue):
1622         Likewise.
1623         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue,
1624         lll_futex_wake_unlock): Likewise.
1625         (lll_futex_wake): Fix a typo.
1626         * sysdeps/unix/sysv/linux/pthread-pi-defines.sym (PS_BIT): Add.
1627         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
1628         (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
1629         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
1630         Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
1631         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
1632         (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
1633         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
1634         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
1635         (__pthread_cond_timedwait): Likewise.
1636         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:
1637         (__condvar_cleanup, __pthread_cond_wait): Likewise.
1638
1639 2007-08-05  Jakub Jelinek  <jakub@redhat.com>
1640
1641         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
1642         Don't use CGOTSETUP and CGOTRESTORE macros.
1643         (CGOTSETUP, CGOTRESTORE): Remove.
1644         <IS_IN_rtld> (CENABLE, CDISABLE): Don't use JUMPTARGET, branch to
1645         @local symbol.
1646
1647 2007-08-01  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1648
1649         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Remove
1650         definitions for private futexes.
1651         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Include
1652         kernel-features.h and lowlevellock.h.  Use private futexes if
1653         they are available.
1654         (__lll_lock_wait_private, __lll_unlock_wake_private): New.
1655         (__lll_mutex_lock_wait): Rename to
1656         (__lll_lock_wait): ... this.  Don't compile in for libc.so.
1657         (__lll_mutex_timedlock_wait): Rename to ...
1658         (__lll_timedlock_wait): ... this.  Use __NR_gettimeofday.
1659         Don't compile in for libc.so.
1660         (__lll_mutex_unlock_wake): Rename to ...
1661         (__lll_unlock_wake): ... this.  Don't compile in for libc.so.
1662         (__lll_timedwait_tid): Use __NR_gettimeofday.
1663         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Allow including
1664         the header from assembler.  Renamed all lll_mutex_* resp.
1665         lll_robust_mutex_* macros to lll_* resp. lll_robust_*.
1666         Renamed all LLL_MUTEX_LOCK_* macros to LLL_LOCK_*.
1667         (FUTEX_CMP_REQUEUE, FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE):
1668         Define.
1669         (__lll_lock_wait_private): Add prototype.
1670         (__lll_lock_wait, __lll_timedlock_wait, __lll_robust_lock_wait,
1671         __lll_robust_timedlock_wait, __lll_unlock_wake_private,
1672         __lll_unlock_wake): Likewise.
1673         (lll_lock): Add private argument.  Call __lll_lock_wait_private
1674         if private is constant LLL_PRIVATE.
1675         (lll_robust_lock, lll_cond_lock, lll_robust_cond_lock,
1676         lll_timedlock, lll_robust_timedlock): Add private argument.
1677         (lll_unlock): Add private argument.  Call __lll_unlock_wake_private
1678         if private is constant LLL_PRIVATE.
1679         (lll_robust_unlock, lll_robust_dead): Add private argument.
1680         (lll_lock_t): Remove.
1681         (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake,
1682         __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait,
1683         lll_cond_wake, lll_cond_broadcast): Remove.
1684         * sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S: Include
1685         kernel-features.h and lowlevellock.h.
1686         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove.
1687         (LOAD_FUTEX_WAIT): Define.
1688         (__lll_robust_mutex_lock_wait): Rename to ...
1689         (__lll_robust_lock_wait): ... this.  Add private argument.
1690         Use LOAD_FUTEX_WAIT macro.
1691         (__lll_robust_mutex_timedlock_wait): Rename to ...
1692         (__lll_robust_timedlock_wait): ... this.    Add private argument.
1693         Use __NR_gettimeofday.  Use LOAD_FUTEX_WAIT macro.
1694         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Include
1695         lowlevellock.h.
1696         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove.
1697         (pthread_barrier_wait): Use __lll_{lock,unlock}_* instead of
1698         __lll_mutex_{lock,unlock}_*.
1699         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Include
1700         lowlevellock.h and pthread-errnos.h.
1701         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE,
1702         FUTEX_CMP_REQUEUE, EINVAL): Remove.
1703         (__pthread_cond_broadcast): Use __lll_{lock,unlock}_* instead of
1704         __lll_mutex_{lock,unlock}_*.
1705         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Include
1706         lowlevellock.h and pthread-errnos.h.
1707         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE, EINVAL): Remove.
1708         (__pthread_cond_signal): Use __lll_{lock,unlock}_* instead of
1709         __lll_mutex_{lock,unlock}_*.
1710         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Include
1711         lowlevellock.h.
1712         (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE): Remove.
1713         (__pthread_cond_timedwait): Use __lll_{lock,unlock}_* instead of
1714         __lll_mutex_{lock,unlock}_*.  Use __NR_gettimeofday.
1715         (__condvar_tw_cleanup): Likewise.
1716         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Include
1717         lowlevellock.h.
1718         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove.
1719         (__pthread_cond_wait): Use __lll_{lock,unlock}_* instead of
1720         __lll_mutex_{lock,unlock}_*.
1721         ( __condvar_w_cleanup): Likewise.
1722         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Include lowlevellock.h.
1723         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
1724         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Include
1725         lowlevellock.h.
1726         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
1727         (__pthread_rwlock_rdlock): Use __lll_{lock,unlock}_* instead of
1728         __lll_mutex_{lock,unlock}_*.
1729         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Include
1730         lowlevellock.h.
1731         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE,
1732         FUTEX_PRIVATE_FLAG): Remove.
1733         (pthread_rwlock_timedrdlock): Use __lll_{lock,unlock}_* instead of
1734         __lll_mutex_{lock,unlock}_*.  Use __NR_gettimeofday.
1735         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Include
1736         lowlevellock.h.
1737         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE,
1738         FUTEX_PRIVATE_FLAG): Remove.
1739         (pthread_rwlock_timedwrlock): Use __lll_{lock,unlock}_* instead of
1740         __lll_mutex_{lock,unlock}_*.  Use __NR_gettimeofday.
1741         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Include
1742         lowlevellock.h.
1743         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
1744         (__pthread_rwlock_unlock): Use __lll_{lock,unlock}_* instead of
1745         __lll_mutex_{lock,unlock}_*.
1746         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Include
1747         lowlevellock.h.
1748         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
1749         (__pthread_rwlock_wrlock): Use __lll_{lock,unlock}_* instead of
1750         __lll_mutex_{lock,unlock}_*.
1751         * sysdeps/unix/sysv/linux/sh/sem_post.S: Include lowlevellock.h.
1752         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
1753         (__new_sem_post): Use standard initial exec code sequences.
1754         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Include
1755         lowlevellock.h.
1756         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE,
1757         FUTEX_PRIVATE_FLAG): Remove.
1758         (sem_timedwait): Use __NR_gettimeofday.  Use standard initial
1759         exec code sequences.
1760         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Include lowlevellock.h.
1761         (__new_sem_trywait): Use standard initial exec code sequences.
1762         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Include lowlevellock.h.
1763         (__new_sem_wait): Use standard initial exec code sequences.
1764
1765 2007-07-31  Anton Blanchard  <anton@samba.org>
1766
1767         * sysdeps/unix/sysv/linux/powerpc/sem_post.c (__new_sem_post):
1768         Use __asm __volatile (__lll_acq_instr ::: "memory") instead of
1769         atomic_full_barrier.
1770
1771 2007-07-31  Jakub Jelinek  <jakub@redhat.com>
1772
1773         * allocatestack.c (stack_cache_lock): Change type to int.
1774         (get_cached_stack, allocate_stack, __deallocate_stack,
1775         __make_stacks_executable, __find_thread_by_id, __nptl_setxid,
1776         __pthread_init_static_tls, __wait_lookup_done): Add LLL_PRIVATE
1777         as second argument to lll_lock and lll_unlock macros on
1778         stack_cache_lock.
1779         * pthread_create.c (__find_in_stack_list): Likewise.
1780         (start_thread): Similarly with pd->lock.  Use lll_robust_dead
1781         macro instead of lll_robust_mutex_dead, pass LLL_SHARED to it
1782         as second argument.
1783         * descr.h (struct pthread): Change lock and setxid_futex field
1784         type to int.
1785         * old_pthread_cond_broadcast.c (__pthread_cond_broadcast_2_0): Use
1786         LLL_LOCK_INITIALIZER instead of LLL_MUTEX_LOCK_INITIALIZER.
1787         * old_pthread_cond_signal.c (__pthread_cond_signal_2_0): Likewise.
1788         * old_pthread_cond_timedwait.c (__pthread_cond_timedwait_2_0):
1789         Likewise.
1790         * old_pthread_cond_wait.c (__pthread_cond_wait_2_0): Likewise.
1791         * pthread_cond_init.c (__pthread_cond_init): Likewise.
1792         * pthreadP.h (__attr_list_lock): Change type to int.
1793         * pthread_attr_init.c (__attr_list_lock): Likewise.
1794         * pthread_barrier_destroy.c (pthread_barrier_destroy): Pass
1795         ibarrier->private ^ FUTEX_PRIVATE_FLAG as second argument to
1796         lll_{,un}lock.
1797         * pthread_barrier_wait.c (pthread_barrier_wait): Likewise and
1798         also for lll_futex_{wake,wait}.
1799         * pthread_barrier_init.c (pthread_barrier_init): Make iattr
1800         a pointer to const.
1801         * pthread_cond_broadcast.c (__pthread_cond_broadcast): Pass
1802         LLL_SHARED as second argument to lll_{,un}lock.
1803         * pthread_cond_destroy.c (__pthread_cond_destroy): Likewise.
1804         * pthread_cond_signal.c (__pthread_cond_singal): Likewise.
1805         * pthread_cond_timedwait.c (__pthread_cond_timedwait): Likewise.
1806         * pthread_cond_wait.c (__condvar_cleanup, __pthread_cond_wait):
1807         Likewise.
1808         * pthread_getattr_np.c (pthread_getattr_np): Add LLL_PRIVATE
1809         as second argument to lll_{,un}lock macros on pd->lock.
1810         * pthread_getschedparam.c (__pthread_getschedparam): Likewise.
1811         * pthread_setschedparam.c (__pthread_setschedparam): Likewise.
1812         * pthread_setschedprio.c (pthread_setschedprio): Likewise.
1813         * tpp.c (__pthread_tpp_change_priority, __pthread_current_priority):
1814         Likewise.
1815         * sysdeps/pthread/createthread.c (do_clone, create_thread):
1816         Likewise.
1817         * pthread_once.c (once_lock): Change type to int.
1818         (__pthread_once): Pass LLL_PRIVATE as second argument to
1819         lll_{,un}lock macros on once_lock.
1820         * pthread_rwlock_rdlock.c (__pthread_rwlock_rdlock): Use
1821         lll_{,un}lock macros instead of lll_mutex_{,un}lock, pass
1822         rwlock->__data.__shared as second argument to them and similarly
1823         for lll_futex_w*.
1824         * pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock):
1825         Likewise.
1826         * pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock):
1827         Likewise.
1828         * pthread_rwlock_tryrdlock.c (__pthread_rwlock_tryrdlock): Likewise.
1829         * pthread_rwlock_trywrlock.c (__pthread_rwlock_trywrlock): Likewise.
1830         * pthread_rwlock_unlock.c (__pthread_rwlock_unlock): Likewise.
1831         * pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock): Likewise.
1832         * sem_close.c (sem_close): Pass LLL_PRIVATE as second argument
1833         to lll_{,un}lock macros on __sem_mappings_lock.
1834         * sem_open.c (check_add_mapping): Likewise.
1835         (__sem_mappings_lock): Change type to int.
1836         * semaphoreP.h (__sem_mappings_lock): Likewise.
1837         * pthread_mutex_lock.c (LLL_MUTEX_LOCK, LLL_MUTEX_TRYLOCK,
1838         LLL_ROBUST_MUTEX_LOCK): Use lll_{,try,robust_}lock macros
1839         instead of lll_*mutex_*, pass LLL_SHARED as last
1840         argument.
1841         (__pthread_mutex_lock): Use lll_unlock instead of lll_mutex_unlock,
1842         pass LLL_SHARED as last argument.
1843         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c (LLL_MUTEX_LOCK,
1844         LLL_MUTEX_TRYLOCK, LLL_ROBUST_MUTEX_LOCK): Use
1845         lll_{cond_,cond_try,robust_cond}lock macros instead of lll_*mutex_*,
1846         pass LLL_SHARED as last argument.
1847         * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Use
1848         lll_{timed,try,robust_timed,un}lock instead of lll_*mutex*, pass
1849         LLL_SHARED as last argument.
1850         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Similarly.
1851         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt):
1852         Similarly.
1853         * sysdeps/pthread/bits/libc-lock.h (__libc_lock_lock,
1854         __libc_lock_lock_recursive, __libc_lock_unlock,
1855         __libc_lock_unlock_recursive): Pass LLL_PRIVATE as second
1856         argument to lll_{,un}lock.
1857         * sysdeps/pthread/bits/stdio-lock.h (_IO_lock_lock,
1858         _IO_lock_unlock): Likewise.
1859         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Don't use
1860         compound literal.
1861         * sysdeps/unix/sysv/linux/unregister-atfork.c (__unregister_atfork):
1862         Pass LLL_PRIVATE as second argument to lll_{,un}lock macros on
1863         __fork_lock.
1864         * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork,
1865         free_mem): Likewise.
1866         (__fork_lock): Change type to int.
1867         * sysdeps/unix/sysv/linux/fork.h (__fork_lock): Likewise.
1868         * sysdeps/unix/sysv/linux/sem_post.c (__new_sem_post): Pass
1869         isem->private ^ FUTEX_PRIVATE_FLAG as second argument to
1870         lll_futex_wake.
1871         * sysdeps/unix/sysv/linux/sem_timedwait.c (sem_timedwait): Likewise.
1872         * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Likewise.
1873         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait_private):
1874         New function.
1875         (__lll_lock_wait, __lll_timedlock_wait): Add private argument and
1876         pass it through to lll_futex_*wait, only compile in when
1877         IS_IN_libpthread.
1878         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c
1879         (__lll_robust_lock_wait, __lll_robust_timedlock_wait): Add private
1880         argument and pass it through to lll_futex_*wait.
1881         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Renamed all
1882         lll_mutex_* resp. lll_robust_mutex_* macros to lll_* resp.
1883         lll_robust_*.  Renamed all __lll_mutex_* resp. __lll_robust_mutex_*
1884         inline functions to __lll_* resp. __lll_robust_*.
1885         (LLL_MUTEX_LOCK_INITIALIZER): Remove.
1886         (lll_mutex_dead): Add private argument.
1887         (__lll_lock_wait_private): New prototype.
1888         (__lll_lock_wait, __lll_robust_lock_wait, __lll_lock_timedwait,
1889         __lll_robust_lock_timedwait): Add private argument to prototypes.
1890         (__lll_lock): Add private argument, if it is constant LLL_PRIVATE,
1891         call __lll_lock_wait_private, otherwise pass private to
1892         __lll_lock_wait.
1893         (__lll_robust_lock, __lll_cond_lock, __lll_timedlock,
1894         __lll_robust_timedlock): Add private argument, pass it to
1895         __lll_*wait functions.
1896         (__lll_unlock): Add private argument, if it is constant LLL_PRIVATE,
1897         call __lll_unlock_wake_private, otherwise pass private to
1898         __lll_unlock_wake.
1899         (__lll_robust_unlock): Add private argument, pass it to
1900         __lll_robust_unlock_wake.
1901         (lll_lock, lll_robust_lock, lll_cond_lock, lll_timedlock,
1902         lll_robust_timedlock, lll_unlock, lll_robust_unlock): Add private
1903         argument, pass it through to __lll_* inline function.
1904         (__lll_mutex_unlock_force, lll_mutex_unlock_force): Remove.
1905         (lll_lock_t): Remove.
1906         (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake,
1907         __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait,
1908         lll_cond_wake, lll_cond_broadcast): Remove.
1909         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
1910         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
1911         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
1912         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
1913         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Allow including
1914         the header from assembler.  Renamed all lll_mutex_* resp.
1915         lll_robust_mutex_* macros to lll_* resp. lll_robust_*.
1916         (LOCK, FUTEX_CMP_REQUEUE, FUTEX_WAKE_OP,
1917         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
1918         (LLL_MUTEX_LOCK_INITIALIZER, LLL_MUTEX_LOCK_INITIALIZER_LOCKED,
1919         LLL_MUTEX_LOCK_INITIALIZER_WAITERS): Remove.
1920         (__lll_mutex_lock_wait, __lll_mutex_timedlock_wait,
1921         __lll_mutex_unlock_wake, __lll_lock_wait, __lll_unlock_wake):
1922         Remove prototype.
1923         (__lll_trylock_asm, __lll_lock_asm_start, __lll_unlock_asm): Define.
1924         (lll_robust_trylock, lll_cond_trylock): Use LLL_LOCK_INITIALIZER*
1925         rather than LLL_MUTEX_LOCK_INITIALIZER* macros.
1926         (lll_trylock): Likewise, use __lll_trylock_asm, pass
1927         MULTIPLE_THREADS_OFFSET as another asm operand.
1928         (lll_lock): Add private argument, use __lll_lock_asm_start, pass
1929         MULTIPLE_THREADS_OFFSET as last asm operand, call
1930         __lll_lock_wait_private if private is constant LLL_PRIVATE,
1931         otherwise pass private as another argument to __lll_lock_wait.
1932         (lll_robust_lock, lll_cond_lock, lll_robust_cond_lock,
1933         lll_timedlock, lll_robust_timedlock): Add private argument, pass
1934         private as another argument to __lll_*lock_wait call.
1935         (lll_unlock): Add private argument, use __lll_unlock_asm, pass
1936         MULTIPLE_THREADS_OFFSET as another asm operand, call
1937         __lll_unlock_wake_private if private is constant LLL_PRIVATE,
1938         otherwise pass private as another argument to __lll_unlock_wake.
1939         (lll_robust_unlock): Add private argument, pass private as another
1940         argument to __lll_unlock_wake.
1941         (lll_robust_dead): Add private argument, use __lll_private_flag
1942         macro.
1943         (lll_islocked): Use LLL_LOCK_INITIALIZER instead of
1944         LLL_MUTEX_LOCK_INITIALIZER.
1945         (lll_lock_t): Remove.
1946         (LLL_LOCK_INITIALIZER_WAITERS): Define.
1947         (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake,
1948         __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait,
1949         lll_cond_wake, lll_cond_broadcast): Remove.
1950         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
1951         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Revert
1952         2007-05-2{3,9} changes.
1953         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Include
1954         kernel-features.h and lowlevellock.h.
1955         (LOAD_PRIVATE_FUTEX_WAIT): Define.
1956         (LOAD_FUTEX_WAIT): Rewritten.
1957         (LOCK, SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't
1958         define.
1959         (__lll_lock_wait_private, __lll_unlock_wake_private): New functions.
1960         (__lll_mutex_lock_wait): Rename to ...
1961         (__lll_lock_wait): ... this.  Take futex addr from %edx instead of
1962         %ecx, %ecx is now private argument.  Don't compile in for libc.so.
1963         (__lll_mutex_timedlock_wait): Rename to ...
1964         (__lll_timedlock_wait): ... this.  Use __NR_gettimeofday.  %esi
1965         contains private argument.  Don't compile in for libc.so.
1966         (__lll_mutex_unlock_wake): Rename to ...
1967         (__lll_unlock_wake): ... this.  %ecx contains private argument.
1968         Don't compile in for libc.so.
1969         (__lll_timedwait_tid): Use __NR_gettimeofday.
1970         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: Include
1971         kernel-features.h and lowlevellock.h.
1972         (LOAD_FUTEX_WAIT): Define.
1973         (LOCK, SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't
1974         define.
1975         (__lll_robust_mutex_lock_wait): Rename to ...
1976         (__lll_robust_lock_wait): ... this.  Futex addr is now in %edx
1977         argument, %ecx argument contains private.  Use LOAD_FUTEX_WAIT
1978         macro.
1979         (__lll_robust_mutex_timedlock_wait): Rename to ...
1980         (__lll_robust_timedlock_wait): ... this.  Use __NR_gettimeofday.
1981         %esi argument contains private, use LOAD_FUTEX_WAIT macro.
1982         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Include
1983         lowlevellock.h.
1984         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
1985         (pthread_barrier_wait): Rename __lll_mutex_* to __lll_*, pass
1986         PRIVATE(%ebx) ^ LLL_SHARED as private argument in %ecx to
1987         __lll_lock_wait and __lll_unlock_wake, pass MUTEX(%ebx) address
1988         to __lll_lock_wait in %edx.
1989         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S:
1990         Include lowlevellock.h and pthread-errnos.h.
1991         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE,
1992         FUTEX_CMP_REQUEUE, EINVAL, LOCK): Don't define.
1993         (__pthread_cond_broadcast): Rename __lll_mutex_* to __lll_*, pass
1994         cond_lock address in %edx rather than %ecx to __lll_lock_wait,
1995         pass LLL_SHARED in %ecx to both __lll_lock_wait and
1996         __lll_unlock_wake.
1997         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S:
1998         Include lowlevellock.h and pthread-errnos.h.
1999         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_WAKE_OP,
2000         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE, EINVAL, LOCK): Don't define.
2001         (__pthread_cond_signal): Rename __lll_mutex_* to __lll_*, pass
2002         cond_lock address in %edx rather than %ecx to __lll_lock_wait,
2003         pass LLL_SHARED in %ecx to both __lll_lock_wait and
2004         __lll_unlock_wake.
2005         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
2006         Include lowlevellock.h.
2007         (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE, LOCK):
2008         Don't define.
2009         (__pthread_cond_timedwait): Rename __lll_mutex_* to __lll_*, pass
2010         cond_lock address in %edx rather than %ecx to __lll_lock_wait,
2011         pass LLL_SHARED in %ecx to both __lll_lock_wait and
2012         __lll_unlock_wake.  Use __NR_gettimeofday.
2013         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
2014         Include lowlevellock.h.
2015         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
2016         (__pthread_cond_wait, __condvar_w_cleanup): Rename __lll_mutex_*
2017         to __lll_*, pass cond_lock address in %edx rather than %ecx to
2018         __lll_lock_wait, pass LLL_SHARED in %ecx to both __lll_lock_wait
2019         and __lll_unlock_wake.
2020         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S:
2021         Include lowlevellock.h.
2022         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
2023         (__pthread_rwlock_rdlock): Rename __lll_mutex_* to __lll_*, pass
2024         MUTEX(%ebx) address in %edx rather than %ecx to
2025         __lll_lock_wait, pass PSHARED(%ebx) in %ecx to both __lll_lock_wait
2026         and __lll_unlock_wake.  Move return value from %ecx to %edx
2027         register.
2028         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
2029         Include lowlevellock.h.
2030         (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE, LOCK):
2031         Don't define.
2032         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*, pass
2033         MUTEX(%ebp) address in %edx rather than %ecx to
2034         __lll_lock_wait, pass PSHARED(%ebp) in %ecx to both __lll_lock_wait
2035         and __lll_unlock_wake.  Move return value from %ecx to %edx
2036         register.  Use __NR_gettimeofday.
2037         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
2038         Include lowlevellock.h.
2039         (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE, LOCK):
2040         Don't define.
2041         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*, pass
2042         MUTEX(%ebp) address in %edx rather than %ecx to
2043         __lll_lock_wait, pass PSHARED(%ebp) in %ecx to both __lll_lock_wait
2044         and __lll_unlock_wake.  Move return value from %ecx to %edx
2045         register.  Use __NR_gettimeofday.
2046         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S:
2047         Include lowlevellock.h.
2048         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
2049         (__pthread_rwlock_unlock): Rename __lll_mutex_* to __lll_*, pass
2050         MUTEX(%edi) address in %edx rather than %ecx to
2051         __lll_lock_wait, pass PSHARED(%edi) in %ecx to both __lll_lock_wait
2052         and __lll_unlock_wake.
2053         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S:
2054         Include lowlevellock.h.
2055         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
2056         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*, pass
2057         MUTEX(%ebx) address in %edx rather than %ecx to
2058         __lll_lock_wait, pass PSHARED(%ebx) in %ecx to both __lll_lock_wait
2059         and __lll_unlock_wake.  Move return value from %ecx to %edx
2060         register.
2061         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Include
2062         lowlevellock.h.
2063         (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Don't
2064         define.
2065         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Include lowlevellock.h.
2066         (LOCK, SYS_futex, FUTEX_WAKE): Don't define.
2067         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Include
2068         lowlevellock.h.
2069         (LOCK, SYS_futex, SYS_gettimeofday, FUTEX_WAIT): Don't define.
2070         (sem_timedwait): Use __NR_gettimeofday.
2071         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Include
2072         lowlevellock.h.
2073         (LOCK): Don't define.
2074         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Include
2075         lowlevellock.h.
2076         (LOCK, SYS_futex, FUTEX_WAIT): Don't define.
2077         * sysdeps/unix/sysv/linux/powerpc/sem_post.c: Wake only when there
2078         are waiters.
2079         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: Revert
2080         2007-05-2{3,9} changes.
2081         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Include
2082         kernel-features.h and lowlevellock.h.
2083         (LOAD_PRIVATE_FUTEX_WAIT): Define.
2084         (LOAD_FUTEX_WAIT): Rewritten.
2085         (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't define.
2086         (__lll_lock_wait_private, __lll_unlock_wake_private): New functions.
2087         (__lll_mutex_lock_wait): Rename to ...
2088         (__lll_lock_wait): ... this.  %esi is now private argument.
2089         Don't compile in for libc.so.
2090         (__lll_mutex_timedlock_wait): Rename to ...
2091         (__lll_timedlock_wait): ... this.  %esi contains private argument.
2092         Don't compile in for libc.so.
2093         (__lll_mutex_unlock_wake): Rename to ...
2094         (__lll_unlock_wake): ... this.  %esi contains private argument.
2095         Don't compile in for libc.so.
2096         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: Include
2097         kernel-features.h and lowlevellock.h.
2098         (LOAD_FUTEX_WAIT): Define.
2099         (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't define.
2100         (__lll_robust_mutex_lock_wait): Rename to ...
2101         (__lll_robust_lock_wait): ... this.  %esi argument contains private.
2102         Use LOAD_FUTEX_WAIT macro.
2103         (__lll_robust_mutex_timedlock_wait): Rename to ...
2104         (__lll_robust_timedlock_wait): ... this. %esi argument contains
2105         private, use LOAD_FUTEX_WAIT macro.
2106         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Include
2107         lowlevellock.h.
2108         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
2109         (pthread_barrier_wait): Rename __lll_mutex_* to __lll_*, pass
2110         PRIVATE(%rdi) ^ LLL_SHARED as private argument in %esi to
2111         __lll_lock_wait and __lll_unlock_wake.
2112         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S:
2113         Include lowlevellock.h and pthread-errnos.h.
2114         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE,
2115         FUTEX_CMP_REQUEUE, EINVAL, LOCK): Don't define.
2116         (__pthread_cond_broadcast): Rename __lll_mutex_* to __lll_*,
2117         pass LLL_SHARED in %esi to both __lll_lock_wait and
2118         __lll_unlock_wake.
2119         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S:
2120         Include lowlevellock.h and pthread-errnos.h.
2121         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_WAKE_OP,
2122         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE, EINVAL, LOCK): Don't define.
2123         (__pthread_cond_signal): Rename __lll_mutex_* to __lll_*,
2124         pass LLL_SHARED in %esi to both __lll_lock_wait and
2125         __lll_unlock_wake.
2126         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:
2127         Include lowlevellock.h.
2128         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
2129         (__pthread_cond_timedwait): Rename __lll_mutex_* to __lll_*,
2130         pass LLL_SHARED in %esi to both __lll_lock_wait and
2131         __lll_unlock_wake.
2132         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:
2133         Include lowlevellock.h.
2134         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
2135         (__pthread_cond_wait, __condvar_cleanup): Rename __lll_mutex_*
2136         to __lll_*, pass LLL_SHARED in %esi to both __lll_lock_wait
2137         and __lll_unlock_wake.
2138         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S:
2139         Include lowlevellock.h.
2140         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK):
2141         Don't define.
2142         (__pthread_rwlock_rdlock): Rename __lll_mutex_* to __lll_*,
2143         pass PSHARED(%rdi) in %esi to both __lll_lock_wait
2144         and __lll_unlock_wake.
2145         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
2146         Include lowlevellock.h.
2147         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK):
2148         Don't define.
2149         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*,
2150         pass PSHARED(%rdi) in %esi to both __lll_lock_wait
2151         and __lll_unlock_wake.
2152         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
2153         Include lowlevellock.h.
2154         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK):
2155         Don't define.
2156         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*,
2157         pass PSHARED(%rdi) in %esi to both __lll_lock_wait
2158         and __lll_unlock_wake.
2159         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S:
2160         Include lowlevellock.h.
2161         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK):
2162         Don't define.
2163         (__pthread_rwlock_unlock): Rename __lll_mutex_* to __lll_*,
2164         pass PSHARED(%rdi) in %esi to both __lll_lock_wait
2165         and __lll_unlock_wake.
2166         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S:
2167         Include lowlevellock.h.
2168         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK):
2169         Don't define.
2170         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*,
2171         pass PSHARED(%rdi) in %ecx to both __lll_lock_wait
2172         and __lll_unlock_wake.
2173         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Include
2174         lowlevellock.h.
2175         (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Don't
2176         define.
2177         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Include lowlevellock.h.
2178         (LOCK, SYS_futex, FUTEX_WAKE): Don't define.
2179         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Include
2180         lowlevellock.h.
2181         (LOCK, SYS_futex, FUTEX_WAIT): Don't define.
2182         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Include
2183         lowlevellock.h.
2184         (LOCK): Don't define.
2185         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Include
2186         lowlevellock.h.
2187         (LOCK, SYS_futex, FUTEX_WAIT): Don't define.
2188         * sysdeps/unix/sysv/linux/sparc/internaltypes.h: New file.
2189         * sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c: New file.
2190         * sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c: New file.
2191         * sysdeps/unix/sysv/linux/sparc/pthread_barrier_wait.c: New file.
2192         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
2193         (__lll_lock_wait_private): New function.
2194         (__lll_lock_wait, __lll_timedlock_wait): Add private argument, pass
2195         it to lll_futex_*wait.  Don't compile in for libc.so.
2196         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_init.c:
2197         Remove.
2198         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c
2199         (struct sparc_pthread_barrier): Remove.
2200         (pthread_barrier_wait): Use union sparc_pthread_barrier instead of
2201         struct sparc_pthread_barrier.  Pass
2202         ibarrier->s.pshared ? LLL_SHARED : LLL_PRIVATE to lll_{,un}lock
2203         and lll_futex_wait macros.
2204         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_init.c:
2205         Remove.
2206         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c:
2207         Include sparc pthread_barrier_wait.c instead of generic one.
2208
2209 2007-07-30  Jakub Jelinek  <jakub@redhat.com>
2210
2211         * tst-rwlock14.c (do_test): Avoid warnings on 32-bit arches.
2212
2213         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
2214         (pthread_rwlock_timedrdlock): Copy futex retval to %esi rather than
2215         %ecx.
2216         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
2217         (pthread_rwlock_timedwrlock): Likewise.
2218         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
2219         (__pthread_rwlock_unlock): Fix MUTEX != 0 args to __lll_*.
2220
2221 2007-07-31  Jakub Jelinek  <jakub@redhat.com>
2222
2223         * sysdeps/sparc/tls.h (tcbhead_t): Add private_futex field.
2224
2225 2007-07-26  Jakub Jelinek  <jakub@redhat.com>
2226
2227         * tst-locale2.c (useless): Add return statement.
2228
2229 2007-07-24  Jakub Jelinek  <jakub@redhat.com>
2230
2231         * allocatestack.c (__nptl_setxid, __wait_lookup_done): Replace
2232         lll_private_futex_* (*) with lll_futex_* (*, LLL_PRIVATE).
2233         * pthread_create.c (start_thread): Likewise.
2234         * init.c (sighandler_setxid): Likewise.
2235         * sysdeps/alpha/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
2236         * sysdeps/ia64/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
2237         * sysdeps/i386/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
2238         * sysdeps/s390/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
2239         * sysdeps/powerpc/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
2240         * sysdeps/x86_64/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
2241         * sysdeps/sparc/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
2242         * sysdeps/sh/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
2243         * sysdeps/pthread/aio_misc.h (AIO_MISC_NOTIFY, AIO_MISC_WAIT):
2244         Likewise.
2245         * sysdeps/pthread/gai_misc.h (GAI_MISC_NOTIFY, GAI_MISC_WAIT):
2246         Likewise.
2247         * sysdeps/unix/sysv/linux/unregister-atfork.c (__unregister_atfork):
2248         Likewise.
2249         * sysdeps/unix/sysv/linux/rtld-lowlevel.h (__rtld_waitzero,
2250         __rtld_notify): Likewise.
2251         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Likewise.
2252         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (clear_once_control,
2253         __pthread_once): Likewise.
2254         * sysdeps/unix/sysv/linux/alpha/pthread_once.c (clear_once_control,
2255         __pthread_once): Add LLL_PRIVATE as last argument to lll_futex_*.
2256         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (FUTEX_PRIVATE_FLAG,
2257         LLL_PRIVATE, LLL_SHARED, __lll_private_flag): Define.
2258         (lll_futex_wait): Add private argument, define as wrapper around
2259         lll_futex_timed_wait.
2260         (lll_futex_timed_wait, lll_futex_wake): Add private argument,
2261         use __lll_private_flag macro.
2262         (lll_robust_mutex_dead, __lll_mutex_unlock, __lll_robust_mutex_unlock,
2263         __lll_mutex_unlock_force): Pass LLL_SHARED as last arg to lll_futex_*.
2264         * sysdeps/unix/sysv/linux/ia64/pthread_once.c (clear_once_control,
2265         __pthread_once): Add LLL_PRIVATE as last argument to lll_futex_*.
2266         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (FUTEX_PRIVATE_FLAG,
2267         LLL_PRIVATE, LLL_SHARED, __lll_private_flag): Define.
2268         (lll_futex_wait): Add private argument, define as wrapper around
2269         lll_futex_timed_wait.
2270         (lll_futex_timed_wait, lll_futex_wake): Add private argument,
2271         use __lll_private_flag macro.
2272         (__lll_mutex_unlock, __lll_robust_mutex_unlock, lll_wait_tid,
2273         __lll_mutex_unlock_force): Pass LLL_SHARED as last arg to lll_futex_*.
2274         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (__lll_private_flag):
2275         Define.
2276         (lll_futex_timed_wait, lll_futex_wake): Use it.
2277         (lll_private_futex_wait, lll_private_futex_timed_wait,
2278         lll_private_futex_wake): Removed.
2279         * sysdeps/unix/sysv/linux/s390/pthread_once.c (clear_once_control,
2280         __pthread_once): Add LLL_PRIVATE as last argument to lll_futex_*.
2281         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_PRIVATE_FLAG,
2282         LLL_PRIVATE, LLL_SHARED, __lll_private_flag): Define.
2283         (lll_futex_wait): Add private argument, define as wrapper around
2284         lll_futex_timed_wait.
2285         (lll_futex_timed_wait, lll_futex_wake): Add private argument,
2286         use __lll_private_flag macro.
2287         (lll_robust_mutex_dead, __lll_mutex_unlock, __lll_robust_mutex_unlock,
2288         lll_wait_tid, __lll_mutex_unlock_force): Pass LLL_SHARED as last arg
2289         to lll_futex_*.
2290         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
2291         (lll_private_futex_wait, lll_private_futex_timed_wait,
2292         lll_private_futex_wake): Removed.
2293         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (__lll_private_flag):
2294         Fix !__ASSUME_PRIVATE_FUTEX non-constant private case.
2295         (lll_private_futex_wait, lll_private_futex_timed_wait,
2296         lll_private_futex_wake): Removed.
2297         * sysdeps/unix/sysv/linux/sparc/pthread_once.c (clear_once_control,
2298         __pthread_once): Add LLL_PRIVATE as last argument to lll_futex_*.
2299         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (FUTEX_PRIVATE_FLAG,
2300         LLL_PRIVATE, LLL_SHARED, __lll_private_flag): Define.
2301         (lll_futex_wait): Add private argument, define as wrapper around
2302         lll_futex_timed_wait.
2303         (lll_futex_timed_wait, lll_futex_wake): Add private argument,
2304         use __lll_private_flag macro.
2305         (lll_robust_mutex_dead, __lll_mutex_unlock, __lll_robust_mutex_unlock,
2306         lll_wait_tid, __lll_mutex_unlock_force): Pass LLL_SHARED as last arg
2307         to lll_futex_*.
2308         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (__lll_private_flag):
2309         Define.
2310         (lll_futex_timed_wait, lll_futex_wake): Use it.
2311         (lll_private_futex_wait, lll_private_futex_timed_wait,
2312         lll_private_futex_wake): Removed.
2313
2314 2007-07-27  Jakub Jelinek  <jakub@redhat.com>
2315
2316         * sysdeps/sparc/tls.h (tcbhead_t): Move gscope_flag to the end
2317         of the structure for sparc32.
2318
2319 2007-07-26  Aurelien Jarno  <aurelien@aurel32.net>
2320
2321         * sysdeps/sparc/tls.h (tcbhead_t): Add gscope_flag.
2322
2323 2007-07-23  Ulrich Drepper  <drepper@redhat.com>
2324
2325         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: Fix
2326         code used when private futexes are assumed.
2327         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
2328         Likewise.
2329
2330 2007-07-23  Jakub Jelinek  <jakub@redhat.com>
2331
2332         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
2333         (__lll_private_flag): Define.
2334         (lll_futex_wait): Define as a wrapper around lll_futex_timed_wait.
2335         (lll_futex_timed_wait, lll_futex_wake, lll_futex_wake_unlock): Use
2336         __lll_private_flag.
2337         (lll_private_futex_wait, lll_private_futex_timedwait,
2338         lll_private_futex_wake): Define as wrapper around non-_private
2339         macros.
2340         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
2341         (__lll_private_flag): Define.
2342         (lll_futex_timed_wait, lll_futex_wake): Use __lll_private_flag.
2343         (lll_private_futex_wait, lll_private_futex_timedwait,
2344         lll_private_futex_wake): Define as wrapper around non-_private
2345         macros.
2346
2347 2007-07-10  Steven Munroe  <sjmunroe@us.ibm.com>
2348
2349         * pthread_rwlock_rdlock.c (__pthread_rwlock_rdlock): Add LLL_SHARED
2350         parameter to lll_futex_wait call.
2351         * pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock): Likewise.
2352
2353         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
2354         Replace lll_futex_wait with lll_private_futex_wait.
2355         * sysdeps/unix/sysv/linux/powerpc/sem_post.c (__new_sem_post):
2356         Add LLL_SHARED parameter to lll_futex_wake().
2357
2358         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Define LLL_PRIVATE
2359         LLL_SHARED, lll_private_futex_wait, lll_private_futex_timed_wait and
2360         lll_private_futex_wake.
2361         (lll_futex_wait): Add private parameter. Adjust FUTEX_PRIVATE_FLAG
2362         bit from private parm before syscall.
2363         (lll_futex_timed_wait): Likewise.
2364         (lll_futex_wake): Likewise.
2365         (lll_futex_wake_unlock): Likewise.
2366         (lll_mutex_unlock): Add LLL_SHARED parm to lll_futex_wake call.
2367         (lll_robust_mutex_unlock): Likewise.
2368         (lll_mutex_unlock_force): Likewise.
2369         (lll_wait_tid): Add LLL_SHARED parm to lll_futex_wait call.
2370
2371 2007-07-23  Ulrich Drepper  <drepper@redhat.com>
2372
2373         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: Fix
2374         compilation when unconditionally using private futexes.
2375         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
2376         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
2377         Likewise.
2378         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Likewise.
2379         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
2380
2381 2007-07-17  Jakub Jelinek  <jakub@redhat.com>
2382
2383         * sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock_clear_flags2):
2384         Define.
2385
2386 2007-07-06  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2387
2388         * sysdeps/sh/tls.h: Include stdlib.h, list.h, sysdep.h and
2389         kernel-features.h.
2390
2391 2007-05-16  Roland McGrath  <roland@redhat.com>
2392
2393         * init.c (__nptl_initial_report_events): New variable.
2394         (__pthread_initialize_minimal_internal): Initialize pd->report_events
2395         to that.
2396
2397 2007-06-22  Jakub Jelinek  <jakub@redhat.com>
2398
2399         * pthread_getattr_np.c (pthread_getattr_np): Clear cpuset and
2400         cpusetsize if pthread_getaffinity_np failed with ENOSYS.
2401
2402 2007-06-19  Ulrich Drepper  <drepper@redhat.com>
2403
2404         * sysdeps/unix/sysv/linux/rtld-lowlevel.h: Remove mrlock
2405         implementation.
2406
2407 2007-06-18  Ulrich Drepper  <drepper@redhat.com>
2408
2409         * pthreadP.h: Define PTHREAD_MUTEX_TYPE.
2410         * phtread_mutex_lock.c: Use PTHREAD_MUTEX_TYPE.
2411         * pthread_mutex_timedlock.c: Likewise.
2412         * pthread_mutex_trylock.c: Likewise.
2413         * pthread_mutex_unlock.c: Likewise.
2414
2415 2007-06-17  Andreas Schwab  <schwab@suse.de>
2416
2417         * sysdeps/pthread/pt-initfini.c: Tell gcc about the nonstandard
2418         sections.
2419
2420 2007-06-17  Ulrich Drepper  <drepper@redhat.com>
2421
2422         * allocatestack.c (allocate_stack): Make code compile if
2423         __ASSUME_PRIVATE_FUTEX is set.
2424
2425 2007-06-17  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2426
2427         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S:
2428         (__pthread_rwlock_rdlock): Don't use non SH-3/4 instruction.
2429         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S:
2430         (__pthread_rwlock_wrlock): Likewise.
2431         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S:
2432         (pthread_rwlock_timedrdlock): Likewise.
2433         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S:
2434         (pthread_rwlock_timedwrlock): Likewise.
2435         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S:
2436         (__pthread_rwlock_unlock): Likewise.
2437
2438 2007-06-10  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2439
2440         * sysdeps/sh/tcb-offsets.sym: Add PRIVATE_FUTEX.
2441         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Include endian.h.
2442         Split __flags into __flags, __shared, __pad1 and __pad2.
2443         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Use private
2444         futexes if they are available.
2445         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Adjust so that change
2446         in libc-lowlevellock.S allow using private futexes.
2447         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define
2448         FUTEX_PRIVATE_FLAG.  Add additional parameter to lll_futex_wait,
2449         lll_futex_timed_wait and lll_futex_wake.  Change lll_futex_wait
2450         to call lll_futex_timed_wait.  Add lll_private_futex_wait,
2451         lll_private_futex_timed_wait and lll_private_futex_wake.
2452         (lll_robust_mutex_unlock): Fix typo.
2453         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Use private
2454         field in futex command setup.
2455         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Use
2456         COND_NWAITERS_SHIFT instead of COND_CLOCK_BITS.
2457         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
2458         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Use private futexes
2459         if they are available.  Remove clear_once_control.
2460         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Use private
2461         futexes if they are available.
2462         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
2463         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
2464         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
2465         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
2466         * sysdeps/unix/sysv/linux/sh/sem_post.S: Add private futex support.
2467         Wake only when there are waiters.
2468         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Add private futex
2469         support.  Indicate that there are waiters.  Remove unnecessary
2470         extra cancellation test.
2471         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.  Removed
2472         left-over duplication of __sem_wait_cleanup.
2473
2474 2007-06-07  Ulrich Drepper  <drepper@redhat.com>
2475
2476         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Add additional
2477         parameter to lll_futex_wait, lll_futex_timed_wait, and
2478         lll_futex_wake.  Change lll_futex_wait to call lll_futex_timed_wait.
2479         Add lll_private_futex_wait, lll_private_futex_timed_wait, and
2480         lll_private_futex_wake.
2481         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
2482         * allocatestack.c: Adjust use of lll_futex_* macros.
2483         * init.c: Likewise.
2484         * lowlevellock.h: Likewise.
2485         * pthread_barrier_wait.c: Likewise.
2486         * pthread_cond_broadcast.c: Likewise.
2487         * pthread_cond_destroy.c: Likewise.
2488         * pthread_cond_signal.c: Likewise.
2489         * pthread_cond_timedwait.c: Likewise.
2490         * pthread_cond_wait.c: Likewise.
2491         * pthread_create.c: Likewise.
2492         * pthread_mutex_lock.c: Likewise.
2493         * pthread_mutex_setprioceiling.c: Likewise.
2494         * pthread_mutex_timedlock.c: Likewise.
2495         * pthread_mutex_unlock.c: Likewise.
2496         * pthread_rwlock_timedrdlock.c: Likewise.
2497         * pthread_rwlock_timedwrlock.c: Likewise.
2498         * pthread_rwlock_unlock.c: Likewise.
2499         * sysdeps/alpha/tls.h: Likewise.
2500         * sysdeps/i386/tls.h: Likewise.
2501         * sysdeps/ia64/tls.h: Likewise.
2502         * sysdeps/powerpc/tls.h: Likewise.
2503         * sysdeps/pthread/aio_misc.h: Likewise.
2504         * sysdeps/pthread/gai_misc.h: Likewise.
2505         * sysdeps/s390/tls.h: Likewise.
2506         * sysdeps/sh/tls.h: Likewise.
2507         * sysdeps/sparc/tls.h: Likewise.
2508         * sysdeps/unix/sysv/linux/fork.c: Likewise.
2509         * sysdeps/unix/sysv/linux/lowlevellock.c: Likewise.
2510         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c: Likewise.
2511         * sysdeps/unix/sysv/linux/rtld-lowlevel.h: Likewise.
2512         * sysdeps/unix/sysv/linux/sem_post.c: Likewise.
2513         * sysdeps/unix/sysv/linux/sem_timedwait.c: Likewise.
2514         * sysdeps/unix/sysv/linux/sem_wait.c: Likewise.
2515         * sysdeps/unix/sysv/linux/unregister-atfork.c: Likewise.
2516         * sysdeps/unix/sysv/linux/sparc/pthread_once.c: Likewise.
2517         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c:
2518         Likewise.
2519         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c: Likewise.
2520         * sysdeps/x86_64/tls.h: Likewise.
2521
2522 2007-05-29  Ulrich Drepper  <drepper@redhat.com>
2523
2524         * pthread_getattr_np.c: No need to install a cancellation handler,
2525         this is no cancellation point.
2526         * pthread_getschedparam.c: Likewise.
2527         * pthread_setschedparam.c: Likewise.
2528         * pthread_setschedprio.c: Likewise.
2529         * sysdeps/unix/sysv/linux/lowlevellock.c: Remove all traces of
2530         lll_unlock_wake_cb.
2531         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise.
2532         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
2533         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
2534         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
2535         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
2536         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
2537         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
2538         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
2539         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
2540         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c: Likewise.
2541         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
2542         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
2543
2544         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Checking
2545         whether there are more than one thread makes no sense here since
2546         we only call the slow path if the locks are taken.
2547         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: Likewise.
2548
2549         * sysdeps/unix/sysv/linux/internaltypes.h: Introduce
2550         COND_NWAITERS_SHIFT.
2551         * pthread_cond_destroy.c: Use COND_NWAITERS_SHIFT instead of
2552         COND_CLOCK_BITS.
2553         * pthread_cond_init.c: Likewise.
2554         * pthread_cond_timedwait.c: Likewise.
2555         * pthread_cond_wait.c: Likewise.
2556         * pthread_condattr_getclock.c: Likewise.
2557         * pthread_condattr_setclock.c: Likewise.
2558         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Likewise.
2559         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
2560         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
2561         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
2562         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
2563
2564 2007-05-28  Jakub Jelinek  <jakub@redhat.com>
2565
2566         * sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c: Include
2567         unistd.h.
2568
2569         * sysdeps/i386/tls.h (THREAD_GSCOPE_RESET_FLAG): Use explicit
2570         insn suffix.
2571         (THREAD_GSCOPE_GET_FLAG): Remove.
2572         * sysdeps/x86_64/tls.h (THREAD_GSCOPE_GET_FLAG): Remove.
2573         * allocatestack.c (__wait_lookup_done): Revert 2007-05-24
2574         changes.
2575         * sysdeps/powerpc/tls.h (tcbhead_t): Remove gscope_flag.
2576         (THREAD_GSCOPE_GET_FLAG): Remove.
2577         (THREAD_GSCOPE_RESET_FLAG): Use THREAD_SELF->header.gscope_flag
2578         instead of THREAD_GSCOPE_GET_FLAG.
2579         (THREAD_GSCOPE_SET_FLAG): Likewise.  Add atomic_write_barrier after
2580         it.
2581         * sysdeps/s390/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
2582         THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
2583         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
2584         THREAD_GSCOPE_WAIT): Define.
2585         * sysdeps/sparc/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
2586         THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
2587         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
2588         THREAD_GSCOPE_WAIT): Define.
2589         * sysdeps/sh/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
2590         THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
2591         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
2592         THREAD_GSCOPE_WAIT): Define.
2593         * sysdeps/ia64/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
2594         THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
2595         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
2596         THREAD_GSCOPE_WAIT): Define.
2597
2598 2007-05-24  Richard Henderson  <rth@redhat.com>
2599
2600         * descr.h (struct pthread): Add header.gscope_flag.
2601         * sysdeps/alpha/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
2602         THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
2603         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
2604         THREAD_GSCOPE_WAIT): Define.
2605
2606 2007-05-27  Ulrich Drepper  <drepper@redhat.com>
2607
2608         * init.c: Make it compile with older kernel headers.
2609
2610         * tst-initializers1.c: Show through exit code which test failed.
2611
2612         * pthread_rwlock_init.c: Also initialize __shared field.
2613         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Split __flags
2614         element in rwlock structure into four byte elements.  One of them is
2615         the new __shared element.
2616         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h [__WORDSIZE=32]:
2617         Likewise.
2618         [__WORDSIZE=64]: Renamed __pad1 element int rwlock structure to
2619         __shared, adjust names of other padding elements.
2620         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
2621         * sysdeps/pthread/pthread.h: Adjust rwlock initializers.
2622         * sysdeps/unix/sysv/linux/lowlevelrwlock.sym: Add PSHARED.
2623         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Define
2624         FUTEX_PRIVATE_FLAG.
2625         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Change main
2626         futex to use private operations if possible.
2627         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
2628         Likewise.
2629         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
2630         Likewise.
2631         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Likewise.
2632         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
2633         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
2634         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
2635         Likewise.
2636         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
2637         Likewise.
2638         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
2639         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
2640
2641 2007-05-26  Ulrich Drepper  <drepper@redhat.com>
2642
2643         * pthreadP.h (PTHREAD_RWLOCK_PREFER_READER_P): Define.
2644         * pthread_rwlock_rdlock.c: Use PTHREAD_RWLOCK_PREFER_READER_P.
2645         * pthread_rwlock_timedrdlock.c: Likewise.
2646         * pthread_rwlock_tryrdlock.c: Likewise.
2647
2648         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S (sem_trywait): Tiny
2649         optimization.
2650
2651         * sysdeps/unix/sysv/linux/sem_wait.c: Add missing break.
2652         * sysdeps/unix/sysv/linux/sem_timedwait.c: Removed left-over
2653         duplication of __sem_wait_cleanup.
2654
2655         * allocatestack.c: Revert last change.
2656         * init.c: Likewise.
2657         * sysdeps/i386/tls.h: Likewise.
2658         * sysdeps/x86_64/tls.h: Likewise.
2659         * descr.h [TLS_DTV_AT_TP] (struct pthread): Add private_futex field to
2660         header structure.
2661         * sysdeps/powerpc/tcb-offsets.sym: Add PRIVATE_FUTEX_OFFSET.
2662
2663         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_barrier):
2664         Add private field.
2665         * sysdeps/unix/sysv/linux/lowlevelbarrier.sym: Add PRIVATE definition.
2666         * pthread_barrier_init.c: Set private flag if pshared and private
2667         futexes are supported.
2668         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Use
2669         private field in futex command setup.
2670         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Likewise.
2671
2672 2007-05-25  Ulrich Drepper  <drepper@redhat.com>
2673
2674         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Add private futex
2675         support.
2676         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
2677         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
2678         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
2679         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
2680         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
2681
2682         * semaphoreP.h: Declare __old_sem_init and __old_sem_wait.
2683         * sem_init.c (__new_sem_init): Rewrite to initialize all three
2684         fields in the structure.
2685         (__old_sem_init): New function.
2686         * sem_open.c: Initialize all fields of the structure.
2687         * sem_getvalue.c: Adjust for renamed element.
2688         * sysdeps/unix/sysv/linux/Makefile [subdir=nptl]
2689         (gen-as-const-headers): Add structsem.sym.
2690         * sysdeps/unix/sysv/linux/structsem.sym: New file.
2691         * sysdeps/unix/sysv/linux/internaltypes.h: Rename struct sem to
2692         struct new_sem.  Add struct old_sem.
2693         * sysdeps/unix/sysv/linux/sem_post.c: Wake only when there are waiters.
2694         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
2695         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
2696         * sysdeps/unix/sysv/linux/sem_wait.c: Indicate that there are waiters.
2697         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
2698         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
2699         * sysdeps/unix/sysv/linux/sem_timedwait.c: Likewise.
2700         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
2701         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
2702         * Makefile (tests): Add tst-sem10, tst-sem11, tst-sem12.
2703         * tst-sem10.c: New file.
2704         * tst-sem11.c: New file.
2705         * tst-sem12.c: New file.
2706         * tst-typesizes.c: Test struct new_sem and struct old_sem instead
2707         of struct sem.
2708
2709 2007-05-25  Ulrich Drepper  <drepper@redhat.com>
2710             Jakub Jelinek  <jakub@redhat.com>
2711
2712         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
2713         Move __pthread_enable_asynccancel right before futex syscall.
2714         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
2715         Likewise.
2716
2717 2007-05-24  Jakub Jelinek  <jakub@redhat.com>
2718
2719         * sysdeps/i386/tls.h (THREAD_SET_PRIVATE_FUTEX,
2720         THREAD_COPY_PRIVATE_FUTEX): Define.
2721         * sysdeps/x86_64/tls.h (THREAD_SET_PRIVATE_FUTEX,
2722         THREAD_COPY_PRIVATE_FUTEX): Define.
2723         * allocatestack.c (allocate_stack): Use THREAD_COPY_PRIVATE_FUTEX.
2724         * init.c (__pthread_initialize_minimal_internal): Use
2725         THREAD_SET_PRIVATE_FUTEX.
2726
2727         * sysdeps/powerpc/tls.h (tcbhead_t): Add gscope_flag.
2728         (THREAD_GSCOPE_FLAG_UNUSED, THREAD_GSCOPE_FLAG_USED,
2729         THREAD_GSCOPE_FLAG_WAIT): Define.
2730         (THREAD_GSCOPE_GET_FLAG, THREAD_GSCOPE_SET_FLAG,
2731         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_WAIT): Define.
2732         * sysdeps/i386/tls.h (THREAD_GSCOPE_WAIT): Don't use
2733         PTR_DEMANGLE.
2734         (THREAD_GSCOPE_GET_FLAG): Define.
2735         * sysdeps/x86_64/tls.h (THREAD_GSCOPE_GET_FLAG): Define.
2736         * allocatestack.c (__wait_lookup_done): Use THREAD_GSCOPE_GET_FLAG
2737         instead of ->header.gscope_flag directly.
2738
2739 2007-05-23  Ulrich Drepper  <drepper@redhat.com>
2740
2741         * init.c (__pthread_initialize_minimal_internal): Check whether
2742         private futexes are available.
2743         * allocatestack.c (allocate_stack): Copy private_futex field from
2744         current thread into the new stack.
2745         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: Use private
2746         futexes if they are available.
2747         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise
2748         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Adjust so that change
2749         in libc-lowlevellock.S allow using private futexes.
2750         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
2751         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Define
2752         FUTEX_PRIVATE_FLAG.
2753         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
2754         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Use private futexes
2755         if they are available.
2756         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise.
2757         * sysdeps/x86_64/tcb-offsets.sym: Add PRIVATE_FUTEX.
2758         * sysdeps/i386/tcb-offsets.sym: Likewise.
2759         * sysdeps/x86_64/tls.h (tcbhead_t): Add private_futex field.
2760         * sysdeps/i386/tls.h (tcbhead_t): Likewise.
2761
2762 2007-05-21  Ulrich Drepper  <drepper@redhat.com>
2763
2764         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
2765         Remove ptr_wait_lookup_done again.
2766         * init.c (pthread_functions): Don't add .ptr_wait_lookup_done here.
2767         (__pthread_initialize_minimal_internal): Initialize
2768         _dl_wait_lookup_done pointer in _rtld_global directly.
2769         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
2770         Remove code to code _dl_wait_lookup_done.
2771         * sysdeps/x86_64/tls.h (THREAD_GSCOPE_WAIT): The pointer is not
2772         encrypted for now.
2773
2774 2007-05-21  Jakub Jelinek  <jakub@redhat.com>
2775
2776         * tst-robust9.c (do_test): Don't fail if ENABLE_PI and
2777         pthread_mutex_init failed with ENOTSUP.
2778
2779 2007-05-19  Ulrich Drepper  <drepper@redhat.com>
2780
2781         * allocatestack.c (__wait_lookup_done): New function.
2782         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
2783         Add ptr_wait_lookup_done.
2784         * init.c (pthread_functions): Initialize .ptr_wait_lookup_done.
2785         * pthreadP.h: Declare __wait_lookup_done.
2786         * sysdeps/i386/tls.h (tcbhead_t): Add gscope_flag.
2787         Define macros to implement reference handling of global scope.
2788         * sysdeps/x86_64/tls.h: Likewise.
2789         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
2790         Initialize GL(dl_wait_lookup_done).
2791
2792 2007-05-17  Ulrich Drepper  <drepper@redhat.com>
2793
2794         [BZ #4512]
2795         * pthread_mutex_lock.c: Preserve FUTEX_WAITERS bit when dead owner
2796         is detected.
2797         * pthread_mutex_timedlock.c: Likewise.
2798         * pthread_mutex_trylock.c: Likewise.
2799         Patch in part by Atsushi Nemoto <anemo@mba.ocn.ne.jp>.
2800
2801         * Makefile (tests): Add tst-robust9 and tst-robustpi9.
2802         * tst-robust9.c: New file.
2803         * tst-robustpi9.c: New file.
2804
2805         * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Remove
2806         unnecessary extra cancellation test.
2807
2808 2007-05-14  Ulrich Drepper  <drepper@redhat.com>
2809
2810         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Remove unnecessary
2811         extra cancellation test.
2812         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
2813
2814 2007-05-10  Ulrich Drepper  <drepper@redhat.com>
2815
2816         * descr.h (struct pthread): Rearrange members to fill hole in
2817         64-bit layout.
2818
2819         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
2820         (__pthread_setaffinity_new): If syscall was successful and
2821         RESET_VGETCPU_CACHE is defined, use it before returning.
2822         * sysdeps/unix/sysv/linux/x86_64/pthread_setaffinity.c: New file.
2823
2824 2007-05-10  Jakub Jelinek  <jakub@redhat.com>
2825
2826         [BZ #4455]
2827         * tst-align2.c: Include stackinfo.h.
2828         * tst-getpid1.c: Likewise.
2829
2830 2007-05-02  Carlos O'Donell  <carlos@systemhalted.org>
2831
2832         [BZ #4455]
2833         * tst-align2.c (do_test): Add _STACK_GROWS_UP case.
2834         * tst-getpid1.c (do_test): Likewise.
2835
2836         [BZ #4456]
2837         * allocatestack.c (change_stack_perm): Add _STACK_GROWS_UP case.
2838         (allocate_stack): Likewise.
2839
2840 2007-05-07  Ulrich Drepper  <drepper@redhat.com>
2841
2842         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c
2843         (__lll_robust_lock_wait): Fix race caused by reloading of futex value.
2844         (__lll_robust_timedlock_wait): Likewise.
2845         Reported by Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>.
2846
2847 2007-05-06  Mike Frysinger  <vapier@gentoo.org>
2848
2849         [BZ #4465]
2850         * tst-cancel-wrappers.sh: Set C["fdatasync"] to 1.
2851         * tst-cancel4.c (tf_fdatasync): New test.
2852
2853 2007-04-27  Ulrich Drepper  <drepper@redhat.com>
2854
2855         [BZ #4392]
2856         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Treat error
2857         check mutexes like normal mutexes.
2858
2859         [BZ #4306]
2860         * sysdeps/unix/sysv/linux/timer_create.c (timer_create):
2861         Initialize the whole sigevent structure to appease valgrind.
2862
2863 2007-04-25  Ulrich Drepper  <drepper@redhat.com>
2864
2865         * sysdeps/x86_64/tls.h (tcbhead_t): Add vgetcpu_cache.
2866         * sysdeps/x86_64/tcb-offsets.sym: Add VGETCPU_CACHE_OFFSET.
2867
2868 2007-04-06  Ulrich Drepper  <drepper@redhat.com>
2869
2870         * tst-locale1.c: Avoid warnings.
2871         * tst-locale2.c: Likewise.
2872
2873 2007-03-19  Steven Munroe  <sjmunroe@us.ibm.com>
2874
2875         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
2876         (__lll_robust_trylock): Add MUTEX_HINT_ACQ to lwarx instruction.
2877
2878 2007-03-16  Jakub Jelinek  <jakub@redhat.com>
2879
2880         * sysdeps/pthread/bits/libc-lock.h: Use __extern_inline and
2881         __extern_always_inline where appropriate.
2882         * sysdeps/pthread/pthread.h: Likewise.
2883
2884 2007-03-13  Richard Henderson  <rth@redhat.com>
2885
2886         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (PSEUDO): Use two
2887         separate cfi regions for the two subsections.
2888
2889 2007-02-25  Ulrich Drepper  <drepper@redhat.com>
2890
2891         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Reset refcntr in
2892         new thread, don't just decrement it.
2893         Patch by Suzuki K P <suzuki@in.ibm.com>.
2894
2895 2007-02-21  Ulrich Drepper  <drepper@redhat.com>
2896
2897         * sysdeps/pthread/pthread-functions.h: Correct last patch, correct
2898         PTHFCT_CALL definition.
2899
2900 2007-02-18  Ulrich Drepper  <drepper@redhat.com>
2901
2902         * sysdeps/pthread/pthread-functions.h: If PTR_DEMANGLE is not
2903         available, don't use it.
2904
2905 2007-02-09  Jakub Jelinek  <jakub@redhat.com>
2906
2907         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
2908         (__lll_mutex_timedlock_wait): Use correct pointer when we don't
2909         call into the kernel to delay.
2910
2911 2007-01-18  Ulrich Drepper  <drepper@redhat.com>
2912
2913         * tst-initializers1.c: We want to test the initializers as seen
2914         outside of libc, so undefined _LIBC.
2915
2916         * pthread_join.c (cleanup): Avoid warning.
2917
2918 2007-01-17  Ulrich Drepper  <drepper@redhat.com>
2919
2920         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
2921         (__lll_timedwait_tid): Add unwind info.
2922
2923         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Don't just copy the
2924         function table, mangle the pointers.
2925         * sysdeps/pthread/pthread-functions.h: Define PTHFCT_CALL.
2926         * forward.c: Use PTHFCT_CALL and __libc_pthread_functions_init.
2927         * sysdeps/pthread/bits/libc-lock.h: When using __libc_pthread_functions
2928         demangle pointers before use.
2929         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Use PTHFCT_CALL to
2930         demangle pointer.
2931         * sysdeps/unix/sysv/linux/jmp-unwind.c: Likewise.
2932         * sysdeps/pthread/setxid.h: Likewise.
2933
2934 2007-01-12  Ulrich Drepper  <drepper@redhat.com>
2935
2936         * tst-rwlock7.c: Show some more information in case of correct
2937         behavior.
2938
2939 2007-01-11  Ulrich Drepper  <drepper@redhat.com>
2940
2941         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
2942         (lll_futex_timed_wait): Undo part of last change, don't negate
2943         return value.
2944
2945 2007-01-10  Ulrich Drepper  <drepper@redhat.com>
2946
2947         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Cleanups.  Define
2948         FUTEX_CMP_REQUEUE and lll_futex_requeue.
2949
2950 2006-12-28  David S. Miller  <davem@davemloft.net>
2951
2952         * shlib-versions: Fix sparc64 linux target specification.
2953
2954 2007-01-10  Jakub Jelinek  <jakub@redhat.com>
2955
2956         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c:
2957         Adjust include path for pthread_barrier_wait.c move.
2958
2959 2006-12-21  Jakub Jelinek  <jakub@redhat.com>
2960
2961         * sysdeps/unix/sysv/linux/pthread_kill.c (pthread_kill): Make sure
2962         tid isn't reread from pd->tid in between ESRCH test and the syscall.
2963
2964 2006-12-06  Jakub Jelinek  <jakub@redhat.com>
2965
2966         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO): Handle
2967         6 argument cancellable syscalls.
2968         (STM_6, LM_6, LR7_0, LR7_1, LR7_2, LR7_3, LR7_4, LR7_5, LR7_6): Define.
2969         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO): Handle
2970         6 argument cancellable syscalls.
2971         (STM_6, LM_6, LR7_0, LR7_1, LR7_2, LR7_3, LR7_4, LR7_5, LR7_6): Define.
2972
2973 2006-12-09  Ulrich Drepper  <drepper@redhat.com>
2974
2975         * sysdeps/unix/sysv/linux/rtld-lowlevel.h
2976         (__rtld_mrlock_initialize): Add missing closing parenthesis.
2977
2978 2006-10-30  Jakub Jelinek  <jakub@redhat.com>
2979
2980         * sysdeps/ia64/pthread_spin_unlock.c (pthread_spin_unlock): Use
2981         __sync_lock_release instead of __sync_lock_release_si.
2982
2983 2006-10-29  Jakub Jelinek  <jakub@redhat.com>
2984
2985         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (RTLD_SINGLE_THREAD_P):
2986         Define.
2987         (SINGLE_THREAD_P): Define to 1 if IS_IN_rtld.
2988         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Likewise.
2989         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
2990         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
2991         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
2992         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
2993         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
2994         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
2995         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
2996         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
2997         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
2998
2999 2006-10-27  Ulrich Drepper  <drepper@redhat.com>
3000
3001         * sysdeps/pthread/pthread_barrier_wait.c: Move to...
3002         * pthread_barrier_wait.c: ...here.
3003         * sysdeps/pthread/pthread_cond_broadcast.c: Move to...
3004         * pthread_cond_broadcast.c: ...here.
3005         * sysdeps/pthread/pthread_cond_signal.c: Move to...
3006         * pthread_cond_signal.c: ...here.
3007         * sysdeps/pthread/pthread_cond_timedwait.c: Move to...
3008         * pthread_cond_timedwait.c: ...here.
3009         * sysdeps/pthread/pthread_cond_wait.c: Move to...
3010         * pthread_cond_wait.c: ...here.
3011         * sysdeps/pthread/pthread_once.c: Move to...
3012         * pthread_once.c: ...here.
3013         * sysdeps/pthread/pthread_rwlock_rdlock.c: Move to...
3014         * pthread_rwlock_rdlock.c: ...here.
3015         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Move to...
3016         * pthread_rwlock_timedrdlock.c: ...here.
3017         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Move to...
3018         * pthread_rwlock_timedwrlock.c: ...here.
3019         * sysdeps/pthread/pthread_rwlock_unlock.c: Move to...
3020         * pthread_rwlock_unlock.c: ...here.
3021         * sysdeps/pthread/pthread_rwlock_wrlock.c: Move to...
3022         * pthread_rwlock_wrlock.c: ...here.
3023         * sysdeps/pthread/pthread_spin_destroy.c: Move to...
3024         * pthread_spin_destroy.c: ...here.
3025         * sysdeps/pthread/pthread_spin_init.c: Move to...
3026         * pthread_spin_init.c: ...here.
3027         * sysdeps/pthread/pthread_spin_unlock.c: Move to...
3028         * pthread_spin_unlock.c: ...here.
3029         * sysdeps/pthread/pthread_getcpuclockid.c: Move to...
3030         * pthread_getcpuclockid.c: ...here.
3031
3032         * init.c: USE_TLS support is now always enabled.
3033         * tst-tls5.h: Likewise.
3034         * sysdeps/alpha/tls.h: Likewise.
3035         * sysdeps/i386/tls.h: Likewise.
3036         * sysdeps/ia64/tls.h: Likewise.
3037         * sysdeps/powerpc/tls.h: Likewise.
3038         * sysdeps/s390/tls.h: Likewise.
3039         * sysdeps/sh/tls.h: Likewise.
3040         * sysdeps/sparc/tls.h: Likewise.
3041         * sysdeps/x86_64/tls.h: Likewise.
3042
3043 2006-10-27  Jakub Jelinek  <jakub@redhat.com>
3044
3045         * sysdeps/unix/sysv/linux/rtld-lowlevel.h (__rtld_mrlock_lock,
3046         __rtld_mrlock_change): Update oldval if atomic compare and exchange
3047         failed.
3048
3049         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (SINGLE_THREAD_P):
3050         Define to THREAD_SELF->header.multiple_threads.
3051         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (SINGLE_THREAD_P):
3052         Likewise.
3053         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (SINGLE_THREAD_P):
3054         Likewise.
3055         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
3056         (SINGLE_THREAD_P): Likewise.
3057         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
3058         (SINGLE_THREAD_P): Likewise.
3059         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
3060         (SINGLE_THREAD_P): Likewise.
3061         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
3062         (SINGLE_THREAD_P): Likewise.
3063         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (SINGLE_THREAD_P):
3064         Likewise.
3065         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
3066         (SINGLE_THREAD_P): Likewise.
3067         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
3068         (SINGLE_THREAD_P): Likewise.
3069         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (SINGLE_THREAD_P):
3070         Likewise.
3071
3072 2006-10-26  Jakub Jelinek  <jakub@redhat.com>
3073
3074         * pthread_attr_setstacksize.c (NEW_VERNUM): Define to GLIBC_2_3_3
3075         by default rather than 2_3_3.
3076
3077 2006-10-17  Jakub Jelinek  <jakub@redhat.com>
3078
3079         * sysdeps/unix/sysv/linux/rtld-lowlevel.h (__rtld_mrlock_lock,
3080         __rtld_mrlock_unlock, __rtld_mrlock_change, __rtld_mrlock_done): Use
3081         atomic_* instead of catomic_* macros.
3082
3083 2006-10-12  Ulrich Drepper  <drepper@redhat.com>
3084
3085         [BZ #3285]
3086         * sysdeps/unix/sysv/linux/bits/local_lim.h: Add SEM_VALUE_MAX.
3087         * sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: Likewise.
3088         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise.
3089         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise.
3090         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise.
3091         * sysdeps/unix/sysv/linux/i386/bits/semaphore.h: Remove SEM_VALUE_MAX.
3092         * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: Likewise.
3093         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
3094         * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: Likewise.
3095         * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h: Likewise.
3096         * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: Likewise.
3097         * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: Likewise.
3098         * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: Likewise.
3099
3100 2006-10-11  Ulrich Drepper  <drepper@redhat.com>
3101
3102         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Add support for
3103         cancelable syscalls with six parameters.
3104
3105         * sysdeps/unix/sysv/linux/rtld-lowlevel.h: Use catomic_*
3106         operations instead of atomic_*.
3107
3108 2006-10-09  Ulrich Drepper  <drepper@redhat.com>
3109
3110         * sysdeps/unix/sysv/linux/rtld-lowlevel.h: New file..
3111
3112 2006-10-07  Ulrich Drepper  <drepper@redhat.com>
3113
3114         * sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: New file.
3115         * sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c: New file.
3116         * sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c:
3117         New file.
3118         * pthread_attr_setstack.c: Allow overwriting the version number of the
3119         new symbol.
3120         * pthread_attr_setstacksize.c: Likewise.
3121         (__old_pthread_attr_setstacksize): If STACKSIZE_ADJUST is defined use
3122         it.
3123         * sysdeps/unix/sysv/linux/powerpc/Versions (libpthread): Add
3124         pthread_attr_setstack and pthread_attr_setstacksize to GLIBC_2.6.
3125
3126 2006-09-24  Ulrich Drepper  <drepper@redhat.com>
3127
3128         [BZ #3251]
3129         * descr.h (ENQUEUE_MUTEX_BOTH): Add cast to avoid warning.
3130         Patch by Petr Baudis.
3131
3132 2006-09-18  Jakub Jelinek  <jakub@redhat.com>
3133
3134         * tst-kill4.c (do_test): Explicitly set tf thread's stack size.
3135
3136         * tst-cancel2.c (tf): Loop as long as something was written.
3137
3138 2006-09-12  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3139
3140         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: For PI
3141         mutexes wake all mutexes.
3142         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Don't increment
3143         WAKEUP_SEQ if this would increase the value beyond TOTAL_SEQ.
3144         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
3145
3146 2006-09-12  Ulrich Drepper  <drepper@redhat.com>
3147
3148         * tst-cond22.c (tf): Slight changes to the pthread_cond_wait use
3149         to guarantee the thread is always canceled.
3150
3151 2006-09-08  Jakub Jelinek  <jakub@redhat.com>
3152
3153         * tst-cond22.c: Include pthread.h instead of pthreadP.h.
3154         Include stdlib.h.
3155         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Only
3156         increase FUTEX if increasing WAKEUP_SEQ.  Fix comment typo.
3157         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
3158         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
3159         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
3160
3161 2006-09-08  Ulrich Drepper  <drepper@redhat.com>
3162
3163         [BZ #3123]
3164         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Don't
3165         increment WAKEUP_SEQ if this would increase the value beyond TOTAL_SEQ.
3166         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
3167         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
3168         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
3169         * Makefile (tests): Add tst-cond22.
3170         * tst-cond22.c: New file.
3171
3172 2006-09-05  Ulrich Drepper  <drepper@redhat.com>
3173
3174         [BZ #3124]
3175         * descr.h (struct pthread): Add parent_cancelhandling.
3176         * sysdeps/pthread/createthread.c (create_thread): Pass parent
3177         cancelhandling value to child.
3178         * pthread_create.c (start_thread): If parent thread was canceled
3179         reset the SIGCANCEL mask.
3180         * Makefile (tests): Add tst-cancel25.
3181         * tst-cancel25.c: New file.
3182
3183 2006-09-05  Jakub Jelinek  <jakub@redhat.com>
3184             Ulrich Drepper  <drepper@redhat.com>
3185
3186         * sysdeps/pthread/gai_misc.h (GAI_MISC_NOTIFY): Don't decrement
3187         counterp if it is already zero.
3188         * sysdeps/pthread/aio_misc.h (AIO_MISC_NOTIFY): Likewise..
3189
3190 2006-03-04  Jakub Jelinek  <jakub@redhat.com>
3191             Roland McGrath  <roland@redhat.com>
3192
3193         * sysdeps/unix/sysv/linux/i386/lowlevellock.h
3194         (LLL_STUB_UNWIND_INFO_START, LLL_STUB_UNWIND_INFO_END,
3195         LLL_STUB_UNWIND_INFO_3, LLL_STUB_UNWIND_INFO_4): Define.
3196         (lll_mutex_lock, lll_robust_mutex_lock, lll_mutex_cond_lock,
3197         lll_robust_mutex_cond_lock, lll_mutex_timedlock,
3198         lll_robust_mutex_timedlock, lll_mutex_unlock,
3199         lll_robust_mutex_unlock, lll_lock, lll_unlock): Use them.
3200         Add _L_*_ symbols around the subsection.
3201         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Add unwind info.
3202         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: Likewise.
3203
3204 2006-03-03  Jakub Jelinek  <jakub@redhat.com>
3205             Roland McGrath  <roland@redhat.com>
3206
3207         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
3208         (LLL_STUB_UNWIND_INFO_START, LLL_STUB_UNWIND_INFO_END,
3209         LLL_STUB_UNWIND_INFO_5, LLL_STUB_UNWIND_INFO_6): Define.
3210         (lll_mutex_lock, lll_robust_mutex_lock, lll_mutex_cond_lock,
3211         lll_robust_mutex_cond_lock, lll_mutex_timedlock,
3212         lll_robust_mutex_timedlock, lll_mutex_unlock,
3213         lll_robust_mutex_unlock, lll_lock, lll_unlock): Use them.
3214         Add _L_*_ symbols around the subsection.
3215         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Add unwind info.
3216         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: Likewise.
3217
3218 2006-08-31  Ulrich Drepper  <drepper@redhat.com>
3219
3220         * pthread_rwlock_trywrlock.c (__pthread_rwlock_trywrlock): Undo last
3221         change because it can disturb too much existing code.  If real hard
3222         reader preference is needed we'll introduce another type.
3223         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
3224         (pthread_rwlock_timedwrlock): Likewise.
3225         * sysdeps/pthread/pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock):
3226         Likewise.
3227
3228 2006-08-30  Ulrich Drepper  <drepper@redhat.com>
3229
3230         * pthread_rwlock_trywrlock.c (__pthread_rwlock_trywrlock): Respect
3231         reader preference.
3232         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
3233         (pthread_rwlock_timedwrlock): Likewise.
3234         * sysdeps/pthread/pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock):
3235         Likewise.
3236
3237 2006-08-25  Jakub Jelinek  <jakub@redhat.com>
3238
3239         * sysdeps/unix/sysv/linux/libc_pthread_init.c (freeres_libpthread):
3240         Only define ifdef SHARED.
3241
3242 2006-08-23  Ulrich Drepper  <drepper@redhat.com>
3243
3244         * allocatestack.c (queue_stack): Move freeing of surplus stacks to...
3245         (free_stacks): ...here.
3246         (__free_stack_cache): New function.
3247         * pthreadP.h: Declare __free_stack_cache.
3248         * sysdeps/pthread/pthread-functions.h (pthread_functions): Add
3249         ptr_freeres.
3250         * init.c (pthread_functions): Initialize ptr_freeres.
3251         * sysdeps/unix/sysv/linux/libc_pthread_init.c (freeres_libptread):
3252         New freeres function.
3253
3254 2006-07-30  Joseph S. Myers  <joseph@codesourcery.com>
3255
3256         [BZ #3018]
3257         * Makefile (extra-objs): Add modules to extra-test-objs instead.
3258
3259 2006-08-20  Ulrich Drepper  <drepper@redhat.com>
3260
3261         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
3262         _XOPEN_REALTIME_THREADS.
3263
3264 2006-08-15  Jakub Jelinek  <jakub@redhat.com>
3265
3266         * sysdeps/unix/sysv/linux/clock_settime.c (INTERNAL_VSYSCALL): Use
3267         HAVE_CLOCK_GETRES_VSYSCALL as guard macro rather than
3268         HAVE_CLOCK_GETTIME_VSYSCALL.
3269         (maybe_syscall_settime_cpu): Use plain INTERNAL_VSYSCALL here.
3270
3271 2006-08-14  Jakub Jelinek  <jakub@redhat.com>
3272
3273         * sysdeps/unix/sysv/linux/bits/posix_opt.h
3274         (_POSIX_THREAD_PRIO_PROTECT): Define to 200112L.
3275         * descr.h (struct priority_protection_data): New type.
3276         (struct pthread): Add tpp field.
3277         * pthreadP.h (PTHREAD_MUTEX_PP_NORMAL_NP,
3278         PTHREAD_MUTEX_PP_RECURSIVE_NP, PTHREAD_MUTEX_PP_ERRORCHECK_NP,
3279         PTHREAD_MUTEX_PP_ADAPTIVE_NP): New enum values.
3280         * pthread_mutex_init.c (__pthread_mutex_init): Handle non-robust
3281         TPP mutexes.
3282         * pthread_mutex_lock.c (__pthread_mutex_lock): Handle TPP mutexes.
3283         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Likewise.
3284         * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Likewise.
3285         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Likewise.
3286         * tpp.c: New file.
3287         * pthread_setschedparam.c (__pthread_setschedparam): Handle priority
3288         boosted by TPP.
3289         * pthread_setschedprio.c (pthread_setschedprio): Likewise.
3290         * pthread_mutexattr_getprioceiling.c
3291         (pthread_mutexattr_getprioceiling): If ceiling is 0, ensure it is
3292         in the SCHED_FIFO priority range.
3293         * pthread_mutexattr_setprioceiling.c
3294         (pthread_mutexattr_setprioceiling): Fix prioceiling validation.
3295         * pthread_mutex_getprioceiling.c (pthread_mutex_getprioceiling): Fail
3296         if mutex is not TPP.  Ceiling is now in __data.__lock.
3297         * pthread_mutex_setprioceiling.c: Include stdbool.h.
3298         (pthread_mutex_setprioceiling): Fix prioceiling validation.  Ceiling
3299         is now in __data.__lock.  Add locking.
3300         * pthread_create.c (__free_tcb): Free pd->tpp structure.
3301         * Makefile (libpthread-routines): Add tpp.
3302         (xtests): Add tst-mutexpp1, tst-mutexpp6 and tst-mutexpp10.
3303         * tst-tpp.h: New file.
3304         * tst-mutexpp1.c: New file.
3305         * tst-mutexpp6.c: New file.
3306         * tst-mutexpp10.c: New file.
3307         * tst-mutex1.c (TEST_FUNCTION): Don't redefine if already defined.
3308         * tst-mutex6.c (TEST_FUNCTION): Likewise.
3309
3310 2006-08-12  Ulrich Drepper  <drepper@redhat.com>
3311
3312         [BZ #2843]
3313         * pthread_join.c (pthread_join): Account for self being canceled
3314         when checking for deadlocks.
3315         * tst-join5.c: Cleanups.  Allow to be used in tst-join6.
3316         (tf1): Don't print anything after pthread_join returns, this would be
3317         another cancellation point.
3318         (tf2): Likewise.
3319         * tst-join6.c: New file.
3320         * Makefile (tests): Add tst-join6.
3321
3322 2006-08-03  Ulrich Drepper  <drepper@redhat.com>
3323
3324         [BZ #2892]
3325         * pthread_setspecific.c (__pthread_setspecific): Check
3326         out-of-range index before checking for unused key.
3327
3328         * sysdeps/pthread/gai_misc.h: New file.
3329
3330 2006-08-01  Ulrich Drepper  <drepper@redhat.com>
3331
3332         * sysdeps/unix/sysv/linux/i386/smp.h: New file.  Old Linux-specific
3333         file.  Don't use sysctl.
3334         * sysdeps/unix/sysv/linux/smp.h: Always assume SMP.  Archs can
3335         overwrite the file if this is likely not true.
3336
3337 2006-07-31  Daniel Jacobowitz  <dan@codesourcery.com>
3338
3339         * allocatestack.c (__reclaim_stacks): Reset the PID on cached stacks.
3340         * Makefile (tests): Add tst-getpid3.
3341         * tst-getpid3.c: New file.
3342
3343 2006-07-30  Roland McGrath  <roland@redhat.com>
3344
3345         * Makefile (libpthread-routines): Add ptw-sigsuspend.
3346
3347         * sysdeps/unix/sysv/linux/i386/not-cancel.h
3348         (pause_not_cancel): New macro.
3349         (nanosleep_not_cancel): New macro.
3350         (sigsuspend_not_cancel): New macro.
3351         * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Use
3352         nanosleep_not_cancel macro from <not-cancel.h>.
3353         * pthread_mutex_lock.c (__pthread_mutex_lock): Use pause_not_cancel
3354         macro from <not-cancel.h>.
3355
3356 2006-07-28  Ulrich Drepper  <drepper@redhat.com>
3357             Jakub Jelinek  <jakub@redhat.com>
3358
3359         * descr.h: Change ENQUEUE_MUTEX and DEQUEUE_MUTEX for bit 0
3360         notification of PI mutex.  Add ENQUEUE_MUTEX_PI.
3361         * pthreadP.h: Define PTHREAD_MUTEX_PI_* macros for PI mutex types.
3362         * pthread_mutex_setprioceilining.c: Adjust for mutex type name change.
3363         * pthread_mutex_init.c: Add support for priority inheritance mutex.
3364         * pthread_mutex_lock.c: Likewise.
3365         * pthread_mutex_timedlock.c: Likewise.
3366         * pthread_mutex_trylock.c: Likewise.
3367         * pthread_mutex_unlock.c: Likewise.
3368         * sysdeps/pthread/pthread_cond_broadcast.c: For PI mutexes wake
3369         all mutexes.
3370         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.c: Likewise.
3371         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.c: Likewise.
3372         * sysdeps/unix/sysv/linux/pthread-pi-defines.sym: New file.
3373         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-header): Add
3374         pthread-pi-defines.sym.
3375         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define FUTEX_LOCK_PI,
3376         FUTEX_UNLOCK_PI, and FUTEX_TRYLOCK_PI.
3377         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
3378         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise.
3379         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
3380         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
3381         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
3382         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
3383         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
3384         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
3385         _POSIX_THREAD_PRIO_INHERIT to 200112L.
3386         * tst-mutex1.c: Adjust to allow use in PI mutex test.
3387         * tst-mutex2.c: Likewise.
3388         * tst-mutex3.c: Likewise.
3389         * tst-mutex4.c: Likewise.
3390         * tst-mutex5.c: Likewise.
3391         * tst-mutex6.c: Likewise.
3392         * tst-mutex7.c: Likewise.
3393         * tst-mutex7a.c: Likewise.
3394         * tst-mutex8.c: Likewise.
3395         * tst-mutex9.c: Likewise.
3396         * tst-robust1.c: Likewise.
3397         * tst-robust7.c: Likewise.
3398         * tst-robust8.c: Likewise.
3399         * tst-mutexpi1.c: New file.
3400         * tst-mutexpi2.c: New file.
3401         * tst-mutexpi3.c: New file.
3402         * tst-mutexpi4.c: New file.
3403         * tst-mutexpi5.c: New file.
3404         * tst-mutexpi6.c: New file.
3405         * tst-mutexpi7.c: New file.
3406         * tst-mutexpi7a.c: New file.
3407         * tst-mutexpi8.c: New file.
3408         * tst-mutexpi9.c: New file.
3409         * tst-robust1.c: New file.
3410         * tst-robust2.c: New file.
3411         * tst-robust3.c: New file.
3412         * tst-robust4.c: New file.
3413         * tst-robust5.c: New file.
3414         * tst-robust6.c: New file.
3415         * tst-robust7.c: New file.
3416         * tst-robust8.c: New file.
3417         * Makefile (tests): Add the new tests.
3418
3419         * pthread_create.c (start_thread): Add some casts to avoid warnings.
3420         * pthread_mutex_destroy.c: Remove unneeded label.
3421
3422 2006-07-01  Ulrich Drepper  <drepper@redhat.com>
3423
3424         * pthread_mutex_init.c (__pthread_mutex_init): Move some
3425         computations to compile time.
3426
3427 2006-06-04  Ulrich Drepper  <drepper@redhat.com>
3428
3429         * sysdeps/pthread/pthread.h: Add pthread_equal inline version.
3430
3431 2006-05-15  Ulrich Drepper  <drepper@redhat.com>
3432
3433         * sysdeps/unix/sysv/linux/fork.h: Mark __fork_handlers as hidden.
3434
3435 2006-05-11  Ulrich Drepper  <drepper@redhat.com>
3436
3437         * pthread_key_create.c (__pthread_key_create): Do away with
3438         __pthread_keys_lock.
3439
3440         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
3441         (__kernel_cpumask_size): Mark as hidden.
3442         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c: Likewise.
3443
3444         * sem_open.c (__sem_mappings_lock): Mark as hidden.
3445         * semaphoreP.h (__sem_mappings_lock): Likewise.
3446
3447 2006-05-10  Ulrich Drepper  <drepper@redhat.com>
3448
3449         * pthread_atfork.c: Mark __dso_handle as hidden.
3450
3451 2006-05-09  Ulrich Drepper  <drepper@redhat.com>
3452
3453         [BZ #2644]
3454         * sysdeps/pthread/unwind-forcedunwind.c: Different solution for
3455         the reload problem.  Change the one path in pthread_cancel_init
3456         which causes the problem.  Force gcc to reload.  Simplify callers.
3457         * sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c
3458         (_Unwind_GetBSP): Undo last patch.
3459
3460 2006-05-07  Ulrich Drepper  <drepper@redhat.com>
3461
3462         * sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c: Make sure the
3463         function pointer is reloaded after pthread_cancel_init calls.
3464
3465         [BZ #2644]
3466         * sysdeps/pthread/unwind-forcedunwind.c: Make sure functions
3467         pointers are reloaded after pthread_cancel_init calls.
3468
3469 2006-05-01  Ulrich Drepper  <drepper@redhat.com>
3470
3471         * sysdeps/pthread/allocalim.h (__libc_use_alloca): Mark with
3472         __always_inline.
3473
3474 2006-04-27  Ulrich Drepper  <drepper@redhat.com>
3475
3476         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
3477         Allocate new object which is passed to timer_sigev_thread so that
3478         the timer can be deleted before the new thread is scheduled.
3479
3480 2006-04-26  Roland McGrath  <roland@redhat.com>
3481
3482         * sysdeps/x86_64/tls.h: Include <asm/prctl.h> inside [! __ASSEMBLER__].
3483
3484 2006-04-08  Ulrich Drepper  <drepper@redhat.com>
3485
3486         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove branch predicion
3487         suffix for conditional jumps.
3488         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
3489         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
3490         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
3491         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Likewise.
3492         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
3493         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
3494
3495         * init.c (sigcancel_handler): Compare with correct PID even if the
3496         thread is in the middle of a fork call.
3497         (sighandler_setxid): Likewise.
3498         Reported by Suzuki K P <suzuki@in.ibm.com> .
3499
3500 2006-04-07  Jakub Jelinek  <jakub@redhat.com>
3501
3502         * pthreadP.h (FUTEX_TID_MASK): Sync with kernel.
3503
3504 2006-04-06  Ulrich Drepper  <drepper@redhat.com>
3505
3506         * pthread_getattr_np.c (pthread_getattr_np): Close fp if getrlimit
3507         fails [Coverity CID 105].
3508
3509 2006-04-05  Ulrich Drepper  <drepper@redhat.com>
3510
3511         * sysdeps/pthread/pthread.h: Add nonnull attributes.
3512
3513 2006-04-03  Steven Munroe  <sjmunroe@us.ibm.com>
3514
3515         [BZ #2505]
3516         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h [_ARCH_PWR4]:
3517         Define __lll_rel_instr using lwsync.
3518
3519 2006-03-27  Ulrich Drepper  <drepper@redhat.com>
3520
3521         * allocatestack.c (allocate_stack): Always initialize robust_head.
3522         * descr.h: Define struct robust_list_head.
3523         (struct pthread): Use robust_list_head in robust mutex list definition.
3524         Adjust ENQUEUE_MUTEX and DEQUEUE_MUTEX.
3525         * init.c [!__ASSUME_SET_ROBUST_LIST] (__set_robust_list_avail): Define.
3526         (__pthread_initialize_minimal_internal): Register robust_list with
3527         the kernel.
3528         * pthreadP.h: Remove PRIVATE_ from PTHREAD_MUTEX_ROBUST_* names.
3529         Declare __set_robust_list_avail.
3530         * pthread_create.c (start_thread): Register robust_list of new thread.
3531         [!__ASSUME_SET_ROBUST_LIST]: If robust_list is not empty wake up
3532         waiters.
3533         * pthread_mutex_destroy.c: For robust mutexes don't look at the
3534         number of users, it's unreliable.
3535         * pthread_mutex_init.c: Allow use of pshared robust mutexes if
3536         set_robust_list syscall is available.
3537         * pthread_mutex_consistent.c: Adjust for PTHREAD_MUTEX_ROBUST_* rename.
3538         * pthread_mutex_lock.c: Simplify robust mutex code a bit.
3539         Set robust_head.list_op_pending before trying to lock a robust mutex.
3540         * pthread_mutex_timedlock.c: Likewise.
3541         * pthread_mutex_trylock.c: Likewise.
3542         * pthread_mutex_unlock.c: Likewise for unlocking.
3543         * Makefile (tests): Add tst-robust8.
3544         * tst-robust8.c: New file.
3545
3546 2006-03-08  Andreas Schwab  <schwab@suse.de>
3547
3548         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h
3549         (DL_SYSINFO_IMPLEMENTATION): Add missing newline.
3550
3551 2006-03-05  Roland McGrath  <roland@redhat.com>
3552
3553         * configure (libc_add_on): Disable add-on when $add_ons_automatic = yes
3554         and $config_os doesn't match *linux*.
3555
3556 2006-03-05  David S. Miller  <davem@sunset.davemloft.net>
3557
3558         * sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S:
3559         Use __syscall_error.
3560         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
3561         * sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: Likewise.
3562         * sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S: Likewise.
3563         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
3564         * sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: Likewise.
3565         * sysdeps/unix/sysv/linux/sparc/Makefile: New file.
3566
3567 2006-03-02  Ulrich Drepper  <drepper@redhat.com>
3568
3569         * sysdeps/unix/sysv/linux/aio_misc.h: Various cleanups.
3570
3571 2006-03-01  Ulrich Drepper  <drepper@redhat.com>
3572
3573         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
3574         (__lll_robust_lock_wait): Also set FUTEX_WAITERS bit if we got the
3575         mutex.
3576         (__lll_robust_timedlock_wait): Likewise.
3577         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S
3578         (__lll_robust_lock_wait): Likewise.
3579         (__lll_robust_timedlock_wait): Likewise.
3580         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c
3581         (__lll_robust_lock_wait): Likewise.
3582         (__lll_robust_timedlock_wait): Likewise.
3583
3584 2006-03-01  Jakub Jelinek  <jakub@redhat.com>
3585
3586         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (lll_robust_mutex_dead,
3587         lll_robust_mutex_trylock, lll_robust_mutex_lock,
3588         lll_robust_mutex_cond_lock, lll_robust_mutex_timedlock,
3589         lll_robust_mutex_unlock): Define.
3590         (__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes.
3591
3592 2006-02-28  H.J. Lu  <hongjiu.lu@intel.com>
3593
3594         * sysdeps/unix/sysv/linux/ia64/clone2.S: Include <clone2.S>
3595         instead of <clone.S>.
3596
3597 2006-02-27  Jakub Jelinek  <jakub@redhat.com>
3598
3599         * Makefile (libpthread-routines): Add
3600         pthread_mutexattr_[sg]etprotocol, pthread_mutexattr_[sg]etprioceiling
3601         and pthread_mutex_[sg]etprioceiling.
3602         * Versions (GLIBC_2.4): Export pthread_mutexattr_getprotocol,
3603         pthread_mutexattr_setprotocol, pthread_mutexattr_getprioceiling,
3604         pthread_mutexattr_setprioceiling, pthread_mutex_getprioceiling and
3605         pthread_mutex_setprioceiling.
3606         * sysdeps/pthread/pthread.h (PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT,
3607         PTHREAD_PRIO_PROTECT): New enum values.
3608         (pthread_mutexattr_getprotocol, pthread_mutexattr_setprotocol,
3609         pthread_mutexattr_getprioceiling, pthread_mutexattr_setprioceiling,
3610         pthread_mutex_getprioceiling, pthread_mutex_setprioceiling): New
3611         prototypes.
3612         * pthreadP.h (PTHREAD_MUTEX_PRIO_INHERIT_PRIVATE_NP,
3613         PTHREAD_MUTEX_PRIO_PROTECT_PRIVATE_NP): New enum values.
3614         (PTHREAD_MUTEX_PRIO_CEILING_SHIFT, PTHREAD_MUTEX_PRIO_CEILING_MASK):
3615         Define.
3616         (PTHREAD_MUTEXATTR_PROTOCOL_SHIFT, PTHREAD_MUTEXATTR_PROTOCOL_MASK,
3617         PTHREAD_MUTEXATTR_PRIO_CEILING_SHIFT,
3618         PTHREAD_MUTEXATTR_PRIO_CEILING_MASK): Define.
3619         (PTHREAD_MUTEXATTR_FLAG_BITS): Or in PTHREAD_MUTEXATTR_PROTOCOL_MASK
3620         and PTHREAD_MUTEXATTR_PRIO_CEILING_MASK.
3621         * pthread_mutex_init.c (__pthread_mutex_init): For the time being
3622         return ENOTSUP for PTHREAD_PRIO_INHERIT or PTHREAD_PRIO_PROTECT
3623         protocol mutexes.
3624         * pthread_mutex_getprioceiling.c: New file.
3625         * pthread_mutex_setprioceiling.c: New file.
3626         * pthread_mutexattr_getprioceiling.c: New file.
3627         * pthread_mutexattr_setprioceiling.c: New file.
3628         * pthread_mutexattr_getprotocol.c: New file.
3629         * pthread_mutexattr_setprotocol.c: New file.
3630
3631 2006-02-27  Daniel Jacobowitz  <dan@codesourcery.com>
3632
3633         * sysdeps/unix/sysv/linux/aio_misc.h: Include <limits.h>.
3634
3635 2006-02-27  Roland McGrath  <roland@redhat.com>
3636
3637         * sysdeps/pthread/Subdirs: List nptl here too.
3638         * configure (libc_add_on_canonical): New variable.
3639
3640         * sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h: Use #include_next.
3641
3642         * sysdeps/unix/sysv/linux/sleep.c: Use #include_next after #include of
3643         self to get main source tree's file.
3644         * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
3645         * sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
3646         * sysdeps/unix/sysv/linux/i386/vfork.S: Likewise.
3647         * sysdeps/unix/sysv/linux/ia64/clone2.S: Likewise.
3648         * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Likewise.
3649         * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Likewise.
3650         * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Likewise.
3651         * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise.
3652         * sysdeps/unix/sysv/linux/sh/clone.S: Likewise.
3653         * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: Likewise.
3654         * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise.
3655         * sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
3656         * sysdeps/unix/sysv/linux/x86_64/vfork.S: Likewise.
3657
3658         * Makefile: Use $(sysdirs) in vpath directive.
3659
3660         * sysdeps/pthread/Makefile (CFLAGS-libc-start.c): Variable removed.
3661         (CPPFLAGS-timer_routines.c): Likewise.
3662
3663         * Makeconfig (includes): Variable removed.
3664
3665 2006-02-26  Roland McGrath  <roland@redhat.com>
3666
3667         * sysdeps/generic/pt-raise.c: Moved to ...
3668         * pt-raise.c: ... here.
3669         * sysdeps/generic/lowlevellock.h: Moved to ...
3670         * lowlevellock.h: ... here.
3671
3672 2006-02-23  Roland McGrath  <roland@redhat.com>
3673
3674         * descr.h (struct pthread): Add final member `end_padding'.
3675         (PTHREAD_STRUCT_END_PADDING): Use it.
3676
3677 2006-02-20  Roland McGrath  <roland@redhat.com>
3678
3679         * sysdeps/mips: Directory removed, saved in ports repository.
3680         * sysdeps/unix/sysv/linux/mips: Likewise.
3681
3682 2006-02-18  Ulrich Drepper  <drepper@redhat.com>
3683
3684         * tst-robust1.c: Add second mutex to check that the mutex list is
3685         handled correctly.
3686
3687 2006-02-17  Jakub Jelinek  <jakub@redhat.com>
3688
3689         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_robust_mutex_dead,
3690         lll_robust_mutex_trylock, lll_robust_mutex_lock,
3691         lll_robust_mutex_cond_lock, lll_robust_mutex_timedlock,
3692         lll_robust_mutex_unlock): New macros.
3693         (__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes.
3694         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
3695         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
3696         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
3697         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c: New file.
3698
3699 2006-02-17  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3700
3701         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Add lll_robust_mutex_*
3702         definitions.
3703         * sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S: New file.
3704
3705 2006-02-17  Ulrich Drepper  <drepper@redhat.com>
3706
3707         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
3708         (lll_robust_mutex_unlock): Avoid unnecessary wakeups.
3709         * sysdeps/unix/sysv/linux/i386/lowlevellock.h
3710         (lll_robust_mutex_unlock): Likewise.
3711
3712 2006-02-13  Jakub Jelinek  <jakub@redhat.com>
3713
3714         * descr.h [!__PTHREAD_MUTEX_HAVE_PREV] (DEQUEUE_MUTEX):
3715         Set robust_list.__next rather than robust_list.
3716         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
3717         (__pthread_list_t): New typedef.
3718         (pthread_mutex_t): Replace __next and __prev fields with __list.
3719         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h
3720         (__pthread_list_t): New typedef.
3721         (pthread_mutex_t): Replace __next and __prev fields with __list.
3722         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
3723         (__pthread_list_t, __pthread_slist_t): New typedefs.
3724         (pthread_mutex_t): Replace __next and __prev fields with __list.
3725         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h
3726         (__pthread_list_t, __pthread_slist_t): New typedefs.
3727         (pthread_mutex_t): Replace __next and __prev fields with __list.
3728         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
3729         (__pthread_list_t, __pthread_slist_t): New typedefs.
3730         (pthread_mutex_t): Replace __next and __prev fields with __list.
3731         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h
3732         (__pthread_slist_t): New typedef.
3733         (pthread_mutex_t): Replace __next field with __list.
3734
3735 2006-02-15  Ulrich Drepper  <drepper@redhat.com>
3736
3737         * pthreadP.h: Define PTHREAD_MUTEX_INCONSISTENT instead of
3738         PTHREAD_MUTEX_OWNERDEAD.
3739         (PTHREAD_MUTEX_ROBUST_PRIVATE_NP): Define as 16, not 256.
3740         Define FUTEX_WAITERS, FUTEX_OWNER_DIED, FUTEX_TID_MASK.
3741         * Makefile (libpthread-routines): Add lowlevelrobustlock.
3742         * pthread_create.c (start_thread): Very much simplify robust_list loop.
3743         * pthread_mutex_consistent.c: Inconsistent mutex have __owner now set
3744         to PTHREAD_MUTEX_INCONSISTENT.
3745         * pthread_mutex_destroy.c: Allow destroying of inconsistent mutexes.
3746         * pthread_mutex_lock.c: Reimplement robust mutex handling.
3747         * pthread_mutex_trylock.c: Likewise.
3748         * pthread_mutex_timedlock.c: Likewise.
3749         * pthread_mutex_unlock.c: Likewise.
3750         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise.
3751         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
3752         lowlevelrobustlock.sym.
3753         * sysdeps/unix/sysv/linux/lowlevelrobustlock.sym: New file.
3754         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Add lll_robust_mutex_*
3755         definitions.
3756         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
3757         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: New file.
3758         * sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S: New file.
3759         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S: New file.
3760         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: New file.
3761
3762 2006-02-12  Ulrich Drepper  <drepper@redhat.com>
3763
3764         * allocatestack.c (allocate_stack): Initialize robust_list.
3765         * init.c (__pthread_initialize_minimal_internal): Likewise.
3766         * descr.h (struct xid_command): Pretty printing.
3767         (struct pthread): Use __pthread_list_t or __pthread_slist_t for
3768         robust_list.  Adjust macros.
3769         * pthread_create.c (start_thread): Adjust robust_list handling.
3770         * phtread_mutex_unlock.c: Don't allow unlocking from any thread
3771         but the owner for all robust mutex types.
3772         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Define
3773         __pthread_list_t and __pthread_slist_t.  Use them in pthread_mutex_t.
3774         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3775         * sysdeps/pthread/pthread.h: Adjust mutex initializers.
3776
3777         * sysdeps/unix/sysv/linux/i386/not-cancel.h: Define openat_not_cancel,
3778         openat_not_cancel_3, openat64_not_cancel, and openat64_not_cancel_3.
3779
3780 2006-02-08  Jakub Jelinek  <jakub@redhat.com>
3781
3782         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait,
3783         lll_futex_timedwait, lll_wait_tid): Add "memory" clobber.
3784
3785 2006-01-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3786
3787         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_futex_wait):
3788         Return status.
3789         (lll_futex_timed_wait): Define.
3790
3791 2006-01-19  Ulrich Drepper  <drepper@redhat.com>
3792
3793         * tst-cancel4.c: Test ppoll.
3794
3795 2006-01-18  Andreas Jaeger  <aj@suse.de>
3796
3797         [BZ #2167]
3798         * sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h
3799         (pthread_mutex_t): Follow changes for other archs.  Based on patch
3800         by Jim Gifford <patches@jg555.com>.
3801
3802 2006-01-13  Richard Henderson  <rth@redhat.com>
3803
3804         * sysdeps/alpha/tls.h (tcbhead_t): Rename member to __private.
3805
3806 2006-01-10  Roland McGrath  <roland@redhat.com>
3807
3808         * sysdeps/alpha/jmpbuf-unwind.h: File moved to main source tree.
3809         * sysdeps/i386/jmpbuf-unwind.h: Likewise.
3810         * sysdeps/mips/jmpbuf-unwind.h: Likewise.
3811         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
3812         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
3813         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
3814         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
3815         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Likewise.
3816         * sysdeps/x86_64/jmpbuf-unwind.h: Likewise.
3817         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
3818
3819 2006-01-09  Roland McGrath  <roland@redhat.com>
3820
3821         * tst-initializers1-c89.c: New file.
3822         * tst-initializers1-c99.c: New file.
3823         * tst-initializers1-gnu89.c: New file.
3824         * tst-initializers1-gnu99.c: New file.
3825         * Makefile (tests): Add them.
3826         (CFLAGS-tst-initializers1-c89.c): New variable.
3827         (CFLAGS-tst-initializers1-c99.c): New variable.
3828         (CFLAGS-tst-initializers1-gnu89.c): New variable.
3829         (CFLAGS-tst-initializers1-gnu99.c): New variable.
3830
3831         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
3832         Use __extension__ on anonymous union definition.
3833         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3834         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
3835         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3836         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3837         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
3838
3839 2006-01-08  Jakub Jelinek  <jakub@redhat.com>
3840
3841         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_mutex_t):
3842         Don't give the union a name because it changes the mangled name.
3843         Instead name the struct for __data.
3844         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_mutex_t):
3845         Likewise.
3846         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_mutex_t):
3847         Likewise.
3848
3849 2006-01-09  Jakub Jelinek  <jakub@redhat.com>
3850
3851         * sysdeps/sparc/sparc64/jmpbuf-unwind.h (_JMPBUF_UNWINDS_ADJ): Add
3852         stack bias to mc_ftp field.
3853
3854 2006-01-07  Ulrich Drepper  <drepper@redhat.com>
3855
3856         * sysdeps/pthread/aio_misc.h (AIO_MISC_WAIT): Work around gcc
3857         being too clever and reloading the futex value where it shouldn't.
3858
3859 2006-01-06  Ulrich Drepper  <drepper@redhat.com>
3860
3861         * descr.h [!__PTHREAD_MUTEX_HAVE_PREV] (DEQUEUE_MUTEX): Use
3862         correct type.
3863
3864 2006-01-06  Jakub Jelinek  <jakub@redhat.com>
3865
3866         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h (PSEUDO):
3867         Add cfi directives.
3868
3869 2006-01-06  Ulrich Drepper  <drepper@redhat.com>
3870
3871         * sysdeps/ia64/tls.h (tcbhead_t): Rename private member to __private.
3872         * sysdeps/ia64/tcb-offsets.sym: Adjust for private->__private
3873         rename in tcbhead_t.
3874
3875         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
3876         Don't give the union a name because it changes the mangled name.
3877         Instead name the struct for __data.
3878         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
3879         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3880         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3881         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3882         * pthread_create.c (start_thread): Adjust robust mutex free loop.
3883         * descr.h (ENQUEUE_MUTEX, DEQUEUE_MUTEX): Adjust.
3884
3885 2006-01-05  Ulrich Drepper  <drepper@redhat.com>
3886
3887         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
3888         Return status.
3889         (lll_futex_timed_wait): Define.
3890         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
3891         * sysdeps/pthread/aio_misc.h: New file.
3892
3893 2006-01-03  Joseph S. Myers  <joseph@codesourcery.com>
3894
3895         * Makefile ($(objpfx)$(multidir)): Use mkdir -p.
3896
3897 2006-01-03  Steven Munroe  <sjmunroe@us.ibm.com>
3898
3899         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
3900         (PSEUDO): Remove redundant cfi_startproc and cfi_endproc directives.
3901         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
3902
3903 2006-01-04  Ulrich Drepper  <drepper@redhat.com>
3904
3905         * tst-cancel24.cc: Use C headers instead of C++ headers.
3906
3907 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
3908
3909         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Remove #error for
3910         sparc-linux configured glibc.
3911         (lll_futex_wake_unlock): Define to 1 for sparc-linux configured glibc.
3912         (__lll_mutex_trylock, __lll_mutex_cond_trylock, __lll_mutex_lock,
3913         __lll_mutex_cond_lock, __lll_mutex_timedlock): Use
3914         atomic_compare_and_exchange_val_24_acq instead of
3915         atomic_compare_and_exchange_val_acq.
3916         (lll_mutex_unlock, lll_mutex_unlock_force): Use atomic_exchange_24_rel
3917         instead of atomic_exchange_rel.
3918         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c: New file.
3919         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_init.c: New
3920         file.
3921         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c: New
3922         file.
3923         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c: New file.
3924         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c: New file.
3925         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c: New file.
3926         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c: New file.
3927         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c: New file.
3928         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_init.c:
3929         New file.
3930         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c:
3931         New file.
3932         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c: New file.
3933         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c: New file.
3934         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c: New
3935         file.
3936         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_trywait.c: New
3937         file.
3938         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c: New file.
3939
3940 2006-01-03  Ulrich Drepper  <drepper@redhat.com>
3941
3942         * sysdeps/pthread/pthread.h [__WORDSIZE==64]: Don't use cast in
3943         mutex initializers.
3944
3945 2006-01-02  Jakub Jelinek  <jakub@redhat.com>
3946
3947         * sysdeps/sparc/tls.h (tcbhead_t): Add pointer_guard field.
3948         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
3949         THREAD_COPY_POINTER_GUARD): Define.
3950         * sysdeps/sparc/tcb-offsets.sym (POINTER_GUARD): Define.
3951         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Revert 2005-12-27 changes.
3952
3953 2006-01-01  Ulrich Drepper  <drepper@redhat.com>
3954
3955         * version.c: Update copyright year.
3956
3957 2005-12-29  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3958
3959         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Remove explicit
3960         .eh_frame section, use cfi_* directives.
3961         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Add cfi instrumentation.
3962
3963 2005-12-30  Ulrich Drepper  <drepper@redhat.com>
3964
3965         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Undo last change for
3966         now.
3967
3968 2005-12-29  Ulrich Drepper  <drepper@redhat.com>
3969
3970         * sysdeps/pthread/sigaction.c: Removed.
3971         * sigaction.c: New file.
3972         * sysdeps/unix/sysv/linux/Makefile: Define CFLAGS-sigaction.c.
3973
3974 2005-12-28  Ulrich Drepper  <drepper@redhat.com>
3975
3976         * Makefile (tests): Add tst-signal7.
3977         * tst-signal7.c: New file.
3978
3979 2005-12-27  Roland McGrath  <roland@redhat.com>
3980
3981         * sysdeps/x86_64/jmpbuf-unwind.h (_jmpbuf_sp): New inline function.
3982         (_JMPBUF_UNWINDS_ADJ): Use it, to PTR_DEMANGLE before comparison.
3983         * sysdeps/alpha/jmpbuf-unwind.h: Likewise.
3984         * sysdeps/i386/jmpbuf-unwind.h: Likewise.
3985         * sysdeps/mips/jmpbuf-unwind.h: Likewise.
3986         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
3987         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
3988         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
3989         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
3990         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Likewise.
3991         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
3992
3993 2005-12-27  Jakub Jelinek  <jakub@redhat.com>
3994
3995         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Add __next
3996         and __prev field to pthread_mutex_t.
3997         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
3998         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3999         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
4000         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
4001         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Add __next field
4002         to pthread_mutex_t.
4003
4004 2005-12-26  Ulrich Drepper  <drepper@redhat.com>
4005
4006         * pthreadP.h: Define PTHREAD_MUTEX_ROBUST_PRIVATE_NP,
4007         PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP,
4008         PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP,
4009         PTHREAD_MUTEX_ROBUST_PRIVATE_ADAPTIVE_NP,
4010         PTHREAD_MUTEXATTR_FLAG_ROBUST, PTHREAD_MUTEXATTR_FLAG_PSHARED,
4011         and PTHREAD_MUTEXATTR_FLAG_BITS.
4012         * descr.h (struct pthread): Add robust_list field and define
4013         ENQUEUE_MUTEX and DEQUEUE_MUTEX macros.
4014         * pthread_mutexattr_getrobust.c: New file.
4015         * pthread_mutexattr_setrobust.c: New file.
4016         * pthread_mutex_consistent.c: New file.
4017         * sysdeps/pthread/pthread.h: Declare pthread_mutexattr_getrobust,
4018         pthread_mutexattr_setrobust, and pthread_mutex_consistent.
4019         Define PTHREAD_MUTEX_STALLED_NP and PTHREAD_MUTEX_ROBUST_NP.
4020         Adjust pthread_mutex_t initializers.
4021         * nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Add __next
4022         field to pthread_mutex_t.
4023         * nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Add __next
4024         and __prev field to pthread_mutex_t.
4025         * Versions [GLIBC_2.4]: Export pthread_mutexattr_getrobust_np,
4026         pthread_mutexattr_setrobust_np, and pthread_mutex_consistent_np.
4027         * pthread_mutexattr_getpshared.c: Use PTHREAD_MUTEXATTR_FLAG_PSHARED
4028         and PTHREAD_MUTEXATTR_FLAG_BITS macros instead of magic numbers.
4029         * pthread_mutexattr_gettype.c: Likewise.
4030         * pthread_mutexattr_setpshared.c: Likewise.
4031         * pthread_mutexattr_settype.c: Likewise.
4032         * pthread_mutex_init.c: Reject robust+pshared attribute for now.
4033         Initialize mutex kind according to robust flag.
4034         * pthread_mutex_lock.c: Implement local robust mutex.
4035         * pthread_mutex_timedlock.c: Likewise.
4036         * pthread_mutex_trylock.c: Likewise.
4037         * pthread_mutex_unlock.c: Likewise.
4038         * pthread_create.c (start_thread): Mark robust mutexes which remained
4039         locked as dead.
4040         * tst-robust1.c: New file.
4041         * tst-robust2.c: New file.
4042         * tst-robust3.c: New file.
4043         * tst-robust4.c: New file.
4044         * tst-robust5.c: New file.
4045         * tst-robust6.c: New file.
4046         * tst-robust7.c: New file.
4047         * Makefile (libpthread-routines): Add pthread_mutexattr_getrobust,
4048         pthread_mutexattr_setrobust, and pthread_mutex_consistent.
4049         (tests): Add tst-robust1, tst-robust2, tst-robust3, tst-robust4,
4050         tst-robust5, tst-robust6, and tst-robust7.
4051
4052         * tst-typesizes.c: New file.
4053         * Makefile (tests): Add tst-typesizes.
4054
4055         * tst-once3.c: More debug output.
4056
4057 2005-12-24  Ulrich Drepper  <drepper@redhat.com>
4058
4059         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Add break
4060         missing after last change.
4061
4062         * version.c: Update copyright year.
4063
4064 2005-12-23  Ulrich Drepper  <drepper@redhat.com>
4065
4066         * pthread_mutex_destroy.c: Set mutex type to an invalid value.
4067         * pthread_mutex_lock.c: Return EINVAL for invalid mutex type.
4068         * pthread_mutex_trylock.c: Likewise.
4069         * pthread_mutex_timedlock.c: Likewise.
4070         * pthread_mutex_unlock.c: Likewise.
4071
4072 2005-12-22  Roland McGrath  <roland@redhat.com>
4073
4074         * sysdeps/pthread/sigaction.c: Use "" instead of <> to include self,
4075         so that #include_next's search location is not reset to the -I..
4076         directory where <nptl/...> can be found.
4077
4078 2005-12-22  Ulrich Drepper  <drepper@redhat.com>
4079
4080         [BZ #1913]
4081         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
4082         Fix unwind info.  Remove useless branch prediction prefix.
4083         * tst-cancel24.cc: New file.
4084         * Makefile: Add rules to build and run tst-cancel24.
4085
4086 2005-12-21  Roland McGrath  <roland@redhat.com>
4087
4088         * libc-cancellation.c: Use <> rather than "" #includes.
4089         * pt-cleanup.c: Likewise.
4090         * pthread_create.c: Likewise.
4091         * pthread_join.c: Likewise.
4092         * pthread_timedjoin.c: Likewise.
4093         * pthread_tryjoin.c: Likewise.
4094         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Likewise.
4095         * sysdeps/unix/sysv/linux/register-atfork.c: Likewise.
4096         * sysdeps/unix/sysv/linux/unregister-atfork.c: Likewise.
4097         * unwind.c: Likewise.
4098
4099 2005-12-19  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4100
4101         * sysdeps/sh/tcb-offsets.sym: Add POINTER_GUARD.
4102         * sysdeps/sh/tls.h (tcbhead_t): Remove private and add pointer_guard.
4103         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
4104         THREAD_COPY_POINTER_GUARD): Define.
4105
4106 2005-12-19  Jakub Jelinek  <jakub@redhat.com>
4107
4108         * sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): Make room for 2 uintptr_t's
4109         rather than one.
4110         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
4111         THREAD_COPY_POINTER_GUARD): Define.
4112         * sysdeps/powerpc/tcb-offsets.sym (POINTER_GUARD): Add.
4113         * sysdeps/powerpc/tls.h (tcbhead_t): Add pointer_guard field.
4114         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
4115         THREAD_COPY_POINTER_GUARD): Define.
4116         * sysdeps/s390/tcb-offsets.sym (STACK_GUARD): Add.
4117         * sysdeps/s390/tls.h (THREAD_GET_POINTER_GUARD,
4118         THREAD_SET_POINTER_GUARD, THREAD_COPY_POINTER_GUARD): Define.
4119         * sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S (__ia64_longjmp):
4120         Use PTR_DEMANGLE for B0 if defined.
4121
4122 2005-12-17  Ulrich Drepper  <drepper@redhat.com>
4123
4124         * pthread_create.c (__pthread_create_2_1): Use
4125         THREAD_COPY_POINTER_GUARD if available.
4126         * sysdeps/i386/tcb-offsets.sym: Add POINTER_GUARD.
4127         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
4128         * sysdeps/i386/tls.h (tcbhead_t): Add pointer_guard.
4129         Define THREAD_SET_POINTER_GUARD and THREAD_COPY_POINTER_GUARD.
4130         * sysdeps/x86_64/tls.h: Likewise.
4131
4132 2005-12-15  Roland McGrath  <roland@redhat.com>
4133
4134         * sysdeps/unix/sysv/linux/mq_notify.c: Don't use sysdeps/generic.
4135
4136 2005-12-13  Ulrich Drepper  <drepper@redhat.com>
4137
4138         * sysdeps/pthread/sigfillset.c: Adjust for files moved out of
4139         sysdeps/generic.
4140         * errno-loc.c: New file.
4141
4142 2005-12-12  Roland McGrath  <roland@redhat.com>
4143
4144         * init.c (__pthread_initialize_minimal_internal): Do __static_tls_size
4145         adjustments before choosing stack size.  Update minimum stack size
4146         calculation to match allocate_stack change.
4147
4148 2005-12-12  Ulrich Drepper  <drepper@redhat.com>
4149
4150         * allocatestack.c (allocate_stack): Don't demand that there is an
4151         additional full page available on the stack beside guard, TLS, the
4152         minimum stack.
4153
4154 2005-11-24  Ulrich Drepper  <drepper@redhat.com>
4155
4156         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
4157         (__cleanup_fct_attribute): Use __regparm__ not regparm.
4158
4159         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: When
4160         compiling 32-bit code we must define __cleanup_fct_attribute.
4161
4162 005-11-24  Jakub Jelinek  <jakub@redhat.com>
4163
4164         [BZ #1920]
4165         * sysdeps/pthread/pthread.h (__pthread_unwind_next): Use
4166         __attribute__ instead of __attribute.
4167         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
4168         (__cleanup_fct_attribute): Likewise.
4169
4170 2005-11-17  Jakub Jelinek  <jakub@redhat.com>
4171
4172         * sysdeps/pthread/unwind-forcedunwind.c (pthread_cancel_init): Put
4173         a write barrier before writing libgcc_s_getcfa.
4174
4175 2005-11-06  Ulrich Drepper  <drepper@redhat.com>
4176
4177         * sysdeps/unix/sysv/linux/configure: Removed.
4178
4179 2005-11-05  Ulrich Drepper  <drepper@redhat.com>
4180
4181         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Remove trace of
4182         optional init_array/fini_array support.
4183
4184 2005-10-24  Roland McGrath  <roland@redhat.com>
4185
4186         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Remove unnecessary
4187         versioned_symbol use.
4188
4189 2005-10-16  Roland McGrath  <roland@redhat.com>
4190
4191         * init.c (__pthread_initialize_minimal_internal): Even when using a
4192         compile-time default stack size, apply the minimum that allocate_stack
4193         will require, and round up to page size.
4194
4195 2005-10-10  Daniel Jacobowitz  <dan@codesourcery.com>
4196
4197         * Makefile ($(test-modules)): Remove static pattern rule.
4198
4199 2005-10-14  Jakub Jelinek  <jakub@redhat.com>
4200             Ulrich Drepper  <drepper@redhat.com>
4201
4202         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Fix stack
4203         alignment in callback function.
4204         * Makefile: Add rules to build and run tst-align3.
4205         * tst-align3.c: New file.
4206
4207 2005-10-03  Jakub Jelinek  <jakub@redhat.com>
4208
4209         * allocatestack.c (setxid_signal_thread): Add
4210         INTERNAL_SYSCALL_DECL (err).
4211
4212 2005-10-02  Jakub Jelinek  <jakub@redhat.com>
4213
4214         * allocatestack.c (setxid_signal_thread): Need to use
4215         atomic_compare_and_exchange_bool_acq.
4216
4217 2005-10-01  Ulrich Drepper  <drepper@redhat.com>
4218             Jakub Jelinek  <jakub@redhat.com>
4219
4220         * descr.h: Define SETXID_BIT and SETXID_BITMASK.  Adjust
4221         CANCEL_RESTMASK.
4222         (struct pthread): Move specific_used field to avoid padding.
4223         Add setxid_futex field.
4224         * init.c (sighandler_setxid): Reset setxid flag and release the
4225         setxid futex.
4226         * allocatestack.c (setxid_signal_thread): New function.  Broken
4227         out of the bodies of the two loops in __nptl_setxid.  For undetached
4228         threads check whether they are exiting and if yes, don't send a signal.
4229         (__nptl_setxid): Simplify loops by using setxid_signal_thread.
4230         * pthread_create.c (start_thread): For undetached threads, check
4231         whether setxid bit is set.  If yes, wait until signal has been
4232         processed.
4233
4234         * allocatestack.c (STACK_VARIABLES): Initialize them.
4235         * pthread_create.c (__pthread_create_2_1): Initialize pd.
4236
4237 2004-09-02  Jakub Jelinek  <jakub@redhat.com>
4238
4239         * pthread_cond_destroy.c (__pthread_cond_destroy): If there are
4240         waiters, awake all waiters on the associated mutex.
4241
4242 2005-09-22  Roland McGrath  <roland@redhat.com>
4243
4244         * perf.c [__x86_64__] (HP_TIMING_NOW): New macro (copied from
4245         ../sysdeps/x86_64/hp-timing.h).
4246
4247 2005-08-29  Jakub Jelinek  <jakub@redhat.com>
4248
4249         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_WAKE_OP,
4250         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
4251         (lll_futex_wake_unlock): Define.
4252         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (FUTEX_WAKE_OP,
4253         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
4254         (lll_futex_wake_unlock): Define.
4255         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (FUTEX_WAKE_OP,
4256         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
4257         (lll_futex_wake_unlock): Define.
4258         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_WAKE_OP,
4259         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
4260         (lll_futex_wake_unlock): Define.
4261         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (FUTEX_WAKE_OP,
4262         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
4263         (lll_futex_wake_unlock): Define.
4264         * sysdeps/pthread/pthread_cond_signal.c (__pthread_cond_signal): Use
4265         lll_futex_wake_unlock.
4266         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
4267         (FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
4268         (__pthread_cond_signal): Use FUTEX_WAKE_OP.
4269         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
4270         (FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
4271         (__pthread_cond_signal): Use FUTEX_WAKE_OP.
4272
4273 2005-09-05  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4274
4275         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_mutex_lock_wait):
4276         Fix typo in register name.
4277
4278 2005-08-23  Ulrich Drepper  <drepper@redhat.com>
4279
4280         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
4281         Use __sigfillset.  Document that sigfillset does the right thing wrt
4282         to SIGSETXID.
4283
4284 2005-07-11  Jakub Jelinek  <jakub@redhat.com>
4285
4286         [BZ #1102]
4287         * sysdeps/pthread/pthread.h (PTHREAD_MUTEX_INITIALIZER,
4288         PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
4289         PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP,
4290         PTHREAD_MUTEX_ADAPTIVE_NP, PTHREAD_RWLOCK_INITIALIZER,
4291         PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
4292         PTHREAD_COND_INITIALIZER): Supply zeros for all fields
4293         in the structure.
4294         * Makefile (tests): Add tst-initializers1.
4295         (CFLAGS-tst-initializers1.c): Set.
4296         * tst-initializers1.c: New test.
4297
4298 2005-07-11  Jakub Jelinek  <jakub@redhat.com>
4299
4300         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_rwlock_t):
4301         Make sure __flags are located at offset 48 from the start of the
4302         structure.
4303
4304 2005-07-02  Roland McGrath  <roland@redhat.com>
4305
4306         * Makeconfig: Comment fix.
4307
4308 2005-07-05  Jakub Jelinek  <jakub@redhat.com>
4309
4310         * descr.h (PTHREAD_STRUCT_END_PADDING): Define.
4311         * sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): If PTHREAD_STRUCT_END_PADDING
4312         is smaller than 8 bytes, increase TLS_PRE_TCB_SIZE by 16 bytes.
4313         (THREAD_SYSINFO, THREAD_SELF, DB_THREAD_SELF): Don't assume
4314         TLS_PRE_TCB_SIZE is sizeof (struct pthread).
4315         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
4316         * sysdeps/ia64/tcb-offsets.sym (PID, TID, MULTIPLE_THREADS_OFFSET):
4317         Use TLS_PRE_TCB_SIZE instead of sizeof (struct pthread).
4318         * sysdeps/unix/sysv/linux/ia64/createthread.c (TLS_VALUE): Don't
4319         assume TLS_PRE_TCB_SIZE is sizeof (struct pthread).
4320
4321 2005-06-25  Jakub Jelinek  <jakub@redhat.com>
4322
4323         * sysdeps/i386/tls.h (tcbhead_t): Add stack_guard field.
4324         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
4325         * sysdeps/x86_64/tls.h (tcbhead_t): Add sysinfo and stack_guard
4326         fields.
4327         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
4328         * sysdeps/s390/tls.h (tcbhead_t): Add stack_guard
4329         field.  Put in sysinfo field unconditionally.
4330         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
4331         * sysdeps/powerpc/tls.h (tcbhead_t): Add stack_guard field.
4332         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
4333         * sysdeps/sparc/tls.h (tcbhead_t): Add sysinfo and stack_guard
4334         fields.
4335         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
4336         * pthread_create.c (__pthread_create_2_1): Use
4337         THREAD_COPY_STACK_GUARD macro.
4338         * Makefile: Add rules to build and run tst-stackguard1{,-static}
4339         tests.
4340         * tst-stackguard1.c: New file.
4341         * tst-stackguard1-static.c: New file.
4342
4343 2005-06-14  Alan Modra  <amodra@bigpond.net.au>
4344
4345         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
4346         Invoke CGOTSETUP and CGOTRESTORE.
4347         (CGOTSETUP, CGOTRESTORE): Define.
4348
4349 2005-05-29  Richard Henderson  <rth@redhat.com>
4350
4351         * tst-cancel4.c (WRITE_BUFFER_SIZE): New.
4352         (tf_write, tf_writev): Use it.
4353         (do_test): Use socketpair instead of pipe.  Set SO_SNDBUF to
4354         the system minimum.
4355
4356 2005-05-23  Jakub Jelinek  <jakub@redhat.com>
4357
4358         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
4359         [IS_IN_librt] (CENABLE, CDISABLE): Use JUMPTARGET instead of
4360         __librt_*_asynccancel@local.
4361
4362 2005-05-17  Alan Modra  <amodra@bigpond.net.au>
4363
4364         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Delete
4365         all occurrences of JUMPTARGET.  Instead append @local to labels.
4366
4367 2005-05-20  Jakub Jelinek  <jakub@redhat.com>
4368
4369         * sysdeps/i386/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN): Define to
4370         size/alignment of struct pthread rather than tcbhead_t.
4371         * sysdeps/x86_64/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
4372         Likewise.
4373         * sysdeps/s390/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
4374         Likewise.
4375         * sysdeps/sparc/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
4376         Likewise.
4377
4378 2005-05-19  Richard Henderson  <rth@redhat.com>
4379
4380         * sysdeps/ia64/pthread_spin_lock.c (pthread_spin_lock): Use
4381         __sync_val_compare_and_swap, not explicit _si variant.
4382         * sysdeps/ia64/pthread_spin_trylock.c (pthread_spin_trylock): Likewise.
4383
4384 2005-05-03  Ulrich Drepper  <drepper@redhat.com>
4385
4386         [BZ #915]
4387         * sysdeps/pthread/pthread.h: Avoid empty initializers.
4388
4389 2005-05-03  Jakub Jelinek  <jakub@redhat.com>
4390
4391         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Remove explicit
4392         .eh_frame section, use cfi_* directives.
4393
4394 2005-04-27  Jakub Jelinek  <jakub@redhat.com>
4395
4396         * sysdeps/unix/sysv/linux/pthread_getcpuclockid.c: Use <> instead
4397         of "" includes.
4398
4399 2005-04-27  Ulrich Drepper  <drepper@redhat.com>
4400
4401         [BZ #1075]
4402         * tst-cancel17.c (do_test): Add arbitrary factor to make sure
4403         aio_write blocks.
4404
4405 2005-04-27  Roland McGrath  <roland@redhat.com>
4406
4407         * Makefile (tests): Remove tst-clock2.
4408
4409         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Handle
4410         CLOCK_PROCESS_CPUTIME_ID and CLOCK_PROCESS_THREAD_ID specially,
4411         translating to the kernel clockid_t for our own process/thread clock.
4412
4413         * sysdeps/unix/sysv/linux/pthread_getcpuclockid.c: New file.
4414
4415 2005-04-15  Jakub Jelinek  <jakub@redhat.com>
4416
4417         * old_pthread_cond_init.c: Include <errno.h>.
4418         (__pthread_cond_init_2_0): Fail with EINVAL if COND_ATTR is
4419         process shared or uses clock other than CLOCK_REALTIME.
4420         * pthread_cond_init.c (__pthread_cond_init): Remove bogus comment.
4421
4422 2005-04-13  David S. Miller  <davem@davemloft.net>
4423
4424         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: New file.
4425         * sysdeps/sparc/sparc64/clone.S: New file.
4426
4427 2005-04-05  Jakub Jelinek  <jakub@redhat.com>
4428
4429         [BZ #1102]
4430         * sysdeps/pthread/pthread.h (__pthread_cleanup_routine): Use
4431         __inline instead of inline.
4432         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_routine): Likewise.
4433
4434 2005-03-31  Jakub Jelinek  <jakub@redhat.com>
4435
4436         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Use
4437         functionally equivalent, but shorter instructions.
4438         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
4439         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
4440         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
4441         Likewise.
4442         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Likewise.
4443         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
4444         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
4445         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
4446         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4447         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
4448         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
4449         Likewise.
4450         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
4451         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
4452         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
4453         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
4454         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
4455
4456 2005-03-28  Daniel Jacobowitz  <dan@codesourcery.com>
4457
4458         * sysdeps/mips/Makefile: New file.
4459         * sysdeps/mips/nptl-sysdep.S: New file.
4460         * sysdeps/mips/tcb-offsets.sym: New file.
4461         * sysdeps/mips/pthread_spin_lock.S: New file.
4462         * sysdeps/mips/pthread_spin_trylock.S: New file.
4463         * sysdeps/mips/pthreaddef.h: New file.
4464         * sysdeps/mips/tls.h: New file.
4465         * sysdeps/mips/jmpbuf-unwind.h: New file.
4466         * sysdeps/unix/sysv/linux/mips/lowlevellock.h: New file.
4467         * sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h: New file.
4468         * sysdeps/unix/sysv/linux/mips/bits/semaphore.h: New file.
4469         * sysdeps/unix/sysv/linux/mips/pthread_once.c: New file.
4470         * sysdeps/unix/sysv/linux/mips/fork.c: New file.
4471         * sysdeps/unix/sysv/linux/mips/pt-vfork.S: New file.
4472         * sysdeps/unix/sysv/linux/mips/vfork.S: New file.
4473         * sysdeps/unix/sysv/linux/mips/clone.S: New file.
4474         * sysdeps/unix/sysv/linux/mips/createthread.c: New file.
4475         * sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: New file.
4476
4477 2005-03-23  Ulrich Drepper  <drepper@redhat.com>
4478
4479         [BZ #1112]
4480         * pthread_create.c (__pthread_create_2_1): Rename syscall error
4481         variable to scerr.
4482
4483 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
4484
4485         * tst-getpid1.c (do_test): Align stack passed to clone{2,}.
4486
4487 2005-02-25  Roland McGrath  <roland@redhat.com>
4488
4489         * alloca_cutoff.c: Correct license text.
4490         * tst-unload.c: Likewise.
4491         * sysdeps/pthread/allocalim.h: Likewise.
4492         * sysdeps/pthread/pt-initfini.c: Likewise.
4493         * sysdeps/pthread/bits/libc-lock.h: Likewise.
4494         * sysdeps/pthread/bits/sigthread.h: Likewise.
4495         * sysdeps/unix/sysv/linux/bits/local_lim.h: Likewise.
4496         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
4497
4498 2005-02-16  Roland McGrath  <roland@redhat.com>
4499
4500         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
4501         Use unsigned int * for ptr_nthreads.
4502
4503 2005-02-14  Alan Modra  <amodra@bigpond.net.au>
4504
4505         [BZ #721]
4506         * sysdeps/powerpc/tcb-offsets.sym (thread_offsetof): Redefine to suit
4507         gcc4.
4508
4509 2005-02-07  Richard Henderson  <rth@redhat.com>
4510
4511         [BZ #787]
4512         * sysdeps/pthread/pthread.h (__sigsetjmp): Use pointer as first
4513         argument.
4514
4515 2004-11-03  Marcus Brinkmann  <marcus@gnu.org>
4516
4517         * sysdeps/generic/lowlevellock.h (__generic_mutex_unlock): Fix
4518         order of arguments in invocation of atomic_add_zero.
4519
4520 2005-01-26  Jakub Jelinek  <jakub@redhat.com>
4521
4522         [BZ #737]
4523         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S (__new_sem_trywait):
4524         Use direct %gs segment access or, if NO_TLS_DIRECT_SEG_REFS,
4525         at least gotntpoff relocation and addition.
4526         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
4527         Likewise.
4528         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
4529         Likewise.
4530         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
4531         Likewise.
4532
4533 2005-01-06  Ulrich Drepper  <drepper@redhat.com>
4534
4535         * allocatestack.c (init_one_static_tls): Adjust initialization of DTV
4536         entry for static tls deallocation fix.
4537         * sysdeps/alpha/tls.h (dtv_t): Change pointer type to be struct which
4538         also contains information whether the memory pointed to is static
4539         TLS or not.
4540         * sysdeps/i386/tls.h: Likewise.
4541         * sysdeps/ia64/tls.h: Likewise.
4542         * sysdeps/powerpc/tls.h: Likewise.
4543         * sysdeps/s390/tls.h: Likewise.
4544         * sysdeps/sh/tls.h: Likewise.
4545         * sysdeps/sparc/tls.h: Likewise.
4546         * sysdeps/x86_64/tls.h: Likewise.
4547
4548 2004-12-27  Ulrich Drepper  <drepper@redhat.com>
4549
4550         * init.c (__pthread_initialize_minimal_internal): Use __sigemptyset.
4551
4552 2004-12-21  Jakub Jelinek  <jakub@redhat.com>
4553
4554         * sysdeps/i386/tls.h (CALL_THREAD_FCT): Maintain 16 byte alignment of
4555         %esp.
4556         * Makefile (tests): Add tst-align2.
4557         * tst-align2.c: New test.
4558         * sysdeps/i386/Makefile (CFLAGS-tst-align{,2}.c): Add
4559         -mpreferred-stack-boundary=4.
4560
4561 2004-12-18  Roland McGrath  <roland@redhat.com>
4562
4563         * sysdeps/unix/sysv/linux/powerpc/powerpc64/bits/local_lim.h:
4564         New file removed withdrawn for the moment.
4565
4566 2004-12-17  Richard Henderson  <rth@redhat.com>
4567
4568         * sysdeps/unix/sysv/linux/alpha/clone.S: New file.
4569         * sysdeps/alpha/tcb-offsets.sym (TID_OFFSET): New.
4570
4571 2004-12-16  Ulrich Drepper  <drepper@redhat.com>
4572
4573         * sysdeps/unix/sysv/linux/powerpc/powerpc64/bits/local_lim.h: New file.
4574         Increased PTHREAD_STACK_MIN.
4575
4576         * tst-context1.c (stacks): Use bigger stack size.
4577
4578 2004-12-16  Jakub Jelinek  <jakub@redhat.com>
4579
4580         * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: New file.
4581         * sysdeps/sparc/tcb-offsets.sym: Add TID.
4582
4583 2004-12-15  Jakub Jelinek  <jakub@redhat.com>
4584
4585         * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: New file.
4586         * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: New file.
4587         * sysdeps/s390/tcb-offsets.sym (TID): Add.
4588
4589 2004-12-15  Ulrich Drepper  <drepper@redhat.com>
4590
4591         * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: New file.
4592
4593 2004-12-14  Ulrich Drepper  <drepper@redhat.com>
4594
4595         * sysdeps/powerpc/tcb-offsets.sym: Add TID.
4596         * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: New file.
4597
4598         * tst-getpid1.c: If child crashes, report this first.  Print which
4599         signal.
4600
4601 2004-12-09  Ulrich Drepper  <drepper@redhat.com>
4602
4603         * init.c (__pthread_initialize_minimal_internal): Also unblock
4604         SIGSETXID.
4605
4606 2004-12-01  Jakub Jelinek  <jakub@redhat.com>
4607
4608         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_CPUTIME,
4609         _POSIX_THREAD_CPUTIME): Define to 0.
4610         * sysdeps/pthread/timer_create.c (timer_create): Remove unused code
4611         handling CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID.
4612         * sysdeps/pthread/timer_routines.c (__timer_signal_thread_pclk,
4613         __timer_signal_thread_tclk): Remove.
4614         (init_module): Remove their initialization.
4615         (thread_cleanup): Remove their cleanup assertions.
4616         * sysdeps/pthread/posix-timer.h (__timer_signal_thread_pclk,
4617         __timer_signal_thread_tclk): Remove.
4618         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Removed.
4619         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Removed.
4620         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Removed.
4621
4622 2004-12-07  Jakub Jelinek  <jakub@redhat.com>
4623
4624         * sysdeps/ia64/tcb-offsets.sym (TID): Add.
4625         * sysdeps/unix/sysv/linux/ia64/clone2.S: New file.
4626
4627         * Makefile (tests): Add tst-getpid2.
4628         * tst-getpid1.c (TEST_CLONE_FLAGS): Define.
4629         (do_test): Use it.  Use __clone2 instead of clone on ia64.
4630         * tst-getpid2.c: New test.
4631
4632 2004-12-07  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4633
4634         * sysdeps/unix/sysv/linux/sh/clone.S: New file.
4635
4636 2004-12-04  Ulrich Drepper  <drepper@redhat.com>
4637
4638         * Makefile (tests): Add tst-getpid1.
4639         * tst-getpid1.c: New file.
4640         * sysdeps/unix/sysv/linux/i386/clone.S: New file.
4641         * sysdeps/unix/sysv/linux/x86_64/clone.S: New file.
4642
4643 2004-12-02  Roland McGrath  <roland@redhat.com>
4644
4645         * Makefile (libpthread-nonshared): Variable removed.
4646         ($(objpfx)libpthread_nonshared.a): Target removed.
4647         ($(inst_libdir)/libpthread_nonshared.a): Likewise.
4648         These are now handled by generic magic from
4649         libpthread-static-only-routines being set.
4650
4651 2004-11-27  Ulrich Drepper  <drepper@redhat.com>
4652
4653         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_PRIORITIZED_IO,
4654         _POSIX2_CHAR_TERM, _POSIX_THREAD_PRIO_INHERIT,
4655         _POSIX_THREAD_PRIO_PROTECT): Define.
4656         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
4657         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
4658         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
4659
4660 2004-11-26  Jakub Jelinek  <jakub@redhat.com>
4661
4662         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_ADVISORY_INFO,
4663         _POSIX_SPORADIC_SERVER, _POSIX_THREAD_SPORADIC_SERVER, _POSIX_TRACE,
4664         _POSIX_TRACE_EVENT_FILTER, _POSIX_TRACE_INHERIT, _POSIX_TRACE_LOG,
4665         _POSIX_TYPED_MEMORY_OBJECTS, _POSIX_IPV6, _POSIX_RAW_SOCKETS): Define.
4666         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
4667         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
4668         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
4669
4670 2004-11-24  Ulrich Drepper  <drepper@redhat.com>
4671
4672         * sysdeps/x86_64/Makefile [nptl]: Define CFLAGS-pthread_create.c.
4673
4674         * Makefile (libpthread-routines): Add pthread_setschedprio.
4675         * Versions [libpthread, GLIBC_2.3.4]: Add pthread_setschedprio.
4676         * sysdeps/pthread/pthread.h: Declare pthread_setschedprio.
4677         * pthread_setschedprio.c: New file.
4678
4679 2004-11-20  Jakub Jelinek  <jakub@redhat.com>
4680
4681         * pthread_create.c (pthread_cancel): Add PTHREAD_STATIC_FN_REQUIRE.
4682         * pthread_cancel.c (pthread_create): Likewise.
4683
4684         * Makefile (libpthread-routines): Add vars.
4685         * sysdeps/pthread/createthread.c (__pthread_multiple_threads): Remove.
4686         * init.c (__default_stacksize, __is_smp): Remove.
4687         * vars.c: New file.
4688         * pthreadP.h (__find_thread_by_id): If !SHARED, add weak_function
4689         and define a wrapper macro.
4690         (PTHREAD_STATIC_FN_REQUIRE): Define.
4691         * allocatestack.c (__find_thread_by_id): Undefine.
4692         * pthread_create (__pthread_keys): Remove.
4693         (pthread_mutex_lock, pthread_mutex_unlock, pthread_once,
4694         pthread_key_create, pthread_setspecific, pthread_getspecific): Add
4695         PTHREAD_STATIC_FN_REQUIRE.
4696
4697 2004-11-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4698
4699         * sysdeps/sh/tls.h (DB_THREAD_SELF): Set the correct bias
4700         parameter to REGISTER macro.
4701
4702 2004-11-17  Roland McGrath  <roland@redhat.com>
4703
4704         * sysdeps/unix/sysv/linux/timer_routines.c (__start_helper_thread):
4705         Make sure SIGCANCEL is blocked as well.
4706
4707 2004-11-10  Jakub Jelinek  <jakub@redhat.com>
4708
4709         * sysdeps/pthread/setxid.h: New file.
4710         * sysdeps/pthread/pthread-functions.h (HAVE_PTR__NPTL_SETXID): Remove.
4711         (struct xid_command): Add forward decl.
4712         (struct pthread_functions): Change return type of __nptl_setxid hook
4713         to int.
4714         * pthreadP.h (__nptl_setxid): Change return type to int.
4715         * allocatestack.c (__nptl_setxid): Call INTERNAL_SYSCALL_NCS in the
4716         calling thread, return its return value and set errno on failure.
4717         * descr.h (struct xid_command): Change id type to long array.
4718
4719         * Makefile: Add rules to build and test tst-setuid1 and
4720         tst-setuid1-static.
4721         * tst-setuid1.c: New test.
4722         * tst-setuid1-static.c: New test.
4723
4724 2004-11-10  Jakub Jelinek  <jakub@redhat.com>
4725
4726         * Makefile (tests): Add tst-exit3.
4727         * tst-exit3.c: New test.
4728
4729 2004-11-09  Ulrich Drepper  <drepper@redhat.com>
4730
4731         * Makefile (tests): Add tst-exit2.
4732         * tst-exit2.c: New file.
4733
4734 2004-11-09  Roland McGrath  <roland@redhat.com>
4735
4736         [BZ #530]
4737         * sysdeps/pthread/createthread.c (do_clone): Increment __nptl_nthreads
4738         here, before calling clone.
4739         * pthread_create.c (start_thread): Don't do it here.
4740
4741 2004-11-02  Jakub Jelinek  <jakub@redhat.com>
4742
4743         * sysdeps/unix/sysv/linux/smp.h: Include <errno.h>.
4744
4745 2004-10-29  Kaz  Kojima  <kkojima@rr.iij4u.or.jp>
4746
4747         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait):
4748         Set ETIMEDOUT to errno when time is up.  Tweak to avoid
4749         assembler warning.
4750
4751 2004-10-28  Jakub Jelinek  <jakub@redhat.com>
4752
4753         * pthread_create.c (__pthread_create_2_1): Avoid leaking stacks
4754         if sched_priority is not between minprio and maxprio.
4755
4756 2004-10-25  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4757
4758         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
4759         (__pthread_cond_timedwait): Use clock_gettime syscall if exists.
4760
4761         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
4762         (__lll_mutex_timedlock_wait): Fix a bad branch condition.
4763
4764 2004-10-24  Ulrich Drepper  <drepper@redhat.com>
4765
4766         * sysdeps/unix/sysv/linux/smp.h (is_smp_system): Use
4767         not-cancelable I/O functions.
4768
4769 2004-10-21  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4770
4771         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
4772         (__lll_mutex_timedlock_wait): If woken but cannot get the lock,
4773         make sure 2 is stored in the futex and we looked at the old value.
4774         Fix a few other problems to return the correct value.
4775
4776 2004-10-14  Richard Henderson  <rth@redhat.com>
4777
4778         * sysdeps/alpha/tcb-offsets.sym (thread_offsetof): Redefine to
4779         make gcc4 happy.
4780
4781 2004-10-06  Jakub Jelinek  <jakub@redhat.com>
4782
4783         * sysdeps/unix/sysv/linux/jmp-unwind.c: Include pthreadP.h instead
4784         of pthread-functions.h and pthreaddef.h.
4785         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Likewise.
4786
4787         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
4788         Change __data.__nwaiters from int to unsigned int.
4789
4790         * tst-clock2.c (do_test): Don't fail if _POSIX_THREAD_CPUTIME == 0 and
4791         sysconf (_SC_THREAD_CPUTIME) returns negative value.
4792
4793         * allocatestack.c (__find_thread_by_id): Move attribute_hidden
4794         before return type.
4795
4796         * sysdeps/s390/jmpbuf-unwind.h: Include bits/wordsize.h.
4797         (JMPBUF_CFA_UNWINDS_ADJ): Subtract 96 resp. 160 bytes from CFA.
4798
4799 2004-10-06  Ulrich Drepper  <drepper@redhat.com>
4800
4801         * tst-cancel4.c (tf_msgrcv): Check for failure in msgget.  If the
4802         test fails, remove message queue.
4803         (tf_msgsnd): Likewise.
4804
4805 2004-10-05  Jakub Jelinek  <jakub@redhat.com>
4806
4807         * tst-clock1.c: Change #ifdef to #if defined.
4808         * tst-clock2.c: Likewise.
4809         * tst-cond11.c: Likewise.
4810
4811         * sysdeps/pthread/timer_create.c (timer_create): Use
4812         defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 instead of
4813         defined CLOCK_PROCESS_CPUTIME_ID #ifs and similarly for
4814         THREAD_CPUTIME.
4815
4816 2004-10-05  Jakub Jelinek  <jakub@redhat.com>
4817
4818         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h (_POSIX_CPUTIME,
4819         _POSIX_THREAD_CPUTIME): Define to 0.
4820
4821 2004-10-04  Ulrich Drepper  <drepper@redhat.com>
4822
4823         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Define _POSIX_CPUTIME
4824         and _POSIX_THREAD_CPUTIME to zero.
4825         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
4826         * tst-barrier2.c: Fix testing for POSIX feature.
4827         * tst-clock1.c: Likewise.
4828         * tst-clock2.c: Likewise.
4829         * tst-cond11.c: Likewise.
4830         * tst-cond4.c: Likewise.
4831         * tst-cond6.c: Likewise.
4832         * tst-flock2.c: Likewise.
4833         * tst-mutex4.c: Likewise.
4834         * tst-mutex9.c: Likewise.
4835         * tst-rwlock12.c: Likewise.
4836         * tst-rwlock4.c: Likewise.
4837         * tst-signal1.c: Likewise.
4838         * tst-spin2.c: Likewise.
4839         * sysdeps/pthread/posix-timer.h: Likewise.
4840         * sysdeps/pthread/timer_create.c: Likewise.
4841         * sysdeps/pthread/timer_routines.c: Likewise.
4842
4843 2004-10-01  Ulrich Drepper  <drepper@redhat.com>
4844
4845         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
4846         (__lll_mutex_timedlock_wait): Address futex correctly.
4847
4848         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
4849         (__lll_mutex_timedlock_wait): If woken but cannot get the lock,
4850         make sure 2 is stored in the futex and we looked at the old value.
4851         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
4852         (__lll_mutex_timedlock_wait): Likewise.  Fix a few other problems
4853         which might very well made the code not working at all before.
4854         [BZ #417]
4855
4856 2004-09-28  Ulrich Drepper  <drepper@redhat.com>
4857
4858         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): Don't
4859         allow SIGSETXID to be sent.
4860         * sysdeps/pthread/sigaction.c (__sigaction): Don't allow action
4861         for SIGSETXID to be defined.
4862         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Make sure
4863         SIGSETXID cannot be blocked.
4864
4865         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
4866         Add __extension__ to long long types.
4867         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
4868         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
4869         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
4870         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4871         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Likewise.
4872         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
4873         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
4874
4875 2004-09-25  Ulrich Drepper  <drepper@redhat.com>
4876
4877         * descr.h (struct pthread): Add stopped_start field.
4878         * sysdeps/pthread/createthread.c (create_thread): Set
4879         start_stopped flag in descriptor for new thread appropriately.
4880         * pthread_create.c (start_thread): Only take lock to be stopped on
4881         startup if stopped_start flag says so.
4882
4883 2004-09-24  Ulrich Drepper  <drepper@redhat.com>
4884
4885         * pthread_create.c (__pthread_create_2_1): Remember whether thread
4886         is created detached and if yes, do not try to free the stack in case
4887         the thread creation failed.
4888         * sysdeps/pthread/createthread.c (do_clone): Free stack here if clone
4889         call fails.  Don't depend on INTERNAL_SYSCALL_ERRNO return zero in
4890         case there has been no error.  [BZ #405]
4891
4892         * pthread_create.c (start_thread): Don't wait for scheduler data
4893         etc to be set at the beginning of the function.  The cancellation
4894         infrastructure must have been set up.  And enable async
4895         cancellation before potentially going to sleep.  [BZ #401]
4896
4897 2004-09-20  Ulrich Drepper  <drepper@redhat.com>
4898
4899         * Versions: Remove exports for pthread_set*id_np functions.
4900         * sysdeps/pthread/pthread.h: Remove pthread_set*id_np prototypes
4901         for now.
4902         * Makefile: Don't build pthread_set*id code for now.
4903
4904 2004-09-19  Ulrich Drepper  <drepper@redhat.com>
4905
4906         * sysdeps/unix/sysv/linux/allocrtsig.c: Allocate second signal for
4907         internal use.
4908         * allocatestack.c (__nptl_setxid): New function.
4909         * descr.h (struct xid_command): Define type.
4910         * init.c (pthread_functions): Add ptr__nptl_setxid initialization.
4911         (sighandler_setxid): New function.
4912         (__pthread_initialize_minimal): Register sighandler_setxid for
4913         SIGCANCEL.
4914         * pt-allocrtsig.c: Update comment.
4915         * pthreadP.h: Define SIGSETXID.  Declare __xidcmd variable.
4916         Declare __nptl_setxid.
4917         * sysdeps/pthread/pthread-functions.h: Add ptr__nptl_setxid.
4918         * sysdeps/pthread/pthread.h: Declare pthread_setgid_np,
4919         pthread_setuid_np, pthread_setegid_np, pthread_seteuid_np,
4920         pthread_setregid_np, pthread_setreuid_np, pthread_setresgid_np,
4921         and pthread_setresuid_np.
4922         * pthread_setgid_np.c: New file.
4923         * pthread_setuid_np.c: New file.
4924         * pthread_setegid_np.c: New file.
4925         * pthread_seteuid_np.c: New file.
4926         * pthread_setregid_np.c: New file.
4927         * pthread_setreuid_np.c: New file.
4928         * pthread_setresgid_np.c: New file.
4929         * pthread_setresuid_np.c: New file.
4930         * Versions [libpthread, GLIBC_2.3.4]: Add pthread_setgid_np,
4931         pthread_setuid_np, pthread_setegid_np, pthread_seteuid_np,
4932         pthread_setregid_np, pthread_setreuid_np, pthread_setresgid_np,
4933         and pthread_setresuid_np.
4934         * Makefile (libpthread-routines): Add pthread_setuid, pthread_seteuid,
4935         pthread_setreuid, pthread_setresuid, pthread_setgid, pthread_setegid,
4936         pthread_setregid, and pthread_setresgid.
4937
4938 2004-09-18  Ulrich Drepper  <drepper@redhat.com>
4939
4940         * allocatestack.c (allocate_stack): Return EAGAIN instead of
4941         ENOMEM when out of memory.
4942
4943 2004-09-10  Roland McGrath  <roland@redhat.com>
4944
4945         [BZ #379]
4946         * allocatestack.c (allocate_stack): Remove [__ASSUME_CLONE_STOPPED]
4947         code, since we don't try to use the broken CLONE_STOPPED any more.
4948         * pthread_create.c (start_thread): Likewise.
4949
4950 2004-09-15  Richard Henderson  <rth@redhat.com>
4951
4952         * sysdeps/unix/sysv/linux/alpha/vfork.S: Use libc_hidden_def.
4953
4954 2004-09-01  David Mosberger  <davidm@hpl.hp.com>
4955
4956         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h
4957         (__libc_unwind_longjmp): Delete macro and declare as function.
4958         * sysdeps/unix/sysv/linux/ia64/Makefile (sysdep_routines): Mention
4959         __ia64_longjmp, sigstack_longjmp, and __sigstack_longjmp for
4960         nptl directory.
4961         * sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S: New file.
4962         * sysdeps/unix/sysv/linux/ia64/__sigstack_longjmp.c: New file.
4963         * sysdeps/unix/sysv/linux/ia64/unwind_longjmp.c: New file.
4964
4965 2004-09-12  Ulrich Drepper  <drepper@redhat.com>
4966
4967         * sysdeps/pthread/pthread.h: Make rwlock prototypes available also
4968         for __USE_XOPEN2K.
4969         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Define rwlock
4970         types also for __USE_XOPEN2K.
4971         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
4972         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4973         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
4974         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
4975         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
4976         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
4977         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
4978         [BZ #320]
4979
4980 2004-09-08  Ulrich Drepper  <drepper@redhat.com>
4981
4982         * sysdeps/pthread/pthread.h
4983         (PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP): Make safe for C++.
4984         (PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP): Likewise.
4985         (PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP): Likewise.
4986         (PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP): Likewise.
4987         [BZ #375]
4988
4989 2004-09-07  Ulrich Drepper  <drepper@redhat.com>
4990
4991         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Allow
4992         PSEUDO to be used with . prefix.
4993
4994         * sysdeps/unix/sysv/linux/alpha/pthread_once.c (__pthread_once):
4995         Use atomic_increment instead of atomic_exchange_and_add.
4996         * sysdeps/unix/sysv/linux/sparc/pthread_once.c (__pthread_once):
4997         Likewise.
4998         * sysdeps/unix/sysv/linux/ia64/pthread_once.c (__pthread_once):
4999         Likewise.
5000         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
5001         Likewise.
5002
5003         * allocatestack.c (allocate_stack): Use atomic_increment_val
5004         instead of atomic_exchange_and_add.
5005         * sysdeps/unix/sysv/linux/sem_post.c (__new_sem_post): Likewise.
5006         * sysdeps/unix/sysv/linux/powerpc/sem_post.c (__new_sem_post):
5007         Likewise.
5008         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
5009         Likewise.
5010
5011         * sysdeps/pthread/pthread.h (pthread_once): Remove __THROW since
5012         the initialization function might throw.
5013
5014 2005-09-05  Richard Henderson  <rth@redhat.com>
5015
5016         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (SINGLE_THREAD_P):
5017         Move definition inside libpthread, libc, librt check.  Provide
5018         definition for rtld.
5019
5020 2004-09-02  Ulrich Drepper  <drepper@redhat.com>
5021
5022         * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp.
5023         * sysdeps/i386/jmpbuf-unwind.h: Likewise
5024         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
5025         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
5026         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
5027         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
5028         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
5029         * sysdeps/x86_64/jmpbuf-unwind.h: Likewise.
5030         * unwind.c: Use it.
5031
5032         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
5033         Rename __data.__clock to __data.__nwaiters, make it unsigned int.
5034         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
5035         Likewise.
5036         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
5037         Decrement __nwaiters.  If pthread_cond_destroy has been called and
5038         this is the last waiter, signal pthread_cond_destroy caller and
5039         avoid using the pthread_cond_t structure after unlock.
5040         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
5041         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5042         Read clock type from the least significant bits of __nwaiters instead
5043         of __clock.
5044         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
5045         * sysdeps/unix/sysv/linux/internaltypes.h: Define COND_CLOCK_BITS.
5046
5047 2004-08-31  Jakub Jelinek  <jakub@redhat.com>
5048
5049         [BZ #342]
5050         * Makefile (tests): Add tst-cond20 and tst-cond21.
5051         * tst-cond20.c: New test.
5052         * tst-cond21.c: New test.
5053         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
5054         (pthread_cond_t): Rename __data.__clock to __data.__nwaiters, make
5055         it unsigned int.
5056         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
5057         Likewise.
5058         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
5059         (pthread_cond_t): Likewise.
5060         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_cond_t):
5061         Likewise.
5062         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
5063         Likewise.
5064         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_cond_t):
5065         Likewise.
5066         * sysdeps/unix/sysv/linux/lowlevelcond.sym (cond_clock): Remove.
5067         (cond_nwaiters): New.
5068         (clock_bits): New.
5069         * pthread_cond_destroy.c (__pthread_cond_destroy): Return EBUSY
5070         if there are waiters not signalled yet.
5071         Wait until all already signalled waiters wake up.
5072         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Decrement
5073         __nwaiters.  If pthread_cond_destroy has been called and this is the
5074         last waiter, signal pthread_cond_destroy caller and avoid using
5075         the pthread_cond_t structure after unlock.
5076         (__pthread_cond_wait): Increment __nwaiters in the beginning,
5077         decrement it when leaving.  If pthread_cond_destroy has been called
5078         and this is the last waiter, signal pthread_cond_destroy caller.
5079         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
5080         Likewise.  Read clock type from the least significant bits of
5081         __nwaiters instead of __clock.
5082         * pthread_condattr_setclock.c (pthread_condattr_setclock): Check
5083         whether clock ID can be encoded in COND_CLOCK_BITS bits.
5084         * pthread_condattr_getclock.c (pthread_condattr_getclock): Decode
5085         clock type just from the last COND_CLOCK_BITS bits of value.
5086         * pthread_cond_init.c (__pthread_cond_init): Initialize __nwaiters
5087         instead of __clock, just from second bit of condattr's value.
5088
5089 2004-08-30  Jakub Jelinek  <jakub@redhat.com>
5090
5091         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Include
5092         bits/wordsize.h.  Make the header match i386 header when __WORDSIZE
5093         != 64.
5094         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
5095
5096 2004-08-15  Roland McGrath  <roland@frob.com>
5097
5098         * pthread_atfork.c: Update copyright terms including special exception
5099         for these trivial files, which are statically linked into executables
5100         that use dynamic linking for the significant library code.
5101
5102 2004-08-09  Jakub Jelinek  <jakub@redhat.com>
5103
5104         * DESIGN-rwlock.txt: Add decreasing of nr_readers_queued to
5105         pthread_rwlock_rdlock.
5106         * sysdeps/pthread/pthread_rwlock_rdlock (__pthread_rwlock_rdlock):
5107         Decrease __nr_readers_queued after reacquiring lock.
5108         * sysdeps/pthread/pthread_rwlock_timedrdlock
5109         (pthread_rwlock_timedrdlock): Likewise.
5110         Reported by Bob Cook <bobcook47@hotmail.com>.
5111
5112 2004-08-11  Jakub Jelinek  <jakub@redhat.com>
5113
5114         * tst-rwlock14.c (tf): Read main thread handle from *ARG
5115         before pthread_barrier_wait.
5116
5117 2004-08-07  Ulrich Drepper  <drepper@redhat.com>
5118
5119         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
5120         Remove unnecessary exception handling data.
5121
5122 2004-07-23  Jakub Jelinek  <jakub@redhat.com>
5123
5124         [BZ #284]
5125         * sysdeps/pthread/pthread.h (pthread_getcpuclockid): Use __clockid_t
5126         instead of clockid_t.
5127
5128 2004-07-21  Roland McGrath  <roland@redhat.com>
5129
5130         * Makefile ($(objpfx)multidir.mk): Use $(make-target-directory).
5131
5132 2004-07-19  Roland McGrath  <roland@redhat.com>
5133
5134         * tst-cancel4.c (tf_waitid): Use WEXITED flag bit if available.
5135
5136 2004-07-02  Roland McGrath  <roland@redhat.com>
5137
5138         * configure: Don't exit.
5139
5140 2004-07-14  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5141
5142         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
5143         (__pthread_cond_timedwait): Check for invalid nanosecond in
5144         timeout value.
5145
5146 2004-07-07  Ulrich Drepper  <drepper@redhat.com>
5147
5148         * Makefile: Add rules to build and run tst-fini1.
5149         * tst-fini1.c: New file.
5150         * tst-fini1mod.c: New file.
5151
5152 2004-07-05  Ulrich Drepper  <drepper@redhat.com>
5153
5154         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define NO_CANCELLATION
5155         if no cancellation support is needed.
5156         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
5157         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
5158         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
5159         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
5160         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
5161         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
5162         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
5163         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
5164         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
5165
5166         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Define __NR_futex
5167         only if not already defined.
5168
5169 2004-07-05  Jakub Jelinek  <jakub@redhat.com>
5170
5171         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_unlock): Use
5172         constraint "m" instead of "0" for futex.
5173
5174         * shlib-versions: Add powerpc64-.*-linux.*.
5175
5176 2004-07-04  Jakub Jelinek  <jakub@redhat.com>
5177
5178         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
5179         (pthread_rwlock_timedrdlock): Use cmpq instead of cmpl to check
5180         for valid tv_nsec.
5181         * tst-rwlock14.c (do_test): Test for invalid tv_nsec equal to
5182         1 billion and 64-bit tv_nsec which is valid when truncated to 32
5183         bits.
5184
5185 2004-06-29  Roland McGrath  <roland@redhat.com>
5186
5187         * Banner: NPTL no longer has its own version number.
5188         * Makefile (nptl-version): Variable removed.
5189         * sysdeps/pthread/Makefile (CFLAGS-confstr.c): Set LIBPTHREAD_VERSION
5190         using $(version), the glibc version number.
5191
5192 2004-06-29  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5193
5194         * sysdeps/unix/sysv/linux/sh/pthread_once.S (__pthread_once):
5195         Fix branch offset for a PLT entry.
5196         * sysdeps/unix/sysv/linux/sh/sem_post.S (__new_sem_post):
5197         Likewise.
5198         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait):
5199         Likewise.
5200         * sysdeps/unix/sysv/linux/sh/sem_trywait.S (__new_sem_trywait):
5201         Likewise.
5202         * sysdeps/unix/sysv/linux/sh/sem_wait.S (__new_sem_wait):
5203         Likewise.
5204
5205 2004-06-28  Jakub Jelinek  <jakub@redhat.com>
5206
5207         * sysdeps/alpha/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Define
5208         unconditionally.
5209
5210 2004-06-28  Jakub Jelinek  <jakub@redhat.com>
5211
5212         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
5213         (pthread_rwlock_timedwrlock): Return EINVAL if tv_nsec is negative,
5214         instead of tv_sec.
5215         * sysdeps/pthread/pthread_rwlock_timedrdlock.c
5216         (pthread_rwlock_timedrdlock): Likewise.
5217
5218 2004-06-22  Jakub Jelinek  <jakub@redhat.com>
5219
5220         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue):
5221         Set __r7 to val, not mutex.
5222
5223 2004-06-27  Ulrich Drepper  <drepper@redhat.com>
5224
5225         * Makefile: Add rules to build tst-rwlock14.
5226         * tst-rwlock14.c: New file.
5227
5228 2004-06-24  Boris Hu  <boris.hu@intel.com>
5229
5230         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Add timeout validation
5231         check.
5232         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
5233
5234 2004-06-19  Andreas Jaeger  <aj@suse.de>
5235
5236         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Fix
5237         assembler in last patch.
5238
5239 2004-06-17  Ulrich Drepper  <drepper@redhat.com>
5240
5241         * sysdeps/pthread/pthread_cond_timedwait.c
5242         (__pthread_cond_timedwait): Also check for negativ nanoseconds.
5243         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5244         (__pthread_cond_timedwait): Check for invalid nanosecond in
5245         timeout value.
5246         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
5247         * tst-cond19.c: New file.
5248         * Makefile: Add rules to build and run tst-cond19.
5249
5250 2004-06-15  Steven Munroe  <sjmunroe@us.ibm.com>
5251
5252         * tst-context1.c (GUARD_PATTERN): Defined.
5253         (tst_context_t): Define struct containing ucontext_t & guard words.
5254         (ctx): Declare as an array of tst_context_t.
5255         (fct): Verify uc_link & guard words are still valid.
5256         (tf): Initialize guard words in ctx.  Adjust ctx refs for new struct.
5257
5258 2004-06-13  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5259
5260         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
5261         Add __data.__futex field, reshuffle __data.__clock.
5262         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
5263         (__pthread_cond_signal): Increment __futex at the same time as
5264         __wakeup_seq or __total_seq.  Pass address of __futex instead of
5265         address of low 32-bits of __wakeup_seq to futex syscall.
5266         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
5267         (__pthread_cond_wait): Likewise.  Pass __futex value from before
5268         releasing internal lock to FUTEX_WAIT.
5269         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
5270         (__pthread_cond_timedwait): Likewise.
5271         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
5272         (FUTEX_CMP_REQUEUE): Define.
5273         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
5274         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
5275         Pass __futex value from before the unlock and __futex address instead
5276         of address of low 32-bits of __wakeup_seq to futex syscall.
5277         Fallback to FUTEX_WAKE all on any errors.
5278
5279 2004-06-08  Jakub Jelinek  <jakub@redhat.com>
5280
5281         * pthread_mutexattr_getpshared.c (pthread_mutex_getpshared): Fix
5282         comment typo.
5283         * pthread_mutexattr_gettype.c (pthread_mutexattr_gettype): Likewise.
5284         * pthread_mutexattr_init.c (__pthread_mutexattr_init): Likewise.
5285         * pthread_mutexattr_settype.c (__pthread_mutexattr_settype): Likewise.
5286         * pthread_mutexattr_setpshared.c (pthread_mutexattr_setpshared):
5287         Likewise.  Reported by Bob Cook <bobcook47@hotmail.com>.
5288
5289 2004-06-11  Martin Schwidefsky  <schwidefsky@de.ibm.com>
5290
5291         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_compare_and_swap):
5292         Add memory clobber to inline assembly.
5293         (__lll_mutex_trylock): Likewise.
5294         (__lll_mutex_cond_trylock): Likewise.
5295
5296 2004-06-07  Martin Schwidefsky  <schwidefsky@de.ibm.com>
5297
5298         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue):
5299         Pass val argument as 6th system call argument in %r7.
5300
5301 2004-05-21  Jakub Jelinek  <jakub@redhat.com>
5302
5303         * Makefile (tests): Add tst-cond16.
5304         * sysdeps/unix/sysv/linux/lowlevelcond.sym (cond_futex): Add.
5305         * pthread_cond_init.c (__pthread_cond_init): Clear __data.__futex.
5306         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
5307         Add __data.__futex field, reshuffle __data.__clock.
5308         * sysdeps/unix/sysv/linux/i386/pthread_cond_signal.S
5309         (__pthread_cond_signal): Increment __futex at the same time as
5310         __wakeup_seq or __total_seq.  Pass address of __futex instead of
5311         address of low 32-bits of __wakeup_seq to futex syscall.
5312         * sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S
5313         (__pthread_cond_wait): Likewise.  Pass __futex value from before
5314         releasing internal lock to FUTEX_WAIT.
5315         * sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S
5316         (__pthread_cond_timedwait): Likewise.
5317         * sysdeps/unix/sysv/linux/i386/pthread_cond_broadcast.S
5318         (FUTEX_CMP_REQUEUE): Define.
5319         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
5320         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
5321         Pass __futex value from before the unlock and __futex address instead
5322         of address of low 32-bits of __wakeup_seq to futex syscall.
5323         Fallback to FUTEX_WAKE all on any errors.
5324         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (FUTEX_CMP_REQUEUE):
5325         Define.
5326         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
5327         internally.  Return non-zero if error, zero if success.
5328         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_cond_t):
5329         Add __data.__futex field, reshuffle __data.__clock.
5330         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_CMP_REQUEUE):
5331         Define.
5332         (lll_futex_requeue): Add val argument, return 1 unconditionally
5333         for the time being.
5334         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
5335         Add __data.__futex field, reshuffle __data.__clock.
5336         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_CMP_REQUEUE):
5337         Define.
5338         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
5339         internally.  Return non-zero if error, zero if success.
5340         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
5341         (pthread_cond_t): Add __data.__futex field, reshuffle __data.__clock.
5342         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (FUTEX_CMP_REQUEUE):
5343         Define.
5344         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
5345         internally.  Return non-zero if error, zero if success.
5346         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_cond_t):
5347         Add __data.__futex field, reshuffle __data.__clock.
5348         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (FUTEX_CMP_REQUEUE):
5349         Define.
5350         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
5351         internally.  Return non-zero if error, zero if success.
5352         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_cond_t):
5353         Add __data.__futex field, reshuffle __data.__clock.
5354         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
5355         Add __data.__futex field, reshuffle __data.__clock.
5356         * sysdeps/pthread/pthread_cond_signal.c (__pthread_cond_signal):
5357         Increment __futex at the same time as __wakeup_seq or __total_seq.
5358         Pass address of __futex instead of address of low 32-bits of
5359         __wakeup_seq to futex syscall.
5360         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
5361         Pass __futex value from before releasing internal lock
5362         to FUTEX_WAIT.
5363         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
5364         Likewise.  Avoid unnecessary shadowing of variables.
5365         * sysdeps/pthread/pthread_cond_broadcast.c (__pthread_cond_broadcast):
5366         Set __futex to 2 * __total_seq.  Pass __futex value from before the
5367         unlock and __futex address instead of address of low 32-bits of
5368         __wakeup_seq to futex_requeue macro, adjust for new return value
5369         meaning.
5370         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
5371         (__pthread_cond_signal): Increment __futex at the same time as
5372         __wakeup_seq or __total_seq.  Pass address of __futex instead of
5373         address of low 32-bits of __wakeup_seq to futex syscall.
5374         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
5375         (__pthread_cond_wait): Likewise.  Pass __futex value from before
5376         releasing internal lock to FUTEX_WAIT.
5377         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
5378         (__pthread_cond_timedwait): Likewise.
5379         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
5380         (FUTEX_CMP_REQUEUE): Define.
5381         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
5382         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
5383         Pass __futex value from before the unlock and __futex address instead
5384         of address of low 32-bits of __wakeup_seq to futex syscall.
5385         Fallback to FUTEX_WAKE all on any errors.
5386
5387 2004-06-03  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5388
5389         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_mutex_lock):
5390         Add nop to align the end of critical section.
5391         (lll_mutex_cond_lock, lll_mutex_timedlock): Likewise.
5392
5393 2004-06-01  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5394
5395         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
5396         Add __broadcast_seq field.
5397         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Mark
5398         all waiters as woken with woken_seq and bump broadcast counter.
5399         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Use new
5400         __broadcast_seq.  Increment __woken_seq correctly when cleanuped.
5401         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
5402         Comment typo fixes.  Avoid returning -ETIMEDOUT.
5403
5404 2004-06-01  Ulrich Drepper  <drepper@redhat.com>
5405
5406         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5407         (__condvar_tw_cleanup): Fix access to saved broadcast_seq value.
5408         Reported by Kaz Kojima.
5409
5410 2004-05-25  Jakub Jelinek  <jakub@redhat.com>
5411
5412         * sysdeps/unix/sysv/linux/aio_misc.h: New file.
5413
5414 2004-05-21  Jakub Jelinek  <jakub@redhat.com>
5415
5416         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Compare
5417         __broadcast_seq with bc_seq after acquiring internal lock instead of
5418         before it.
5419
5420 2004-05-18  Jakub Jelinek  <jakub@redhat.com>
5421
5422         * Makefile (.NOTPARALLEL): Only serialize make check/xcheck, not
5423         compilation.
5424         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5425         (__pthread_cond_timedwait): Avoid returning -ETIMEDOUT.
5426         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
5427         (pthread_cond_t): Add __data.__broadcast_seq field.
5428         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
5429         (FRAME_SIZE): Define.
5430         (__pthread_cond_timedwait): Use it.  Store/check broadcast_seq.
5431         Comment typo fixes.
5432         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (FRAME_SIZE):
5433         Define.
5434         (__pthread_cond_wait): Use it.  Store/check broadcast_seq.  Comment
5435         typo fixes.
5436         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
5437         (__pthread_cond_broadcast): Increment broadcast_seq.  Comment typo
5438         fixes.
5439
5440 2004-05-18  Ulrich Drepper  <drepper@redhat.com>
5441
5442         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add broadcast_seq entry.
5443         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_cond_t):
5444         Add __broadcast_seq field.
5445         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
5446         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
5447         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
5448         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
5449         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
5450         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Mark
5451         all waiters as woken with woken_seq and bump broadcast counter.
5452         * sysdeps/pthread/pthread_cond_broadcast.c: Likewise.
5453         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use new
5454         __broadcast_seq field.
5455         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5456         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
5457         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
5458         * pthread_cond_init.c: Initialize __broadcast_seq field.
5459         * Makefile (tests): Add tst-cond17 and tst-cond18.
5460         Add .NOTPARALLEL goal.
5461         * tst-cond16.c: New file.  From Jakub.
5462         * tst-cond17.c: New file.  From Jakub.
5463         * tst-cond18.c: New file.  From Jakub.
5464
5465 2004-05-16  Ulrich Drepper  <drepper@redhat.com>
5466
5467         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Correct some
5468         unwind info.
5469
5470         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
5471         Parametrize frame size.  Correct some unwind info.
5472         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5473
5474 2004-05-04  Jakub Jelinek  <jakub@redhat.com>
5475
5476         * tst-stack3.c: Note testing functionality beyond POSIX.
5477
5478 2004-05-04  Jakub Jelinek  <jakub@redhat.com>
5479
5480         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (USE___THREAD):
5481         Change conditional from ifdef to if.
5482
5483 2004-04-23  Jakub Jelinek  <jakub@redhat.com>
5484
5485         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (SYSDEP_CANCEL_ERRNO,
5486         SYSDEP_CANCEL_ERROR): Define.
5487         (PSEUDO): Use it.
5488
5489 2004-05-01  Jakub Jelinek  <jakub@redhat.com>
5490
5491         * Versions (libpthread): Remove __pthread_cleanup_upto@@GLIBC_PRIVATE.
5492
5493 2004-04-20  Jakub Jelinek  <jakub@redhat.com>
5494
5495         * sem_unlink.c (sem_unlink): Change EPERM into EACCES.
5496
5497 2004-04-19  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5498
5499         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Add frame info.
5500         Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
5501         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Remove unneeded frame
5502         info.  Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
5503
5504 2004-04-19  Ulrich Drepper  <drepper@redhat.com>
5505
5506         * sysdeps/unix/sysv/linux/timer_routines.c: Make sure helper
5507         thread has all signals blocked.
5508
5509 2004-04-18  Andreas Jaeger  <aj@suse.de>
5510
5511         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h
5512         (SEM_VALUE_MAX): Add missing brace.
5513
5514 2004-04-17  Jakub Jelinek  <jakub@redhat.com>
5515
5516         * sysdeps/pthread/Makefile (tests): Add tst-mqueue8x
5517         in rt subdir.
5518         (CFLAGS-tst-mqueue8x.c): Add -fexceptions.
5519         * sysdeps/pthread/tst-mqueue8x.c: New test.
5520         * tst-cancel4.c: Update comment about message queues.
5521
5522         * sysdeps/pthread/timer_gettime.c (timer_gettime): For expired timer
5523         return it_value { 0, 0 }.
5524         * sysdeps/pthread/timer_create.c (timer_create): Handle SIGEV_NONE
5525         like SIGEV_SIGNAL.
5526         * sysdeps/pthread/timer_routines.c (thread_expire_timer): Remove
5527         assertion for SIGEV_NONE.
5528         (thread_attr_compare): Compare all attributes, not just a partial
5529         subset.
5530
5531 2004-04-17  Jakub Jelinek  <jakub@redhat.com>
5532
5533         * sysdeps/unix/sysv/linux/mq_notify.c: Include stdlib.h.
5534
5535 2004-04-17  Ulrich Drepper  <drepper@redhat.com>
5536
5537         * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h (SEM_VALUE_MAX):
5538         Just use a plain number.
5539         * sysdeps/unix/sysv/linux/i386/bits/semaphore.h: Likewise.
5540         * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: Likewise.
5541         * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: Likewise.
5542         * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: Likewise.
5543         * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: Likewise.
5544         * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: Likewise.
5545         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
5546
5547 2004-04-16  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5548
5549         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Remove unneeded
5550         frame info.
5551         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
5552
5553 2004-04-15  Jakub Jelinek  <jakub@redhat.com>
5554
5555         * sysdeps/unix/sysv/linux/timer_routines.c: Include errno.h.
5556         (timer_helper_thread): Use inline rt_sigtimedwait syscall instead
5557         of calling sigwaitinfo.
5558
5559 2004-04-16  Ulrich Drepper  <drepper@redhat.com>
5560
5561         * allocatestack.c (allocate_stack): Set reported_guardsize
5562         unconditionally.
5563         * pthread_getattr_np.c (pthread_getattr_np): Use
5564         reported_guardsize instead of guardsize.
5565         * descr.h (struct pthread): Add reported_guardsize field.
5566
5567 2004-04-13  Jakub Jelinek  <jakub@redhat.com>
5568
5569         * sysdeps/unix/sysv/linux/mq_notify.c: Shut up GCC warning.
5570
5571 2004-04-12  Ulrich Drepper  <drepper@redhat.com>
5572
5573         * sysdeps/unix/sysv/linux/mq-notify.c: New file.
5574
5575 2004-04-08  Jakub Jelinek  <jakub@redhat.com>
5576
5577         * sysdeps/unix/sysv/linux/bits/local_lim.h (MQ_PRIO_MAX): Define.
5578         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h (MQ_PRIO_MAX): Define.
5579         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h (MQ_PRIO_MAX): Define.
5580         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h (MQ_PRIO_MAX): Define.
5581         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_MESSAGE_PASSING):
5582         Define.
5583         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h
5584         (_POSIX_MESSAGE_PASSING): Define.
5585         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h
5586         (_POSIX_MESSAGE_PASSING): Define.
5587         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h
5588         (_POSIX_MESSAGE_PASSING): Define.
5589
5590 2004-04-04  Ulrich Drepper  <drepper@redhat.com>
5591
5592         * tst-context1.c (fct): Check whether correct stack is used.
5593
5594 2004-04-03  Ulrich Drepper  <drepper@redhat.com>
5595
5596         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Never use
5597         matching constraints for asm mem parameters.
5598
5599         * tst-clock2.c (tf): Don't define unless needed.
5600
5601 2004-03-30  H.J. Lu  <hongjiu.lu@intel.com>
5602
5603         * Makefile (link-libc-static): Use $(static-gnulib) instead of
5604         $(gnulib).
5605
5606 2004-03-30  Ulrich Drepper  <drepper@redhat.com>
5607
5608         * sysdeps/pthread/pthread-functions.h: Add ptr__nptl_deallocate_tsd.
5609         * init.c (pthread_functions): Add ptr__nptl_deallocate_tsd.
5610         * pthreadP.h: Declare __nptl_deallocate_tsd.
5611         * pthread_create.c (deallocate_tsd): Remove to __nptl_deallocate_tsd.
5612         Adjust caller.
5613
5614         * Makefile (tests): Add tst-tsd5.
5615         * tst-tsd5.c: New file.
5616
5617 2004-03-29  Ulrich Drepper  <drepper@redhat.com>
5618
5619         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
5620         (__pthread_attr_setaffinity_old): Prepend GLIBC_ to version names
5621         is SHLIB_COMPAT check.
5622         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
5623         (__pthread_attr_getaffinity_old): Likewise.
5624         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
5625         (__pthread_getaffinity_old): Likewise.
5626         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
5627         (__pthread_setaffinity_old): Likewise.
5628
5629 2004-03-26  Ulrich Drepper  <drepper@redhat.com>
5630
5631         * allocatestack.c (_make_stacks_executable): Call
5632         _dl_make_stack_executable first.
5633
5634 2004-03-24  Roland McGrath  <roland@redhat.com>
5635
5636         * sysdeps/i386/pthread_spin_lock.c (pthread_spin_lock): Use "m"
5637         constraint instead of "0".
5638
5639 2004-03-24  Ulrich Drepper  <drepper@redhat.com>
5640
5641         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
5642         (lll_mutex_cond_trylock): Define as wrapper around __lll_cond_trylock.
5643
5644         * sysdeps/unix/sysv/linux/getpid.c (really_getpid): Reorganize
5645         code to avoid warning.
5646
5647 2004-03-24  Andreas Jaeger  <aj@suse.de>
5648
5649         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
5650         (__pthread_attr_setaffinity_old): Remove const.
5651
5652 2004-03-23  Ulrich Drepper  <drepper@redhat.com>
5653
5654         * sysdeps/unix/sysv/linux/smp.h: New file.
5655         * sysdeps/unix/sysv/linux/sh/smp.h: New file.
5656         * init.c: Define __is_smp.
5657         (__pthread_initialize_minimal_internal): Call is_smp_system to
5658         initialize __is_smp.
5659         * pthreadP.h: Declare __is_smp.
5660         Define MAX_ADAPTIVE_COUNT is necessary.
5661         * pthread_mutex_init.c: Add comment regarding __spins field.
5662         * pthread_mutex_lock.c: Implement adaptive mutex type.
5663         * pthread_mutex_timedlock.c: Likewise.
5664         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise.
5665         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_mutex_t):
5666         Add __spins field.
5667         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
5668         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
5669         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
5670         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
5671         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
5672         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
5673         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
5674         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Define
5675         lll_mutex_cond_trylock.
5676         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
5677         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
5678         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
5679         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
5680         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
5681         Define BUSY_WAIT_NOP.
5682         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
5683         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
5684
5685         * tst-mutex5.c: Add support for testing adaptive mutexes.
5686         * tst-mutex7.c: Likewise.
5687         * tst-mutex5a.c: New file.
5688         * tst-mutex7a.c: New file.
5689         * Makefile (tests): Add tst-mutex5a and tst-mutex7a.
5690
5691         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
5692         (__lll_mutex_timedlock_wait): Preserve r8 and r9 since the
5693         vgettimeofday call might destroy the content.
5694
5695         * sysdeps/ia64/pthread_spin_lock.c (pthread_spin_lock): Use hint
5696         @pause in the loop.
5697
5698         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_mutex_trylock):
5699         No need to restrict type of ret.  Make it int.  Add comment.
5700
5701         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_mutex_trylock):
5702         Remove unnecessary setne instruction.
5703
5704 2004-03-22  Jakub Jelinek  <jakub@redhat.com>
5705
5706         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
5707         (__pthread_getaffinity_new): Use INT_MAX instead of UINT_MAX.
5708         * pthread_getattr_np.c (pthread_getattr_np): Double size every cycle.
5709         If realloc fails, break out of the loop.
5710
5711 2004-03-20  Andreas Jaeger  <aj@suse.de>
5712
5713         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
5714         (__pthread_setaffinity_old): Fix interface.
5715         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
5716         (__pthread_getaffinity_old): Likewise.
5717
5718         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
5719         (__pthread_setaffinity_new): Remove duplicate declaration.
5720
5721 2004-03-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5722
5723         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (CENABLE): Save
5724         the return value to a safe register.
5725         (CDISABLE): Set the function argument correctly.
5726
5727 2004-03-17  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5728
5729         * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h (XCHG): Define.
5730         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_mutex_lock_wait):
5731         Rewrite so that only one locked memory operation per round is needed.
5732         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
5733         (pthread_barrier_wait): After wakeup, release lock only when the
5734         last thread stopped using the barrier object.
5735         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
5736         (__pthread_cond_wait): Don't store mutex address if the current
5737         value is ~0l.  Add correct cleanup support and unwind info.
5738         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
5739         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
5740         (__pthread_cond_broadcast): Don't use requeue for pshared condvars.
5741         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Update comment.
5742         * sysdeps/unix/sysv/linux/sh/pthread_once.S (__pthread_once):
5743         Add correct cleanup support and unwind info.
5744         * sysdeps/unix/sysv/linux/sh/sem_wait.S (__new_sem_wait): Likewise.
5745         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Add unwind
5746         information for syscall wrappers.
5747
5748 2004-03-18  Ulrich Drepper  <drepper@redhat.com>
5749
5750         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_attr): Add
5751         cpusetsize field, remove next.
5752         * sysdeps/pthread/pthread.h (pthread_getaffinity_np): Add new second
5753         parameter for size of the CPU set.
5754         (pthread_setaffinity_np): Likewise.
5755         (pthread_attr_getaffinity_np): Likewise.
5756         (pthread_attr_setaffinity_np): Likewise.
5757         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c: Implement
5758         interface change, keep compatibility code.
5759         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c: Likewise.
5760         * sysdeps/unix/sysv/linux/pthread_getaffinity.c: Likewise.
5761         * sysdeps/unix/sysv/linux/pthread_setaffinity.c: Likewise.
5762         * pthreadP.h: Remove hidden_proto for pthread_getaffinity_np.  Declare
5763         __pthread_getaffinity_np.
5764         * Versions: Add version for changed interfaces.
5765         * tst-attr3.c: Adjust test for interface change.
5766         * pthread_getattr_np.c: Query the kernel about the affinity mask with
5767         increasing buffer sizes.
5768         * pthread_attr_destroy.c: Remove unused list handling.
5769         * pthread_attr_init.c: Likewise.
5770
5771 2004-03-17  Roland McGrath  <roland@redhat.com>
5772
5773         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Pass missing
5774         first argument to clock_getres so we ever enable kernel timers.
5775
5776 2004-03-15  Ulrich Weigand  <uweigand@de.ibm.com>
5777
5778         * init.c (nptl_version): Add __attribute_used__ to nptl_version.
5779
5780 2004-03-12  Richard Henderson  <rth@redhat.com>
5781
5782         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Propagate
5783         oldvalue from CENABLE to CDISABLE.
5784
5785 2004-03-12  Ulrich Drepper  <drepper@redhat.com>
5786
5787         * sysdeps/unix/sysv/linux/bits/local_lim.h: Define HOST_NAME_MAX.
5788         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise.
5789         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise.
5790         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise.
5791
5792 2004-03-11  Richard Henderson  <rth@redhat.com>
5793
5794         * sysdeps/alpha/tcb-offsets.sym (PID_OFFSET): New.
5795         * sysdeps/unix/sysv/linux/alpha/pt-vfork.S: Save/restore PID.
5796         * sysdeps/unix/sysv/linux/alpha/vfork.S: New file.
5797
5798 2004-03-11  Jakub Jelinek  <jakub@redhat.com>
5799
5800         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S (__vfork): Use jgnl
5801         instead of jnl instruction to jump to SYSCALL_ERROR_LABEL.
5802         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S (__vfork): Likewise.
5803
5804 2004-03-11  Jakub Jelinek  <jakub@redhat.com>
5805
5806         * forward.c (__pthread_cond_broadcast_2_0,
5807         __pthread_cond_destroy_2_0, __pthread_cond_init_2_0,
5808         __pthread_cond_signal_2_0, __pthread_cond_wait_2_0,
5809         __pthread_cond_timedwait_2_0): Use return 0 as defaction instead of 0.
5810
5811 2004-03-11  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5812
5813         * sysdeps/sh/tcb-offsets.sym: Add PID.
5814         * sysdeps/unix/sysv/linux/sh/pt-vfork.S: Properly handle PID cache.
5815         * sysdeps/unix/sysv/linux/sh/vfork.S: New file.
5816
5817 2004-03-10  Ulrich Drepper  <drepper@redhat.com>
5818
5819         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: No need to
5820         include <sysdep-cancel.h>, vfork is no cancellation point.
5821         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: Likewise.
5822         * sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S: Likewise.
5823         * sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S: Likewise.
5824
5825 2004-03-10  Jakub Jelinek  <jakub@redhat.com>
5826
5827         * sysdeps/unix/sysv/linux/s390/s390-32/vfork.S (__vfork): Add
5828         libc_hidden_def.
5829         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S (__vfork): Likewise.
5830         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S (__vfork):
5831         Likewise.
5832         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S (__vfork):
5833         Likewise.
5834         * sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S (__vfork): Likewise.
5835         * sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S (__vfork): Likewise.
5836         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Include tcb-offsets.h.
5837         * sysdeps/unix/sysv/linux/ia64/vfork.S (__vfork): Use DO_CALL instead
5838         of DO_CALL_VIA_BREAK.  Work around a gas problem.
5839
5840         * sysdeps/unix/sysv/linux/powerpc/pt-vfork.S: Remove.
5841         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: New file.
5842         * sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S: New file.
5843         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: New file.
5844         * sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S: New file.
5845         * sysdeps/powerpc/tcb-offsets.sym: Add PID.
5846
5847         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S (__vfork): Don't use
5848         a local register for saving old PID.  Negate PID in parent upon exit.
5849
5850         * sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: Include
5851         tcb-offsets.h.
5852         (__vfork): Negate PID if non-zero and set to INT_MIN if zero
5853         before syscall, set to the old value in the parent afterwards.
5854         * sysdeps/unix/sysv/linux/s390/s390-32/vfork.S: New file.
5855         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S: Include
5856         tcb-offsets.h.
5857         (__vfork): Negate PID if non-zero and set to INT_MIN if zero
5858         before syscall, set to the old value in the parent afterwards.
5859         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S: New file.
5860         * sysdeps/s390/tcb-offsets.sym: Add PID.
5861
5862         * sysdeps/unix/sysv/linux/sparc/pt-vfork.S: Remove.
5863         * sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: New file.
5864         * sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S: New file.
5865         * sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: New file.
5866         * sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S: New file.
5867         * sysdeps/sparc/tcb-offsets.sym: Add PID.
5868
5869 2004-03-10  Andreas Schwab  <schwab@suse.de>
5870
5871         * sysdeps/ia64/tcb-offsets.sym: Add PID.
5872         * sysdeps/unix/sysv/linux/ia64/vfork.S: New file.
5873         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Properly handle PID cache.
5874
5875 2004-03-09  Jakub Jelinek  <jakub@redhat.com>
5876
5877         * tst-cancel20.c (do_one_test): Clear in_sh_body first.
5878         * tst-cancel21.c (do_one_test): Likewise.
5879         Reported by Gordon Jin <gordon.jin@intel.com>.
5880
5881 2004-02-09  Jakub Jelinek  <jakub@redhat.com>
5882
5883         * sysdeps/unix/sysv/linux/i386/vfork.S (SAVE_PID): Negate PID
5884         if non-zero and set to INT_MIN if zero.
5885         * sysdeps/unix/sysv/linux/x86_64/vfork.S (SAVE_PID): Likewise.
5886         * sysdeps/unix/sysv/linux/i386/pt-vfork.S: Include tcb-offsets.h.
5887         (SAVE_PID, RESTORE_PID): Define.
5888         (__vfork): Use it.
5889         * sysdeps/unix/sysv/linux/x86_64/pt-vfork.S: Include tcb-offsets.h.
5890         Use relative path to avoid including NPTL i386/vfork.S.
5891         (SAVE_PID, RESTORE_PID): Define.
5892         * sysdeps/unix/sysv/linux/raise.c: Include limits.h.
5893         (raise): Handle THREAD_SELF->pid INT_MIN the same as 0.
5894         * Makefile (tests): Add tst-vfork1, tst-vfork2, tst-vfork1x and
5895         tst-vfork2x.
5896         (tests-reverse): Add tst-vfork1x and tst-vfork2x.
5897         * tst-vfork1.c: New test.
5898         * tst-vfork2.c: New test.
5899         * tst-vfork1x.c: New test.
5900         * tst-vfork2x.c: New test.
5901
5902 2004-03-08  Ulrich Drepper  <drepper@redhat.com>
5903
5904         * sysdeps/i386/tcb-offsets.sym: Add PID.
5905         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
5906         * sysdeps/unix/sysv/linux/i386/vfork.S: New file.
5907         * sysdeps/unix/sysv/linux/x86_64/vfork.S: New file.
5908
5909 2004-03-08  Steven Munroe  <sjmunroe@us.ibm.com>
5910
5911         * sysdeps/unix/sysv/linux/powerpc/Versions: Remove leading tabs.
5912
5913 2004-03-08  H.J. Lu  <hongjiu.lu@intel.com>
5914
5915         * sysdeps/s390/tls.h (INIT_SYSINFO): _dl_sysinfo is now in
5916         _rtld_global_ro.
5917
5918 2004-03-07  Ulrich Drepper  <drepper@redhat.com>
5919
5920         * sysdeps/ia64/tls.h (INIT_SYSINFO): _dl_sysinfo is now in
5921         _rtld_global_ro.
5922
5923         * tst-once4.c: Remove unnecessary macro definition.
5924
5925         * tst-mutex7.c (do_test): Limit thread stack size.
5926         * tst-once2.c (do_test): Likewise.
5927         * tst-tls3.c (do_test): Likewise.
5928         * tst-tls1.c (do_test): Likewise.
5929         * tst-signal3.c (do_test): Likewise.
5930         * tst-kill6.c (do_test): Likewise.
5931         * tst-key4.c (do_test): Likewise.
5932         * tst-join4.c (do_test): Likewise.
5933         * tst-fork1.c (do_test): Likewise.
5934         * tst-context1.c (do_test): Likewise.
5935         * tst-cond2.c (do_test): Likewise.
5936         * tst-cond10.c (do_test): Likewise.
5937         * tst-clock2.c (do_test): Likewise.
5938         * tst-cancel10.c (do_test): Likewise.
5939         * tst-basic2.c (do_test): Likewise.
5940         * tst-barrier4.c (do_test): Likewise.
5941
5942 2004-03-05  Ulrich Drepper  <drepper@redhat.com>
5943
5944         * sysdeps/i386/tls.h: Use GLRO instead of GL where appropriate.
5945
5946 2004-03-01  Ulrich Drepper  <drepper@redhat.com>
5947
5948         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5949         (__pthread_cond_timedwait): Optimize wakeup test.
5950         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
5951         (__pthread_cond_wait): Likewise.
5952         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
5953         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
5954         Likewise.
5955
5956 2004-02-29  Ulrich Drepper  <drepper@redhat.com>
5957
5958         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
5959         (__lll_mutex_lock_wait): Optimize a bit more.  Just one copy of
5960         the atomic instruction needed.
5961         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
5962         (__lll_mutex_lock_wait): Likewise.
5963
5964 2004-02-28  Ulrich Drepper  <drepper@redhat.com>
5965
5966         * Makefile (tests): Add tst-cond14 and tst-cond15.
5967         * tst-cond14.c: New file.
5968         * tst-cond15.c: New file.
5969
5970 2004-02-27  Ulrich Drepper  <drepper@redhat.com>
5971
5972         * sysdeps/pthread/createthread.c (create_thread): Remove use of
5973         CLONE_STOPPED.  We cannot use SIGCONT which means CLONE_STOPPED
5974         needs to be implemented differently to be useful.
5975
5976 2004-02-26  Ulrich Drepper  <drepper@redhat.com>
5977
5978         * pthread_attr_setschedparam.c: Don't test priority against limits
5979         here.  Set ATTR_FLAG_SCHED_SET flag.
5980         * pthread_attr_setschedpolicy.c: Set ATTR_FLAG_POLICY_SET flag.
5981         * pthread_create.c (__pthread_create_2_1): Copy scheduling attributes
5982         from parent thread to child.  If attribute is used and scheduling
5983         parameters are not inherited, copy parameters from attribute or
5984         compute them.  Check priority value.
5985         * pthread_getschedparam.c: If the parameters aren't known yet get
5986         them from the kernel.
5987         * pthread_setschedparam.c: Set ATTR_FLAG_SCHED_SET and
5988         ATTR_FLAG_POLICY_SET flag for thread.
5989         * sysdeps/unix/sysv/linux/internaltypes.h: Define ATTR_FLAG_SCHED_SET
5990         and ATTR_FLAG_POLICY_SET.
5991
5992         * sysdeps/pthread/createthread.c: Use tgkill if possible.
5993
5994         * pthread_attr_getstackaddr.c (__pthread_attr_getstackaddr): Don't
5995         fail if stack address hasn't been set.  Just return 0.
5996
5997 2004-02-25  Ulrich Drepper  <drepper@redhat.com>
5998
5999         * Makefile (tests-nolibpthread): Add tst-unload.  Don't link with
6000         libpthread for the files in this list.
6001         (CFLAGS-tst-unload): Removed.
6002         * tst-unload.c (do_test): Don't use complete path for
6003         LIBPHREAD_SO.
6004
6005         * Makefile: Define sonames for tst-tls5mod, tst-_res1mod1, and
6006         tst-_res1mod2.
6007
6008 2004-02-22  Ulrich Drepper  <drepper@redhat.com>
6009
6010         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
6011         (__lll_mutex_lock_wait): Rewrite so that only one locked memory
6012         operation per round is needed.
6013         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
6014         (__lll_mutex_lock_wait): Likewise.
6015
6016 2004-02-20  Ulrich Drepper  <drepper@redhat.com>
6017
6018         * tst-cancel9.c (cleanup): Don't print to stderr.
6019
6020 2004-02-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
6021
6022         * sysdeps/sh/jmpbuf-unwind.h (_JMPBUF_UNWINDS_ADJ): Fix variable name.
6023
6024 2004-02-20  Jakub Jelinek  <jakub@redhat.com>
6025
6026         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
6027         (__syscall_error_handler2): Call CDISABLE.
6028         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
6029         (__syscall_error_handler2): Call CDISABLE.
6030
6031         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
6032         Release lock before the loop, don't reacquire it.
6033
6034         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h (DL_ARGV_NOT_RELRO): Define.
6035
6036 2004-02-19  Andreas Schwab  <schwab@suse.de>
6037
6038         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
6039         Fix last change.
6040
6041 2004-02-18  Ulrich Drepper  <drepper@redhat.com>
6042
6043         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
6044         (pthread_barrier_wait): After wakeup, release lock only when the
6045         last thread stopped using the barrier object.
6046         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S
6047         (pthread_barrier_wait): Likewise.
6048         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
6049         Likewise.
6050         * Makefile (tests): Add tst-barrier4.
6051         * tst-barrier4.c: New file.
6052
6053         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
6054         (__pthread_cond_timedwait): Perform timeout test while holding
6055         internal lock to prevent wakeup race.
6056         Patch by Dinakar Guniguntala <dgunigun@in.ibm.com>.
6057         * sysdeps/pthread/pthread_cond_timedwait.c
6058         (__pthread_cond_timedwait): Likewise.
6059         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
6060         (__pthread_cond_timedwait): Likewise.
6061
6062 2004-02-18  Jakub Jelinek  <jakub@redhat.com>
6063
6064         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
6065         (__pthread_rwlock_unlock): Access WRITER as 32-bit value.
6066         * Makefile (tests): Add tst-rwlock13.
6067         * tst-rwlock13.c: New test.
6068
6069 2004-02-16  Ulrich Drepper  <drepper@redhat.com>
6070
6071         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
6072         (__condvar_tw_cleanup): Little optimization.
6073         Patch by Dinakar Guniguntala <dgunigun@in.ibm.com>.
6074
6075 2004-02-16  Steven Munroe  <sjmunroe@us.ibm.com>
6076
6077         * sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: Replace libc with
6078         libpthread as "lib" parameter to SHLIB_COMPAT.
6079         (__novmx_siglongjmp): Fix typo in function name.
6080         (__novmx_longjmp): Fix typo in function name.
6081
6082 2004-02-13  Ulrich Drepper  <drepper@redhat.com>
6083
6084         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Add a
6085         __builtin_expect.
6086
6087         * sysdeps/generic/pt-longjmp.c: Moved to...
6088         * sysdeps/pthread/pt-longjmp.c: ...here.  New file.
6089
6090 2004-01-29  Steven Munroe  <sjmunroe@us.ibm.com>
6091
6092         * Makefile (libpthread-routines): Add pt-cleanup.
6093         * pt-longjmp.c: Removed.
6094         * pt-cleanup.c: Copied __pthread_cleanup_upto to here. New file.
6095         * sysdeps/generic/pt-longjmp.c: Copied longjmp to here. New file.
6096         * sysdeps/unix/sysv/linux/powerpc/Versions: New file.
6097         Version longjmp, siglongjmp for GLIBC_2.3.4.
6098         * sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: New File.
6099
6100 2004-02-13  Ulrich Drepper  <drepper@redhat.com>
6101
6102         * sysdeps/pthread/pthread_cond_timedwait.c
6103         (__pthread_cond_timedwait): Optimize.  Drop internal lock earlier.
6104         Reuse code.  Add __builtin_expects.
6105
6106         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
6107         (__pthread_cond_timedwait): Get internal lock in case timeout has
6108         passed before the futex syscall.
6109         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
6110
6111 2004-01-20  Ulrich Drepper  <drepper@redhat.com>
6112
6113         * allocatestack.c: Pretty printing.
6114
6115         * sysdeps/pthread/createthread.c (create_thread): Don't add
6116         CLONE_DETACHED bit if it is not necessary.
6117
6118 2004-01-16  Ulrich Drepper  <drepper@redhat.com>
6119
6120         * pthread_getattr_np.c: Include ldsodefs.h.
6121
6122 2004-01-16  Richard Henderson  <rth@redhat.com>
6123
6124         * allocatestack.c: Don't declare __libc_stack_end.
6125         * init.c (__pthread_initialize_minimal_internal): Likewise.
6126         * pthread_getattr_np.c (pthread_getattr_np): Likewise.
6127
6128 2004-01-15  Richard Henderson  <rth@redhat.com>
6129
6130         * sysdeps/alpha/tls.h (tcbhead_t): Add private.
6131         (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN, TLS_TCB_SIZE,
6132         TLS_PRE_TCB_SIZE, TLS_TCB_ALIGN, INSTALL_DTV, INSTALL_NEW_DTV,
6133         GET_DTV, THREAD_DTV, THREAD_SELF, DB_THREAD_SELF): Match ia64.
6134         (TLS_TCB_OFFSET, THREAD_ID, NO_TLS_OFFSET): Remove.
6135         (THREAD_GETMEM, THREAD_GETMEM_NC): Simplify.
6136         (THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
6137         * sysdeps/unix/sysv/linux/alpha/createthread.c (TLS_VALUE): Match ia64.
6138
6139 2004-01-14  Ulrich Drepper  <drepper@redhat.com>
6140
6141         * init.c (pthread_functions): Make array const.
6142
6143 2004-01-13  Ulrich Drepper  <drepper@redhat.com>
6144
6145         * allocatestack.c (__make_stacks_executable): Change interface.
6146         Check parameters.  Pass parameter on to libc counterpart.
6147         * pthreadP.h: Change declaration.
6148
6149 2004-01-13  Richard Henderson  <rth@redhat.com>
6150
6151         * pthread_attr_setstack.c (__old_pthread_attr_setstack): Use
6152         prototype form.
6153         * pthread_attr_setstacksize.c (__old_pthread_attr_setstacksize):
6154         Likewise.
6155
6156         * sysdeps/alpha/Makefile: New file.
6157         * sysdeps/alpha/tcb-offsets.sym: New file.
6158         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (SINGLE_THREAD_P):
6159         Use MULTIPLE_THREADS_OFFSET to implement !libpthread !libc version.
6160
6161         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Rewrite based
6162         on powerpc version.
6163
6164 2004-01-08  Jakub Jelinek  <jakub@redhat.com>
6165
6166         * Makefile (tests): Add tst-backtrace1.
6167         * tst-backtrace1.c: New test.
6168
6169 2003-12-11  Ulrich Weigand  <uweigand@de.ibm.com>
6170
6171         * sysdeps/alpha/tls.h (DB_THREAD_SELF): Pass bit size of thread
6172         register as second parameter to the REGISTER macro.
6173         * sysdeps/ia64/tls.h (DB_THREAD_SELF): Likewise.
6174         * sysdeps/powerpc/tls.h (DB_THREAD_SELF): Likewise.
6175         * sysdeps/sh/tls.h (DB_THREAD_SELF): Likewise.
6176         * sysdeps/sparc/tls.h (DB_THREAD_SELF): Likewise.
6177         * sysdeps/s390/tls.h (DB_THREAD_SELF): Pass __WORDSIZE as bit size
6178         of thread register as second parameter to REGISTER macro in 64 case.
6179
6180 2004-01-03  Ulrich Drepper  <drepper@redhat.com>
6181
6182         * sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Removed.
6183         (CFLAGS-getpid.o): Defined.
6184         (CFLAGS-getpid.os): Defined.
6185
6186 2003-12-31  Ulrich Drepper  <drepper@redhat.com>
6187
6188         * pthread_getattr_np.c (pthread_getattr_np): Make sure stack info
6189         returned for main thread does not overlap with any other VMA.
6190         Patch by Jakub Jelinek.
6191
6192 2003-12-29  Jakub Jelinek  <jakub@redhat.com>
6193
6194         * tst-raise1.c: Include stdio.h.
6195
6196 2003-12-23  Jakub Jelinek  <jakub@redhat.com>
6197
6198         * sysdeps/unix/sysv/linux/raise.c (raise): Protect pid = selftid
6199         setting with __ASSUME_TGKILL || defined __NR_tgkill.
6200         If pid is 0, set it to selftid.
6201         * sysdeps/unix/sysv/linux/getpid.c (really_getpid): Make inline.
6202         Don't set self->pid but self->tid.  If self->pid == 0 and self->tid
6203         != 0, return self->tid without doing a syscall.
6204         * descr.h (struct pthread): Move pid field after tid.
6205
6206         * Makefile (tests): Add tst-raise1.
6207         * tst-raise1.c: New file.
6208
6209 2003-12-23  Roland McGrath  <roland@redhat.com>
6210
6211         * tst-oddstacklimit.c: New file.
6212         * Makefile (tests): Add it.
6213         (tst-oddstacklimit-ENV): New variable.
6214
6215         * init.c (__pthread_initialize_minimal_internal): Round stack rlimit
6216         value up to page size for __default_stacksize.
6217
6218 2003-12-21  Ulrich Drepper  <drepper@redhat.com>
6219
6220         * Makefile (tests): Add tst-eintr5.
6221         * tst-eintr5.c: New file.
6222
6223         * eintr.c (eintr_source): Prevent sending signal to self.
6224
6225         * tst-eintr2.c (tf1): Improve error message.
6226
6227 2003-12-20  Ulrich Drepper  <drepper@redhat.com>
6228
6229         * sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Define.
6230         * sysdeps/unix/sysv/linux/getpid.c: New file.
6231         * pthread_cancel.c: Add comment explaining use of PID field.
6232         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
6233         * pthread_getattr_np.c: Use abs() when comparing PID and TID fields.
6234         * sysdeps/unix/sysv/linux/fork.c: Negate PID field of parent
6235         temporarily to signal the field must not be relied on and updated
6236         by getpid().
6237         * sysdeps/unix/sysv/linux/pt-raise.c: Handle case where PID is
6238         temporarily negative.
6239         * sysdeps/unix/sysv/linux/raise.c: Likewise.
6240
6241 2003-12-19  Ulrich Drepper  <drepper@redhat.com>
6242
6243         * eintr.c (setup_eintr): Add new parameter.  Pass to thread function.
6244         (eintr_source): If ARG != NULL, use pthread_kill.
6245         * tst-eintr1.c: Adjust for this change.
6246         * tst-eintr2.c: Likewise.
6247         * Makefile (tests): Add tst-eintr3 and tst-eintr4.
6248         * tst-eintr3.c: New file.
6249         * tst-eintr4.c: New file.
6250
6251 2003-12-19  Jakub Jelinek  <jakub@redhat.com>
6252
6253         * libc-cancellation.c (__libc_enable_asynccancel): Don't cancel
6254         if CANCELSTATE_BITMASK is set.
6255         * sysdeps/pthread/librt-cancellation.c (__librt_enable_asynccancel):
6256         Likewise.
6257
6258         * Makefile (tests): Add tst-cancel22 and tst-cancel23.
6259         (tests-reverse): Add tst-cancel23.
6260         * tst-cancel22.c: New test.
6261         * tst-cancel23.c: New test.
6262
6263 2003-12-18  Ulrich Drepper  <drepper@redhat.com>
6264
6265         * tst-eintr1.c: Better error messages.
6266
6267         * Makefile (tests): Add tst-eintr2.
6268         * tst-eintr2.c: New file.
6269
6270 2003-12-18  Jakub Jelinek  <jakub@redhat.com>
6271
6272         * Makefile (tests): Add tst-cancel21 and tst-cancelx21.
6273         (CFLAGS-tst-cancelx21.c): Set.
6274         * tst-cancel21.c: New test.
6275         * tst-cancelx21.c: New test.
6276
6277         * unwind.c (FRAME_LEFT): Add adj argument.  Subtract it from each
6278         comparison operand.
6279         (unwind_stop): Use _JMPBUF_CFA_UNWINDS_ADJ macro instead of
6280         _JMPBUF_CFA_UNWINDS.  Adjust FRAME_LEFT invocations.
6281         * pt-longjmp.c: Include jmpbuf-unwind.h.
6282         (__pthread_cleanup_upto): Use _JMPBUF_UNWINDS_ADJ macro instead of
6283         _JMPBUF_UNWINDS.  Adjust compared pointers.
6284         * init.c (__pthread_initialize_minimal_internal): Initialize
6285         pd->stackblock_size.
6286         * sysdeps/pthread/jmpbuf-unwind.h: Removed.
6287         * sysdeps/alpha/jmpbuf-unwind.h: New file.
6288         * sysdeps/i386/jmpbuf-unwind.h: New file.
6289         * sysdeps/powerpc/jmpbuf-unwind.h: New file.
6290         * sysdeps/s390/jmpbuf-unwind.h: New file.
6291         * sysdeps/sh/jmpbuf-unwind.h: New file.
6292         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: New file.
6293         * sysdeps/x86_64/jmpbuf-unwind.h: New file.
6294         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Include stdint.h.
6295         (_JMPBUF_CFA_UNWINDS): Remove.
6296         (_JMPBUF_CFA_UNWINDS_ADJ, _JMPBUF_UNWINDS_ADJ): Define.
6297
6298 2003-12-12  Jakub Jelinek  <jakub@redhat.com>
6299
6300         * Makefile (tests): Add tst-cancel20 and tst-cancelx20.
6301         (CFLAGS-tst-cancelx20.c): Set.
6302         * tst-cancel20.c: New test.
6303         * tst-cancelx20.c: New test.
6304
6305 2003-12-17  Ulrich Drepper  <drepper@redhat.com>
6306
6307         * init.c (__pthread_initialize_minimal_internal): Don't treat
6308         architectures with separate register stack special here when
6309         computing default stack size.
6310
6311 2003-12-17  Roland McGrath  <roland@redhat.com>
6312
6313         * Makefile (tst-cancelx7-ARGS): New variable.
6314         Reportd by Greg Schafer <gschafer@zip.com.au>.
6315
6316 2003-12-17  Jakub Jelinek  <jakub@redhat.com>
6317
6318         * Makefile (tests): Add tst-stack3.  Depend on $(objpfx)tst-stack3-mem.
6319         (generated): Add tst-stack3.mtrace and tst-stack3-mem.
6320         (tst-stack3-ENV): Set.
6321         ($(objpfx)tst-stack3-mem): New.
6322         * tst-stack3.c: New test.
6323
6324 2003-12-10  David Mosberger  <davidm@hpl.hp.com>
6325
6326         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c (_init_EPILOG_BEGINS):
6327         Add unwind directives.  Drop unused .regstk directive.
6328         (_fini_EPILOG_BEGINS): Add unwind directives.
6329
6330 2003-12-11  Ulrich Drepper  <drepper@redhat.com>
6331
6332         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
6333         Assume parameter is a pointer.
6334         (lll_futex_wake): Likewise.
6335         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_futex_wait):
6336         Likewise.
6337         (lll_futex_wake): Likewise.
6338         Reported by Boris Hu.
6339         * sysdeps/unix/sysv/linux/unregister-atfork.c
6340         (__unregister_atfork): Pass pointer to refcntr to lll_futex_wait.
6341
6342         * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Simplify a bit.
6343
6344 2003-12-10  Ulrich Drepper  <drepper@redhat.com>
6345
6346         * sysdeps/pthread/bits/libc-lock.h (__rtld_lock_initialize): Define.
6347         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Call
6348         __rtld_lock_initialize for ld.so lock.
6349         Patch in part by Adam Li <adam.li@intel.com>.
6350
6351 2003-12-02  David Mosberger  <davidm@hpl.hp.com>
6352
6353         * Makefile (link-libc-static): Remove -lgcc_eh---it's already mentioned
6354         in $(gnulib).  Also, remove stale comment.
6355
6356 2003-11-12  David Mosberger  <davidm@hpl.hp.com>
6357
6358         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Take
6359         advantage of new syscall stub and optimize accordingly.
6360
6361         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__NR_futex): Rename
6362         from SYS_futex, to match expectations of
6363         sysdep.h:DO_INLINE_SYSCALL.
6364         (lll_futex_clobbers): Remove.
6365         (lll_futex_timed_wait): Rewrite in terms of DO_INLINE_SYSCALL.
6366         (lll_futex_wake): Likewise.
6367         (lll_futex_requeue): Likewise.
6368         (__lll_mutex_trylock): Rewrite to a macro, so we can include this
6369         file before DO_INLINE_SYSCALL is defined (proposed by Jakub
6370         Jelinek).
6371         (__lll_mutex_lock): Likewise.
6372         (__lll_mutex_cond_lock): Likewise.
6373         (__lll_mutex_timed_lock): Likewise.
6374         (__lll_mutex_unlock): Likewise.
6375         (__lll_mutex_unlock_force): Likewise.
6376
6377         * sysdeps/ia64/tls.h: Move declaration of __thread_self up so it
6378         comes before the include of <sysdep.h>.
6379         (THREAD_SELF_SYSINFO): New macro.
6380         (THREAD_SYSINFO): Likewise.
6381         (INIT_SYSINFO): New macro.
6382         (TLS_INIT_TP): Call INIT_SYSINFO.
6383
6384         * sysdeps/ia64/tcb-offsets.sym: Add SYSINFO_OFFSET.
6385
6386         * sysdeps/pthread/createthread.c (create_thread): Use
6387         THREAD_SELF_SYSINFO and THREAD_SYSINFO instead of open code.
6388         * allocatestack.c (allocate_stack): Use THREAD_SYSINFO and
6389         THREAD_SELF_SYSINFO instead of open code.
6390         * sysdeps/i386/tls.h (THREAD_SELF_SYSINFO): New macro.
6391         (THREAD_SYSINFO): Likewise.
6392
6393         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: New file.
6394
6395         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Work around gas problem.
6396
6397 2003-12-06  Ulrich Drepper  <drepper@redhat.com>
6398
6399         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Use .init_array
6400         instead of .init.  Patch by David Mosberger.
6401
6402 2003-11-30  Thorsten Kukuk  <kukuk@suse.de>
6403
6404         * sysdeps/pthread/configure.in: Remove broken declaration in C
6405         cleanup handling check.
6406
6407 2003-11-30  Andreas Jaeger  <aj@suse.de>
6408
6409         * Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time).
6410         * sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s):
6411         Likewise.
6412
6413 2003-11-27  Jakub Jelinek  <jakub@redhat.com>
6414
6415         * sysdeps/unix/sysv/linux/internaltypes.h (ATTR_FLAG_OLDATTR): Define.
6416         * pthread_attr_destroy.c: Include shlib-compat.h.
6417         (__pthread_attr_destroy): Return immediately if ATTR_FLAG_OLDATTR
6418         is set in iattr->flags.
6419         * pthread_attr_init.c (__pthread_attr_init_2_0): Set ATTR_FLAG_OLDATTR.
6420
6421 2003-11-21  Jakub Jelinek  <jakub@redhat.com>
6422
6423         * Makefile (distribute): Add tst-cleanup4aux.c.
6424
6425         * tst-cond12.c (prepare): Add prototype.  Move after test-skeleton.c
6426         include.
6427
6428 2003-11-21  Ulrich Drepper  <drepper@redhat.com>
6429
6430         * tst-cond12.c (do_test): If USE_COND_SIGNAL is defined, use
6431         pthread_cond_signal.
6432
6433         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Don't
6434         store mutex address if the current value is ~0l.
6435         * sysdeps/pthread/pthread_cond_timedwait.c
6436         (__pthread_cond_timedwait): Likewise.
6437         * sysdeps/pthread/pthread_cond_broadcast.c
6438         (__pthread_cond_broadcast): Don't use requeue for pshared
6439         condvars.
6440
6441         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
6442         (__pthread_cond_wait): Don't store mutex address if the current
6443         value is ~0l.
6444         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
6445         (__pthread_cond_timedwait): Likewise.
6446         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
6447         (__pthread_cond_broadcast): Don't use requeue for pshared
6448         condvars.
6449
6450         * pthread_cond_init.c (__pthread_cond_init): Initialize __mutex
6451         element with ~0l for pshared condvars, with NULL otherwise.
6452
6453         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
6454         (__pthread_cond_wait): Don't store mutex address if the current
6455         value is ~0l.
6456         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
6457         (__pthread_cond_timedwait): Likewise.
6458         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
6459         (__pthread_cond_broadcast): Don't use requeue for pshared
6460         condvars.
6461
6462         * Makefile: Add rules to build and run tst-cond12 and tst-cond13.
6463         * tst-cond12.c: New file.
6464         * tst-cond13.c: New file.
6465
6466 2003-11-17  Ulrich Drepper  <drepper@redhat.com>
6467
6468         * sysdeps/pthread/configure.in: Make missing forced unwind support
6469         fatal.
6470
6471 2003-11-11  Ulrich Drepper  <drepper@redhat.com>
6472
6473         * pthreadP.h: Don't declare __pthread_unwind as weak inside libpthread.
6474
6475 2003-11-06  Ulrich Drepper  <drepper@redhat.com>
6476
6477         * Makefile: Add magic to clean up correctly.
6478
6479 2003-11-05  Jakub Jelinek  <jakub@redhat.com>
6480
6481         * unwind.c (FRAME_LEFT): Define.
6482         (unwind_stop): Handle old style cleanups here.
6483         (__pthread_unwind): Handle old style cleanups only if
6484         !HAVE_FORCED_UNWIND.
6485         * Makefile (tests): Add tst-cleanup4 and tst-cleanupx4.
6486         (CFLAGS-tst-cleanupx4.c): Add -fexceptions.
6487         ($(objpfx)tst-cleanup4): Depend on $(objpfx)tst-cleanup4aux.o.
6488         ($(objpfx)tst-cleanupx4): Likewise.
6489         * tst-cleanup4.c: New test.
6490         * tst-cleanup4aux.c: New.
6491         * tst-cleanupx4.c: New test.
6492
6493 2003-11-04  Ulrich Drepper  <drepper@redhat.com>
6494
6495         * sysdeps/pthread/bits/stdio-lock.h: Use lll_*lock instead of
6496         lll_mutex_*lock macros to skip atomic operations on some archs.
6497
6498 2003-11-03  Ulrich Drepper  <drepper@redhat.com>
6499
6500         * sysdeps/pthread/tst-timer.c (main): Initialize
6501         sigev2.sigev_value as well.
6502
6503 2003-10-15  Roland McGrath  <roland@redhat.com>
6504
6505         * sysdeps/pthread/configure.in: Barf if visibility attribute support
6506         is missing.
6507         * sysdeps/pthread/configure: Regenerated.
6508
6509 2003-10-09  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
6510
6511         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Completely revamp the
6512         locking macros.  No distinction between normal and mutex locking
6513         anymore.
6514         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Rewrite mutex locking.
6515         Merge bits from lowlevelmutex.S we still need.
6516         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Remove.
6517         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Likewise.
6518         * sysdeps/unix/sysv/linux/sh/not-cancel.h: New file.
6519         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Adjust for
6520         new mutex implementation.
6521         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Likewise.
6522         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise.
6523         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
6524         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
6525         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
6526         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
6527         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
6528         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
6529         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
6530         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (PSEUDO): Also defined
6531         symbol for entry point to avoid cancellation.
6532
6533 2003-10-07  Jakub Jelinek  <jakub@redhat.com>
6534
6535         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Backout 2003-10-02
6536         changes.
6537         (SAVE_OLDTYPE_0): Fix a typo.
6538
6539 2003-10-03  Ulrich Drepper  <drepper@redhat.com>
6540
6541         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once):
6542         Check __sigsetjmp return value.  Reported by Daniel Jacobowitz.
6543
6544 2003-10-02  Ulrich Drepper  <drepper@redhat.com>
6545
6546         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (DOCARGS_1): Use
6547         correct offset.
6548
6549 2003-10-02  Jakub Jelinek  <jakub@redhat.com>
6550
6551         * Makefile (tests): Add tst-cancel19.
6552         * tst-cancel19.c: New test.
6553
6554 2003-10-02  Ulrich Drepper  <drepper@redhat.com>
6555
6556         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Fix saving and
6557         restoring of the old cancellation type.
6558
6559 2003-09-30  Jakub Jelinek  <jakub@redhat.com>
6560
6561         * sysdeps/pthread/malloc-machine.h: Remove misleading comment.
6562
6563 2003-09-27  Wolfram Gloger  <wg@malloc.de>
6564
6565         * sysdeps/pthread/malloc-machine.h: New file
6566
6567 2003-09-24  Roland McGrath  <roland@redhat.com>
6568
6569         * allocatestack.c (__make_stacks_executable): Don't ignore return
6570         value from _dl_make_stack_executable.
6571
6572 2003-09-24  Ulrich Drepper  <drepper@redhat.com>
6573
6574         * allocatestack.c (__make_stacks_executable): Also change
6575         permission of the currently unused stacks.
6576
6577         * allocatestack.c (change_stack_perm): Split out from
6578         __make_stacks_executable.
6579         (allocate_stack): If the required permission changed between the time
6580         we started preparing the stack and queueing it, change the permission.
6581         (__make_stacks_executable): Call change_stack_perm.
6582
6583         * Makefile: Build tst-execstack-mod locally.
6584         * tst-execstack-mod.c: New file.
6585
6586 2003-09-23  Jakub Jelinek  <jakub@redhat.com>
6587
6588         * Makefile (tests): Only add tst-execstack if have-z-execstack is yes.
6589
6590 2003-09-23  Roland McGrath  <roland@redhat.com>
6591
6592         * tst-execstack.c: New file.
6593         * Makefile (tests): Add it.
6594         ($(objpfx)tst-execstack, $(objpfx)tst-execstack.out): New targets.
6595         (LDFLAGS-tst-execstack): New variable.
6596
6597         * allocatestack.c (allocate_stack): Use GL(dl_stack_flags) to decide
6598         whether to use PROT_EXEC for stack mmap.
6599         (__make_stacks_executable): New function.
6600         * pthreadP.h: Declare it.
6601         * init.c (__pthread_initialize_minimal_internal): Set
6602         GL(dl_make_stack_executable_hook) to that.
6603
6604 2003-09-22  Ulrich Drepper  <drepper@redhat.com>
6605
6606         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Adjust for latest
6607         recommendation from AMD re avoidance of lock prefix.
6608
6609 2003-09-22  Jakub Jelinek  <jakub@redhat.com>
6610
6611         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait): Use
6612         lll_futex_timed_wait instead of lll_futex_wait.
6613         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Removed.
6614         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: Removed.
6615         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: Removed.
6616         * sysdeps/unix/sysv/linux/s390/libc-lowlevelmutex.c: Removed.
6617         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Removed.
6618         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Removed.
6619         * sysdeps/unix/sysv/linux/s390/sem_post.c: Removed.
6620         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Removed.
6621         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Include atomic.h.
6622         Completely revamp the locking macros.  No distinction between
6623         normal and mutex locking anymore.
6624         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
6625         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_lock_wait,
6626         __lll_lock_timedwait): Fix prototypes.
6627         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_lock_wait,
6628         __lll_lock_timedwait): Likewise.
6629         (lll_mutex_lock, lll_mutex_cond_lock): Use _val instead of _bool
6630         macros, add __builtin_expect.
6631         (lll_mutex_timedlock): Likewise.  Fix return value.
6632         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Removed.
6633         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevelmutex.S: Removed.
6634         * sysdeps/unix/sysv/linux/i386/i586/lowlevelmutex.S: Removed.
6635         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevelmutex.S: Removed.
6636         * sysdeps/unix/sysv/linux/i386/i686/lowlevelmutex.S: Removed.
6637         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevelmutex.S: Removed.
6638         * sysdeps/unix/sysv/linux/lowlevelmutex.c: Removed.
6639         * sysdeps/unix/sysv/linux/libc-lowlevelmutex.c: Removed.
6640
6641 2003-09-22  Ulrich Drepper  <drepper@redhat.com>
6642
6643         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
6644         (__lll_mutex_lock_wait): Minor optimization to avoid one atomic
6645         operation if possible.
6646
6647         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Don't play tricks
6648         like jumping over the lock prefix.
6649
6650 2003-09-21  Ulrich Drepper  <drepper@redhat.com>
6651
6652         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Completely revamp the
6653         locking macros.  No distinction between normal and mutex locking
6654         anymore.
6655         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
6656         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
6657         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
6658         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Rewrite mutex
6659         locking.  Merge bits from lowlevelmutex.S we still need.
6660         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
6661         * sysdeps/unix/sysv/linux/lowlevellock.c: Likewise.
6662         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Removed.
6663         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Removed.
6664         * Makefile (routines): Remove libc-lowlevelmutex.
6665         (libpthread-rountines): Remove lowlevelmutex.
6666         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Adjust
6667         for new mutex implementation.
6668         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
6669         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
6670         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
6671         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
6672         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
6673         Likewise.
6674         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
6675         Likewise.
6676         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
6677         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
6678         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Likewise
6679         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
6680         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
6681         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
6682         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
6683         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
6684         Likewise.
6685         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
6686         Likewise.
6687         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Likewise.
6688         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
6689         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
6690         Don't use requeue.
6691         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
6692         * sysdeps/pthread/pthread_cond_signal.c: Don't use requeue.
6693
6694 2003-09-20  Ulrich Drepper  <drepper@redhat.com>
6695
6696         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Don't match memory
6697         in parameters of asm with output parameters.
6698
6699         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Change
6700         type of DECR parameter to int.
6701         * pthreadP.h: Adjust prototype of __pthread_mutex_unlock_usercnt.
6702
6703 2003-09-18  Jakub Jelinek  <jakub@redhat.com>
6704
6705         * tst-attr3.c (tf, do_test): Print stack start/end/size and
6706         guardsize for each thread.
6707
6708 2003-09-17  Jakub Jelinek  <jakub@redhat.com>
6709
6710         * sysdeps/pthread/pthread.h (pthread_getattr_np): Clarify usage.
6711         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
6712         (pthread_attr_setaffinity_np): Handle cpuset == NULL.
6713
6714         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
6715         (pthread_attr_getaffinity_np): Don't segfault if iattr->cpuset is
6716         NULL.
6717         * pthread_getattr_np.c: Set cpuset using pthread_getaffinity_np.
6718         * pthreadP.h (pthread_getaffinity_np): Add hidden_proto.
6719         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
6720         (pthread_getaffinity_np): Add hidden_def.
6721
6722         * Makefile (tests): Add tst-attr3.
6723         * tst-attr3.c: New test.
6724
6725         * sysdeps/i386/Makefile (CFLAGS-tst-align.c): Remove.
6726
6727 2003-09-15  Jakub Jelinek  <jakub@redhat.com>
6728
6729         * sysdeps/i386/Makefile (CFLAGS-pthread_create.c,
6730         CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
6731
6732 2003-09-17  Jakub Jelinek  <jakub@redhat.com>
6733
6734         * Makefile (CFLAGS-tst-align.c): Add $(stack-align-test-flags).
6735         * tst-align.c: Include tst-stack-align.h.
6736         (tf, do_test): Use TEST_STACK_ALIGN macro.
6737
6738 2003-09-17  Ulrich Drepper  <drepper@redhat.com>
6739
6740         * pthread_attr_init.c (__pthread_attr_init_2_0): Remove unused
6741         variable.
6742
6743 2003-09-16  Ulrich Drepper  <drepper@redhat.com>
6744
6745         * pthread_getattr_np.c (pthread_getattr_np): Correctly fill in the
6746         stack-related values for the initial thread.
6747
6748 2003-09-15  Jakub Jelinek  <jakub@redhat.com>
6749
6750         * Makefile (CFLAGS-pthread_once.c): Add $(uses-callbacks).
6751
6752 2003-09-11  Ulrich Drepper  <drepper@redhat.com>
6753
6754         * pthread_mutex_lock.c: Minor code rearrangements.
6755
6756 2003-09-05  Roland McGrath  <roland@redhat.com>
6757
6758         * pthread_create.c (__pthread_pthread_sizeof_descr): Removed.
6759         Instead, include ../nptl_db/db_info.c to do its magic.
6760         * pthread_key_create.c (__pthread_pthread_keys_max): Removed.
6761         (__pthread_pthread_key_2ndlevel_size): Likewise.
6762         * sysdeps/alpha/tls.h (DB_THREAD_SELF): New macro.
6763         * sysdeps/i386/tls.h (DB_THREAD_SELF): New macro.
6764         * sysdeps/ia64/tls.h (DB_THREAD_SELF): New macro.
6765         * sysdeps/powerpc/tls.h (DB_THREAD_SELF): New macro.
6766         * sysdeps/s390/tls.h (DB_THREAD_SELF): New macro.
6767         * sysdeps/sh/tls.h (DB_THREAD_SELF): New macro.
6768         * sysdeps/sparc/tls.h (DB_THREAD_SELF): New macro.
6769         * sysdeps/x86_64/tls.h (DB_THREAD_SELF): New macro.
6770         * sysdeps/alpha/td_ta_map_lwp2thr.c: File removed.
6771         * sysdeps/generic/td_ta_map_lwp2thr.c: File removed.
6772         * sysdeps/i386/td_ta_map_lwp2thr.c: File removed.
6773         * sysdeps/ia64/td_ta_map_lwp2thr.c: File removed.
6774         * sysdeps/powerpc/td_ta_map_lwp2thr.c: File removed.
6775         * sysdeps/s390/td_ta_map_lwp2thr.c: File removed.
6776         * sysdeps/sh/td_ta_map_lwp2thr.c: File removed.
6777         * sysdeps/sparc/td_ta_map_lwp2thr.c: File removed.
6778         * sysdeps/x86_64/td_ta_map_lwp2thr.c: File removed.
6779
6780 2003-09-08  Ulrich Drepper  <drepper@redhat.com>
6781
6782         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Change type
6783         of pthread_t to be compatible with LT.
6784         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
6785         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
6786         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
6787         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
6788         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Likewise.
6789         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
6790         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
6791
6792 2003-09-04  Ulrich Drepper  <drepper@redhat.com>
6793
6794         * sysdeps/unix/sysv/linux/i386/not-cancel.h (fcntl_not_cancel): Define.
6795
6796 2003-09-04  Jakub Jelinek  <jakub@redhat.com>
6797
6798         * unwind-forcedunwind.c: Move to...
6799         * sysdeps/pthread/unwind-forcedunwind.c: ...here.
6800         (pthread_cancel_init): Use ARCH_CANCEL_INIT if defined.
6801         * sysdeps/pthread/jmpbuf-unwind.h: New file.
6802         * sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c: New file.
6803         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: New file.
6804         * unwind.c: Include jmpbuf-unwind.h.
6805         (unwind_stop): Use _JMPBUF_CFA_UNWINDS macro.
6806
6807 2003-09-02  Jakub Jelinek  <jakub@redhat.com>
6808
6809         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: New file.
6810         * sysdeps/unix/sysv/linux/ia64/Versions (libpthread): Export
6811         pthread_attr_setstack and pthread_attr_setstacksize @@GLIBC_2.3.3.
6812         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: New file.
6813         * sysdeps/unix/sysv/linux/alpha/Versions: New file.
6814         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: New file.
6815         * sysdeps/unix/sysv/linux/sparc/Versions: New file.
6816         * pthread_attr_setstack.c (__old_pthread_attr_setstack): New function.
6817         (pthread_attr_setstack): If PTHREAD_STACK_MIN != 16384, export
6818         as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.2.
6819         * pthread_attr_setstacksize.c (__old_pthread_attr_setstacksize): New
6820         function.
6821         (pthread_attr_setstacksize): If PTHREAD_STACK_MIN != 16384, export
6822         as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.1.
6823         * Makefile (tests): Add tst-stack2.
6824         * tst-stack2.c: New test.
6825         * tst-stack1.c: Include limits.h and sys/param.h.
6826         (do_test): Set size to MAX (4 * getpagesize (), PTHREAD_STACK_MIN).
6827
6828         * pthread_condattr_setpshared.c: Include errno.h.
6829         (pthread_condattr_setpshared): Return EINVAL if pshared
6830         is neither PTHREAD_PROCESS_PRIVATE nor PTHREAD_PROCESS_SHARED.
6831
6832         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO): Also
6833         defined symbol for entry point to avoid cancellation.
6834         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO):
6835         Likewise.
6836         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
6837         Likewise.
6838         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (PSEUDO):
6839         Likewise.
6840         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h (PSEUDO):
6841         Likewise.
6842         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h (PSEUDO):
6843         Likewise.
6844         * sysdeps/unix/sysv/linux/i386/not-cancel.h (__open_nocancel,
6845         __close_nocancel, __read_nocancel, __write_nocancel,
6846         __waitpid_nocancel): Add attribute_hidden.  If not in libc.so,
6847         libpthread.so or librt.so, define to corresponding function
6848         without _nocancel suffix.
6849         * sysdeps/unix/sysv/linux/s390/not-cancel.h: New file.
6850         * sysdeps/unix/sysv/linux/powerpc/not-cancel.h: New file.
6851         * sysdeps/unix/sysv/linux/sparc/not-cancel.h: New file.
6852
6853         * sysdeps/unix/sysv/linux/x86_64/not-cancel.h: Fix a typo.
6854
6855 2003-09-02  Ulrich Drepper  <drepper@redhat.com>
6856
6857         * sysdeps/unix/sysv/linux/i386/not-cancel.h: New file.
6858         * sysdeps/unix/sysv/linux/x86_64/not-cancel.h: New file.
6859
6860         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Make sure the code
6861         in subsections has a symbol associated with it.
6862
6863         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (PSEUDO): Also
6864         defined symbol for entry point to avoid cancellation.
6865         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (PSEUDO): Likewise.
6866
6867 2003-09-01  Jakub Jelinek  <jakub@redhat.com>
6868
6869         * Makefile (tests): Add tst-tls5.
6870         (module-names): Add tst-tls5mod{,a,b,c,d,e,f}.
6871         ($(objpfx)tst-tls5mod{,a,b,c,d,e,f}.so-no-z-defs): Set to yes.
6872         ($(objpfx)tst-tls5): New.
6873         ($(objpfx)tst-tls6.out): Likewise.
6874         (tests): Depend on $(objpfx)tst-tls6.out.
6875         * tst-tls3.c: Include stdint.h and pthreaddef.h.
6876         (do_test): Check pthread_self () return value alignment.
6877         * tst-tls3mod.c: Include stdint.h and pthreaddef.h.
6878         (tf): Check pthread_self () return value alignment.
6879         * tst-tls5.c: New test.
6880         * tst-tls5.h: New.
6881         * tst-tls5mod.c: New.
6882         * tst-tls5moda.c: New.
6883         * tst-tls5modb.c: New.
6884         * tst-tls5modc.c: New.
6885         * tst-tls5modd.c: New.
6886         * tst-tls5mode.c: New.
6887         * tst-tls5modf.c: New.
6888         * tst-tls6.sh: New test.
6889
6890         * sysdeps/pthread/pthread-functions.h (struct pthread_functions): Add
6891         ptr___pthread_cond_timedwait and ptr___pthread_cond_timedwait_2_0.
6892         * init.c (pthread_functions): Initialize them.
6893         * forward.c (pthread_cond_timedwait@GLIBC_2.0,
6894         pthread_cond_timedwait@@GLIBC_2.3.2): New forwards.
6895         * Versions (libc): Export pthread_cond_timedwait@GLIBC_2.0,
6896         pthread_cond_timedwait@@GLIBC_2.3.2.
6897
6898 2003-09-01  Jakub Jelinek  <jakub@redhat.com>
6899
6900         * sysdeps/unix/sysv/linux/alpha/timer_create.c: New file.
6901         * sysdeps/unix/sysv/linux/alpha/timer_delete.c: New file.
6902         * sysdeps/unix/sysv/linux/alpha/timer_getoverr.c: New file.
6903         * sysdeps/unix/sysv/linux/alpha/timer_gettime.c: New file.
6904         * sysdeps/unix/sysv/linux/alpha/timer_settime.c: New file.
6905         * sysdeps/unix/sysv/linux/alpha/Versions: New file.
6906
6907         * sysdeps/unix/sysv/linux/alpha/aio_cancel.c: New file.
6908
6909         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Define
6910         _POSIX_THREAD_PRIORITY_SCHEDULING.
6911         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
6912
6913 2003-08-31  Ulrich Drepper  <drepper@redhat.com>
6914
6915         * sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock): Avoid
6916         nested function, use static inline function from libio.h.
6917         Code by Richard Henderson.
6918
6919         * sysdeps/pthread/bits/libc-lock.h: Mark pthread_setcancelstate as
6920         weak.
6921
6922 2003-08-30  Jakub Jelinek  <jakub@redhat.com>
6923
6924         * sysdeps/unix/sysv/linux/sparc/sparc64/Versions: New file.
6925         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c: New file.
6926         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c: New file.
6927         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c: New file.
6928         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c: New file.
6929         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c: New file.
6930         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: New file.
6931         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: New file.
6932         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: New file.
6933         * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: New file.
6934         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: New file.
6935         * sysdeps/unix/sysv/linux/sparc/pthread_once.c: New file.
6936         * sysdeps/unix/sysv/linux/sparc/pt-vfork.S: New file.
6937         * sysdeps/unix/sysv/linux/sparc/fork.c: New file.
6938         * sysdeps/unix/sysv/linux/sparc/aio_cancel.c: New file.
6939         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c: New file.
6940         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_trylock.c: New file.
6941         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_unlock.c: New file.
6942         * sysdeps/sparc/sparc32/pthread_spin_lock.c: New file.
6943         * sysdeps/sparc/sparc32/pthread_spin_trylock.c: New file.
6944         * sysdeps/sparc/sparc32/pthreaddef.h: New file.
6945         * sysdeps/sparc/sparc64/pthread_spin_lock.c: New file.
6946         * sysdeps/sparc/sparc64/pthread_spin_trylock.c: New file.
6947         * sysdeps/sparc/sparc64/pthread_spin_unlock.c: New file.
6948         * sysdeps/sparc/sparc64/pthreaddef.h: New file.
6949         * sysdeps/sparc/tls.h: New file.
6950         * sysdeps/sparc/tcb-offsets.sym: New file.
6951         * sysdeps/sparc/Makefile: New file.
6952         * sysdeps/sparc/td_ta_map_lwp2thr.c: New file.
6953         * init.c [__sparc__] (__NR_set_tid_address): Define.
6954
6955 2003-08-29  Jakub Jelinek  <jakub@redhat.com>
6956
6957         * sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock,
6958         _IO_release_lock): Define.
6959
6960 2003-08-29  Jakub Jelinek  <jakuB@redhat.com>
6961
6962         * tst-cancel4.c (tf_sigwait, tf_sigwaitinfo, tf_sigtimedwait): Add
6963         sigemptyset before sigaddset.  Reported by jreiser@BitWagon.com.
6964
6965 2003-08-27  Ulrich Drepper  <drepper@redhat.com>
6966
6967         * sysdeps/pthread/pthread.h (pthread_exit): Remove __THROW.
6968         (__pthread_cleanup_class): Add missing return types of member
6969         functions.
6970
6971 2003-08-26  Steven Munroe <sjmunroe@us.ibm.com>
6972
6973         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
6974         (lll_mutex_unlock_force): Add memory barrier between store and futex
6975         syscall.
6976
6977 2003-08-25  Ulrich Drepper  <drepper@redhat.com>
6978
6979         * tst-cancel4.c (do_test): Also unlink tempfname and remove
6980         tempmsg in first loop.
6981
6982 2003-08-18  Ulrich Drepper  <drepper@redhat.com>
6983
6984         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
6985         _POSIX_THREAD_PRIORITY_SCHEDULING.
6986         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
6987
6988 2003-08-07  Jakub Jelinek  <jakub@redhat.com>
6989
6990         * sysdeps/pthread/bits/libc-lock.h [_LIBC && SHARED]
6991         (__rtld_lock_default_lock_recursive,
6992         __rtld_lock_default_unlock_recursive): Define.
6993         [_LIBC && SHARED] (__rtld_lock_lock_recursive,
6994         __rtld_lock_unlock_recursive): Define using
6995         GL(_dl_rtld_*lock_recursive).
6996         * init.c (__pthread_initialize_minimal_internal): Initialize
6997         _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive.
6998         Lock GL(_dl_load_lock) the same number of times as
6999         GL(_dl_load_lock) using non-mt implementation was nested.
7000
7001         * pthreadP.h (__pthread_cleanup_upto): Add hidden_proto.
7002         * pt-longjmp.c (__pthread_cleanup_upto): Add hidden_def.
7003
7004 2003-08-06  Jakub Jelinek  <jakub@redhat.com>
7005
7006         * tst-cancel17.c (do_test): Make len2 maximum of page size and
7007         PIPE_BUF.
7008
7009 2003-08-07  Jakub Jelinek  <jakub@redhat.com>
7010
7011         * pthread_create.c (__pthread_create_2_0): Clear new_attr.cpuset.
7012
7013 2003-08-03  Jakub Jelinek  <jakub@redhat.com>
7014
7015         * sysdeps/pthread/createthread.c (do_clone): Move error handling
7016         to first syscall error check.  Move syscall error check for tkill
7017         into __ASSUME_CLONE_STOPPED #ifdef.
7018
7019 2003-08-02  Ulrich Drepper  <drepper@redhat.com>
7020
7021         * sysdeps/pthread/createthread.c (do_clone): If __ASSUME_CLONE_STOPPED
7022         is not defined, do explicit synchronization.
7023         (create_thread): Do not lock pd->lock here.  If __ASSUME_CLONE_STOPPED
7024         is not defined also unlock pd->lock for non-debugging case in case
7025         it is necessary.
7026         * pthread_create.c (start_thread): Always get and release pd->lock
7027         if __ASSUME_CLONE_STOPPED is not defined.
7028         (start_thread_debug): Removed.  Adjust users.
7029         * allocatestack.c (allocate_stack): Always initialize lock if
7030         __ASSUME_CLONE_STOPPED is not defined.
7031         * Makefile (tests): Add tst-sched1.
7032         * tst-sched1.c: New file.
7033
7034         * sysdeps/pthread/createthread.c (do_clone): Only use
7035         sched_setschduler and pass correct parameters.
7036
7037 2003-07-31  Jakub Jelinek  <jakub@redhat.com>
7038
7039         * sysdeps/pthread/pthread.h (pthread_attr_setstackaddr,
7040         pthread_attr_setstacksize): Change PTHREAD_STACK_SIZE to
7041         PTHREAD_STACK_MIN in comments.
7042
7043 2003-07-31  Jakub Jelinek  <jakub@redhat.com>
7044
7045         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
7046         Shut up warnings if INTERNAL_SYSCALL_ERROR_P does not use its first
7047         argument.
7048         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Likewise.
7049         * pthread_condattr_setclock.c (pthread_condattr_setclock): Likewise.
7050         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Include pthreaddef.h.
7051         (__pthread_cleanup_upto): Fix prototype.
7052         (_longjmp_unwind): Adjust caller.
7053         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_mutex_timedlock):
7054         Change second argument to const struct pointer.
7055         * tst-sem8.c (main): Remove unused s2 and s3 variables.
7056         * tst-sem9.c (main): Likewise.
7057         * unwind.c: Include string.h for strlen prototype.
7058
7059 2003-07-31  Ulrich Drepper  <drepper@redhat.com>
7060
7061         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
7062         (__pthread_cond_timedwait): Don't use cmov unless HAVE_CMOV is defined.
7063         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S:
7064         Define HAVE_CMOV.
7065         Patch by Nicholas Miell <nmiell@attbi.com>.
7066
7067 2003-07-30  Jakub Jelinek  <jakub@redhat.com>
7068
7069         * init.c (__pthread_initialize_minimal_internal): Initialize
7070         GL(dl_init_static_tls).
7071         * pthreadP.h (__pthread_init_static_tls): New prototype.
7072         * allocatestack.c (init_one_static_tls, __pthread_init_static_tls):
7073         New functions.
7074         * Makefile (tests): Add tst-tls4.
7075         (modules-names): Add tst-tls4moda and tst-tls4modb.
7076         ($(objpfx)tst-tls4): Link against libdl and libpthread.
7077         ($(objpfx)tst-tls4.out): Depend on tst-tls4moda.so and
7078         tst-tls4modb.so.
7079         * tst-tls4.c: New file.
7080         * tst-tls4moda.c: New file.
7081         * tst-tls4modb.c: New file.
7082
7083 2003-06-19  Daniel Jacobowitz  <drow@mvista.com>
7084
7085         * sysdeps/pthread/timer_create.c (timer_create): Call timer_delref
7086         before __timer_dealloc.
7087         * sysdeps/pthread/timer_routines.c (__timer_thread_find_matching):
7088         Don't call list_unlink.
7089
7090 2003-07-29  Roland McGrath  <roland@redhat.com>
7091
7092         * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules).
7093
7094 2003-07-25  Jakub Jelinek  <jakub@redhat.com>
7095
7096         * tst-cancel17.c (do_test): Check if aio_cancel failed.
7097         Don't reuse struct aiocb A if it failed.
7098         Write fpathconf (fds[1], _PC_PIPE_BUF) + 2 bytes using aio_write,
7099         not just one byte, as that does not block.
7100
7101 2003-07-22  Jakub Jelinek  <jakub@redhat.com>
7102
7103         * sysdeps/pthread/unwind-resume.c: New file.
7104         * sysdeps/pthread/Makefile (routines, shared-only-routines): Add
7105         unwind-resume in csu subdir.
7106         (CFLAGS-unwind-resume.c, CFLAGS-rt-unwind-resume.c): Compile with
7107         exceptions.
7108         (librt-sysdep_routines, librt-shared-only-routines): Add
7109         rt-unwind-resume.
7110         * sysdeps/pthread/rt-unwind-resume.c: New file.
7111         * unwind-forcedunwind.c: New file.
7112         * Makefile (libpthread-routines): Add unwind-forcedunwind.
7113         (libpthread-shared-only-routines): Likewise.
7114         (CFLAGS-unwind-forcedunwind.c): Compile with exceptions.
7115         * pthreadP.h (pthread_cancel_init): New prototype.
7116         * pthread_cancel.c (pthread_cancel): Call pthread_cancel_init.
7117
7118         * sysdeps/pthread/createthread.c (do_thread, create_thread): Make
7119         attr argument const struct pthread_attr *.
7120
7121         * res.c (__res_state): Return __resp.
7122         * descr.h: Include resolv.h.
7123         (struct pthread): Add res field.
7124         * pthread_create.c: Include resolv.h.
7125         (start_thread): Initialize __resp.
7126         * Makefile (tests): Add tst-_res1.
7127         (module-names): Add tst-_res1mod1, tst-_res1mod2.
7128         ($(objpfx)tst-_res1mod2.so): Depend on $(objpfx)tst-_res1mod1.so.
7129         ($(objpfx)tst-_res1): Depend on $(objpfx)tst-_res1mod2.so and
7130         libpthread.
7131         * tst-_res1.c: New file.
7132         * tst-_res1mod1.c: New file.
7133         * tst-_res1mod2.c: New file.
7134
7135 2003-07-21  Ulrich Drepper  <drepper@redhat.com>
7136
7137         * sysdeps/pthread/createthread.c: Don't define CLONE_STOPPED.
7138
7139         * Makefile: Define various *-no-z-defs variables for test DSOs
7140         which has undefined symbols.
7141
7142 2003-07-21  Steven Munroe  <sjmunroe@us.ibm.com>
7143
7144         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
7145         Retry if the stwcx fails to store once_control.
7146
7147 2003-07-20  Ulrich Drepper  <drepper@redhat.com>
7148
7149         * Makefile (libpthread-routines): Add pthread_attr_getaffinity and
7150         pthread_attr_setaffinity.
7151         * Versions [libpthread] (GLIBC_2.3.3): Likewise.
7152         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c: New file.
7153         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c: New file.
7154         * pthread_attr_destroy.c: Free cpuset element if allocated.
7155         * pthread_create.c: Pass iattr as additional parameter to
7156         create_thread.
7157         * sysdeps/pthread/createthread.c: If attribute is provided and
7158         a new thread is created with affinity set or scheduling parameters,
7159         start thread with CLONE_STOPPED.
7160         * sysdeps/pthread/pthread.h: Declare pthread_attr_getaffinity and
7161         pthread_attr_setaffinity.
7162         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_attr): Add
7163         cpuset element.
7164
7165 2003-07-15  Ulrich Drepper  <drepper@redhat.com>
7166
7167         * tst-tcancel-wrappers.sh: lseek and llseek are not cancelation points.
7168
7169 2003-07-14  Ulrich Drepper  <drepper@redhat.com>
7170
7171         * sysdeps/pthread/configure.in: Require CFI directives also for
7172         ppc and s390.
7173
7174 2003-07-15  Jakub Jelinek  <jakub@redhat.com>
7175
7176         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (PSEUDO):
7177         Add cfi directives.
7178
7179 2003-07-12  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
7180
7181         * sysdeps/sh/tcb-offsets.sym: Add RESULT, TID, CANCELHANDLING and
7182         CLEANUP_JMP_BUF.
7183         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Use more
7184         registers as variables.  Call __pthread_mutex_unlock_usercnt.
7185         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
7186         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Store TID
7187         not self pointer in __writer.  Compare with TID to determine
7188         deadlocks.
7189         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
7190         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S:
7191         Likewise.
7192         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S:
7193         Likewise.
7194         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Add cancellation support.
7195         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
7196         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Define all the nice
7197         macros also when compiling librt.
7198
7199 2003-07-11  Jakub Jelinek  <jakub@redhat.com>
7200
7201         * Makefile (CFLAGS-pthread_once.c): Add -fexceptions
7202         -fasynchronous-unwind-tables.
7203         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
7204         (PSEUDO): Add cfi directives.
7205         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO):
7206         Likewise.
7207         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO):
7208         Likewise.
7209
7210 2003-07-08  Jakub Jelinek  <jakub@redhat.com>
7211
7212         * pthreadP.h (__pthread_unwind_next, __pthread_register_cancel,
7213         __pthread_unregister_cancel): Add prototypes and hidden_proto.
7214         * unwind.c (__pthread_unwind_next): Add hidden_def.
7215         * cleanup.c (__pthread_register_cancel, __pthread_unregister_cancel):
7216         Likewise.
7217         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
7218         Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
7219         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
7220         Likewise.
7221         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Likewise.
7222         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
7223         Likewise.
7224         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once): Use
7225         HIDDEN_JUMPTARGET to call __pthread_register_cancel,
7226         __pthread_unregister_cancel and __pthread_unwind_next.
7227
7228 2003-07-04  Jakub Jelinek  <jakub@redhat.com>
7229
7230         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Use
7231         different symbol for the cancellation syscall wrapper and
7232         non-cancellation syscall wrapper.
7233         (PSEUDO_END): Define.
7234
7235 2003-07-05  Richard Henderson  <rth@redhat.com>
7236
7237         * sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.
7238         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_futex_wait,
7239         lll_futex_timed_wait, lll_futex_wake, lll_futex_requeue): On success
7240         return actual return value from the syscall, not 0.
7241
7242 2003-07-07  Ulrich Drepper  <drepper@redhat.com>
7243
7244         * descr.h (struct pthread): Add pid field.
7245         * allocatestack.c (allocate_stack): Initialize pid field in descriptor.
7246         (__reclaim_stacks): Likewise.
7247         * init.c (sigcancel_handler): If __ASSUME_CORRECT_SI_PID is defined
7248         also check for PID of the signal source.
7249         (__pthread_initialize_minimal_internal): Also initialize pid field
7250         of initial thread's descriptor.
7251         * pthread_cancel.c: Use tgkill instead of tkill if possible.
7252         * sysdeps/unix/sysv/linux/fork.c: Likewise.
7253         * sysdeps/unix/sysv/linux/pt-raise.c: Likewise.
7254         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
7255         * sysdeps/unix/sysv/linux/raise.c: Likewise.
7256
7257 2003-07-05  Ulrich Drepper  <drepper@redhat.com>
7258
7259         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_push): Renamed.
7260         Fix use of parameter.
7261         (__libc_cleanup_pop): Likewise.
7262
7263 2003-07-04  Ulrich Drepper  <drepper@redhat.com>
7264
7265         * init.c (sigcancel_handler): Change parameters to match handler
7266         for SA_SIGACTION.  Check signal number and code to recognize
7267         invalid invocations.
7268
7269 2003-07-03  Roland McGrath  <roland@redhat.com>
7270
7271         * sysdeps/ia64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr):
7272         Apply sizeof (struct pthread) bias to r13 value.
7273
7274 2003-07-03  Ulrich Drepper  <drepper@redhat.com>
7275
7276         * sysdeps/pthread/configure.in: Require CFI directives.
7277
7278         * sysdeps/pthread/librt-cancellation.c (__pthread_unwind): Remove
7279         definition.
7280         * pthreadP.h (__pthread_unwind): Add hidden_proto if used in
7281         libpthread compilation.
7282         * unwind.c (__pthread_unwind): Add hidden_def.
7283         * Versions (libpthread) [GLIBC_PRIVATE]: Add __pthread_unwind.
7284
7285 2003-07-01  Ulrich Drepper  <drepper@redhat.com>
7286
7287         * libc-cancellation.c (__libc_cleanup_routine): Define.
7288         * sysdeps/pthread/bits/libc-lock.h (__pthread_cleanup_push): Define.
7289         (__pthread_cleanup_pop): Define.
7290
7291 2003-07-01  Richard Henderson  <rth@redhat.com>
7292
7293         * sysdeps/alpha/elf/pt-initfini.c: New file.
7294         * sysdeps/alpha/pthread_spin_lock.S: New file.
7295         * sysdeps/alpha/pthread_spin_trylock.S: New file.
7296         * sysdeps/alpha/pthreaddef.h: New file.
7297         * sysdeps/alpha/td_ta_map_lwp2thr.c: New file.
7298         * sysdeps/alpha/tls.h: New file.
7299         * sysdeps/unix/sysv/linux/alpha/Makefile: New file.
7300         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: New file.
7301         * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h: New file.
7302         * sysdeps/unix/sysv/linux/alpha/createthread.c: New file.
7303         * sysdeps/unix/sysv/linux/alpha/fork.c: New file.
7304         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: New file.
7305         * sysdeps/unix/sysv/linux/alpha/pt-vfork.S: New file.
7306         * sysdeps/unix/sysv/linux/alpha/pthread_once.c: New file.
7307         * sysdeps/unix/sysv/linux/alpha/sem_post.c: New file.
7308         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: New file.
7309
7310 2003-07-01  Ulrich Drepper  <drepper@redhat.com>
7311
7312         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Add correct
7313         cleanup support and unwind info.
7314
7315 2003-06-30  Ulrich Drepper  <drepper@redhat.com>
7316
7317         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once):
7318         Use correct cleanup handler registration.  Add unwind info.
7319         * sysdeps/unix/sysv/linux/unwindbuf.sym: New file.
7320         * sysdeps/unix/sysv/linux/Makefile: Add rule to build unwindbuf.h.
7321         * tst-once3.c: Add cleanup handler and check it is called.
7322         * tst-once4.c: Likewise.
7323         * tst-oncex3.c: New file.
7324         * tst-oncex4.c: New file.
7325         * Makefile: Add rules to build and run tst-oncex3 and tst-oncex4.
7326
7327 2003-06-29  Ulrich Drepper  <drepper@redhat.com>
7328
7329         * sysdeps/pthread/configure.in: Check for C cleanup handling in gcc.
7330
7331 2003-06-27  Ulrich Drepper  <drepper@redhat.com>
7332
7333         * tst-cancel4.c (tf_msgrcv): Use IPC_PRIVATE in msgget call.
7334         (tf_msgsnd): Likewise.
7335
7336         * tst-cancel4.c (tf_msgrcv): Strengthen test against valid
7337         premature returns a bit more.
7338
7339 2003-06-26  Ulrich Drepper  <drepper@redhat.com>
7340
7341         * sysdeps/pthread/librt-cancellation.c: Move __pthread_unwind
7342         definition to the front.
7343
7344         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Rename
7345         the cleanup functions to make the names unique.  Fix dwarf opcode
7346         un unwind table.
7347         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Rename cleanup
7348         functions to make the names unique.  Fix CFA offset for two blocks.
7349
7350 2003-06-25  Ulrich Drepper  <drepper@redhat.com>
7351
7352         * sysdeps/pthread/pthread.h (class __pthread_cleanup_class): Add
7353         missing closing braces.
7354         Patch by Christophe Saout <christophe@saout.de>.
7355
7356 2003-06-24  Roland McGrath  <roland@redhat.com>
7357
7358         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Typo fix.
7359
7360 2003-06-24  Ulrich Drepper  <drepper@redhat.com>
7361
7362         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: New file.
7363         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: New file.
7364
7365         * pthreadP.h: Declare __find_thread_by_id.
7366         * allocatestack.c [HP_TIMING_AVAIL]: Define __find_thread_by_id.
7367         * pthread_clock_gettime.c: Allow using other thread's clock.
7368         * pthread_clock_settime.c: Likewise.
7369         * sysdeps/pthread/pthread_getcpuclockid.c: Likewise.
7370         * Makefile: Add rules to build and run tst-clock2.
7371         * tst-clock2.c: New file.
7372
7373 2003-06-23  Ulrich Drepper  <drepper@redhat.com>
7374
7375         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Rewrite
7376         to use exception-based cleanup handler.
7377         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
7378
7379         * tst-cond8.c (ch): Announce that we are done.
7380
7381         * pthreadP.h (__pthread_mutex_cond_lock): Mark with internal_function.
7382
7383         * tst-cancel17.c (tf): Retry aio_suspend in case of EINTR.
7384         Also test aio_suspend with timeout value.
7385
7386 2003-06-22  Ulrich Drepper  <drepper@redhat.com>
7387
7388         * pthreadP.h: Mark __pthread_mutex_unlock_usercnt also hidden.
7389         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Add
7390         attribute_hidden.
7391
7392         * pthreadP.h (__pthread_mutex_init_internal): Mark hidden.
7393         (__pthread_mutex_lock_internal): Likewise.
7394         (__pthread_mutex_unlock_internal): Likewise.
7395         (__pthread_mutex_unlock_usercnt): Declare.
7396         * pthread_mutex_destroy.c: Always fail if used in any way.
7397         * pthread_mutex_init.c: Update comment.
7398         * pthread_mutex_lock.c: If NO_INCR is not defined adjust __nusers.
7399         * pthread_mutex_timedlock.c: Adjust __nusers.
7400         * pthread_mutex_trylock.c: Adjust __nusers.
7401         * pthread_mutex_unlock.c: Old code is in __pthread_mutex_unlock_usercnt
7402         and public interfaces are wrapper with pass additional parameter.
7403         __pthread_mutex_unlock_usercnt does not adjust __nusers if second
7404         parameter zero.
7405         * tst-mutex8.c: New file.
7406         * Makefile (tests): Add tst-mutex8.
7407         * sysdeps/pthread/pthread_cond_timedwait.c: Call
7408         __pthread_mutex_unlock_usercnt.
7409         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
7410         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
7411         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
7412         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
7413         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
7414         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Define NO_INCR.
7415         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
7416         Add __nusers.
7417         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
7418         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
7419         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
7420         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
7421         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
7422
7423         * pthread_mutex_lock.c: Don't store THREAD_ID in __owner, use TID.
7424         * pthread_mutex_timedlock.c: Likewise.
7425         * pthread_mutex_trylock.c: Adjust __nusers.
7426         * pthread_mutex_unlock.c: Compare with TID not THREAD_ID.
7427         * tst-mutex9.c: New file.
7428         * Makefile (tests): Add tst-mutex9.
7429         * sysdeps/i386/tls.h: Remove THREAD_ID definition.
7430         * sysdeps/ia64/tls.h: Likewise.
7431         * sysdeps/powerpc/tls.h: Likewise.
7432         * sysdeps/s390/tls.h: Likewise.
7433         * sysdeps/sh/tls.h: Likewise.
7434         * sysdeps/x86_64/tls.h: Likewise.
7435         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
7436         Change type of __owner.
7437         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
7438         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
7439         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
7440         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
7441         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
7442
7443 2003-06-19  Jakub Jelinek  <jakub@redhat.com>
7444
7445         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Move to...
7446         * sysdeps/unix/sysv/linux/sem_post.c: ...here.
7447
7448         * sysdeps/unix/sysv/linux/sem_post.c: Move to...
7449         * sysdeps/unix/sysv/linux/powerpc/sem_post.c: ... here.  Pass nr + 1
7450         instead of nr to lll_futex_wake.  Only set errno and return -1
7451         if err < 0.
7452
7453         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (lll_futex_wait,
7454         lll_futex_timed_wait, lll_futex_wake, lll_futex_requeue): On success
7455         return actual return value from the syscall, not 0.
7456
7457 2003-06-18  Ulrich Drepper  <drepper@redhat.com>
7458
7459         * tst-cancel4.c (tf_msgsnd): Don't always use 100 as the type,
7460         find a random value.
7461         (tf_msgrcv): Likewise.  Also don't report msgrcv returns if
7462         errno==EIDRM.
7463
7464         * sysdeps/unix/sysv/linux/timer_settime.c: Add prototype for
7465         compat_timer_settime.
7466         * sysdeps/unix/sysv/linux/timer_gettime.c: Add prototype for
7467         compat_timer_gettime.
7468         * sysdeps/unix/sysv/linux/timer_getoverr.c: Add prototype for
7469         compat_timer_getoverrun.
7470         * sysdeps/unix/sysv/linux/timer_delete.c: Add prototype for
7471         compat_timer_delete.
7472
7473         * pthread_mutex_destroy.c (__pthread_mutex_destroy): For
7474         error-checking mutex detect busy mutexes.
7475
7476 2003-06-17  Ulrich Drepper  <drepper@redhat.com>
7477
7478         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_mutex_lock):
7479         Add ax to clobber list.
7480         (lll_mutex_cond_lock): Likewise.
7481         (lll_mutex_unlock): Likewise.
7482         (lll_lock): Likewise.
7483         (lll_unlock): Likewise.
7484
7485         * Makefile: Add rules to build and run tst-cancel18 and tst-cancelx18.
7486         * tst-cancel18.c: New file.
7487         * tst-cancelx18.c: New file.
7488
7489         * tst-cancel4.c: Test connect, creat, msgrcv, msgsnd, sendmsg, sendto,
7490         and tcdrain.
7491
7492         * Makefile: Add rules to build and run tst-cancel17 and tst-cancel17x.
7493         * tst-cancel17.c: New file.
7494         * tst-cancelx17.c: New file.
7495
7496         * sysdeps/unix/sysv/linux/sigtimedwait.c: New file.
7497         * sysdeps/unix/sysv/linux/sigwait.c: New file.
7498         * sysdeps/unix/sysv/linux/sigwaitinfo.c: New file.
7499
7500         * tst-cancel4.c: Test open, close, pread, pwrite, fsync, and msync.
7501
7502 2003-06-16  Jakub Jelinek  <jakub@redhat.com>
7503
7504         * sysdeps/pthread/createthread.c (create_thread): Set
7505         header.multiple_threads unconditionally.
7506         * allocatestack.c (allocate_stack): Likewise.
7507         * descr.h (struct pthread): Add header.multiple_threads
7508         unconditionally.
7509         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (CENABLE, CDISABLE):
7510         Define for librt.  #error if neither libpthread, libc nor librt.
7511         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (CENABLE, CDISABLE):
7512         Likewise.
7513         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (CENABLE,
7514         CDISABLE): Likewise.
7515         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (CENABLE,
7516         CDISABLE): Likewise.
7517         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (CENABLE,
7518         CDISABLE): Likewise.
7519         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (CENABLE,
7520         CDISABLE): Likewise.  Access header.multiple_threads outside of
7521         libc and libpthread.
7522         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (CENABLE, CDISABLE):
7523         Likewise.
7524         * sysdeps/x86_64/tls.h (tcbhead_t): Add multiple_threads.
7525         * sysdeps/x86_64/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Define.
7526
7527 2003-06-17  Ulrich Drepper  <drepper@redhat.com>
7528
7529         * tst-cancel4.c: Add tests for the socket and signal functions, pause.
7530         Also test early cancellation before the thread reaches the cancellation
7531         point.
7532
7533         * Makefile: Compile forward.c with exceptions.
7534
7535         * sysdeps/unix/sysv/linux/sleep.c: New file.
7536
7537 2003-06-16  Ulrich Drepper  <drepper@redhat.com>
7538
7539         * Makefile: Add CFLAGS definition to compile function wrappers
7540         duplicated from libc with exceptions.
7541         * tst-cancel4.c: Also check cancellation handlers.
7542
7543         * Makefile: Add rules to build and run tst-cancel16 and
7544         tst-cancelx16.  Add missing CFLAGS definitions.
7545         * tst-cancel16.c: New file.
7546         * tst-cancelx16.c: New file.
7547
7548 2003-06-15  Ulrich Drepper  <drepper@redhat.com>
7549
7550         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
7551         (DL_SYSINFO_IMPLEMENTATION): Use CFI opcodes.
7552         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
7553         (DL_SYSINFO_IMPLEMENTATION): Likewise.
7554
7555         * pthreadP.h (LIBC_CANCEL_ASYNC): Also define for librt.
7556         (LIBC_CANCEL_RESET): Likewise.
7557         Declare __librt_enable_asynccancel and __librt_disable_asynccancel.
7558         * sysdeps/pthread/Makefile (librt-sysdep_routines): Add
7559         librt-cancellation.
7560         (CFLAGS-libcrt-cancellation.c): Define.
7561         * sysdeps/pthread/librt-cancellation.c: New file.
7562         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define all the nice
7563         macros also when compiling librt.
7564         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
7565         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
7566         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
7567         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
7568         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
7569         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
7570         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
7571
7572         * sysdeps/unix/sysv/linux/timer_create.c: Add prototype for
7573         compat_timer_create.
7574
7575 2003-06-14  Ulrich Drepper  <drepper@redhat.com>
7576
7577         * sysdeps/pthread/posix-timer.h (timespec_compare): Always inline.
7578
7579         * sysdeps/unix/sysv/linux/fork.h: Add libc_hidden_proto for
7580         __register_atfork.
7581         * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork):
7582         Add libc_hidden_def.
7583
7584 2003-06-13  Roland McGrath  <roland@redhat.com>
7585
7586         * sysdeps/x86_64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Pass FS
7587         constant from <sys/reg.h> to ps_get_thread_area, not register contents.
7588
7589 2003-06-11  Ulrich Drepper  <drepper@redhat.com>
7590
7591         * allocatestack.c (queue_stack): Always inline.
7592         * ptreadhP.h (__do_cancel): Likewise.
7593
7594 2003-06-10  Jakub Jelinek  <jakub@redhat.com>
7595
7596         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait): Fix
7597         a typo.
7598
7599 2003-06-10  Ulrich Drepper  <drepper@redhat.com>
7600
7601         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
7602         (__pthread_cond_signal): Remove incorrect second addition for
7603         cond_lock!=0.
7604
7605 2003-06-09  Ulrich Drepper  <drepper@redhat.com>
7606
7607         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
7608         (__pthread_cond_signal): Use correct futex pointer in
7609         __lll_mutex_lock_wait call.
7610
7611         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
7612         (__pthread_cond_signal): Some more tweaks to handle cond_lock!=0.
7613
7614 2003-06-08  Ulrich Drepper  <drepper@redhat.com>
7615
7616         * sysdeps/unix/sysv/linux/s390/sem_wait.c (__new_sem_wait): Make
7617         cancelable.
7618         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait):
7619         Likewise.
7620
7621         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Remove
7622         hand-written CFI generation code.  Since ENTRY/END also initiated
7623         CFI frames this caused two CFI sets to be generated.
7624
7625 2003-06-07  Ulrich Drepper  <drepper@redhat.com>
7626
7627         * cleanup_routine.c: New file.
7628         * Versions (libpthread) [GLIBC_2.3.3]: Add __pthread_cleanup_routine.
7629         * sysdeps/pthread/pthread.h: Add support for fully exception-based
7630         cleanup handling.
7631         * Makefile (libpthread-routines): Add cleanup_routine.
7632         Add more CFLAGS variables to compile with exceptions.  Add comments
7633         why which file needs unwind tables.
7634         (tests) [have-forced-unwind==yes]: Add tst-cancelx* and tst-cleanupx*
7635         tests.
7636         * tst-cancelx1.c: New file.
7637         * tst-cancelx2.c: New file.
7638         * tst-cancelx3.c: New file.
7639         * tst-cancelx4.c: New file.
7640         * tst-cancelx5.c: New file.
7641         * tst-cancelx6.c: New file.
7642         * tst-cancelx7.c: New file.
7643         * tst-cancelx8.c: New file.
7644         * tst-cancelx9.c: New file.
7645         * tst-cancelx10.c: New file.
7646         * tst-cancelx11.c: New file.
7647         * tst-cancelx12.c: New file.
7648         * tst-cancelx13.c: New file.
7649         * tst-cancelx14.c: New file.
7650         * tst-cancelx15.c: New file.
7651         * tst-cleanupx0.c: New file.
7652         * tst-cleanupx0.expect: New file.
7653         * tst-cleanupx1.c: New file.
7654         * tst-cleanupx2.c: New file.
7655         * tst-cleanupx3.c: New file.
7656
7657         * tst-cleanup0.c: Make standard compliant.
7658         * tst-cleanup1.c: Likewise.
7659
7660         * sysdeps/unix/sysv/linux/sem_timedwait.c: Add cancellation support.
7661         * sysdeps/unix/sysv/linux/sem_wait.c: Likewise.
7662         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
7663         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
7664         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
7665         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
7666         * sysdeps/i386/tcb-offsets.sym: Add RESULT, CANCELHANDLING, and
7667         CLEANUP_JMP_BUF.
7668         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
7669         * tst-cancel12.c: New file.
7670         * tst-cancel13.c: New file.
7671         * tst-cancel14.c: New file.
7672         * tst-cancel15.c: New file.
7673         * Makefile (tests): Add tst-cancel12, tst-cancel13, tst-cancel14,
7674         and tst-cancel15.
7675
7676         * tst-cancel1.c: Add some comments.
7677
7678         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Compute relative
7679         timeout correctly.
7680
7681 2003-06-06  Ulrich Drepper  <drepper@redhat.com>
7682
7683         * Makefile (CFLAGS-pthread_cancel.c): Define.
7684
7685 2003-06-05  Ulrich Drepper  <drepper@redhat.com>
7686
7687         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_rwlock_t):
7688         Change type of __writer element to int.
7689         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
7690         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
7691         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
7692         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
7693         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
7694         * sysdeps/i386/tcb-offsets.sym: Replace SELF entry with TID entry.
7695         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
7696         * pthread_rwlock_trywrlock.c: Store TID not self pointer in __writer.
7697         Compare with TID to determine deadlocks.
7698         * sysdeps/pthread/pthread_rwlock_rdlock.c: Likewise.
7699         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
7700         * sysdeps/pthread/pthread_rwlock_timedwrlock.: Likewise.
7701         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
7702         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
7703         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
7704         Likewise.
7705         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
7706         Likewise.
7707         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
7708         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
7709         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
7710         Likewise.
7711         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
7712         Likewise.
7713         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
7714         * Makefile (tests): Add tst-rwlock12.
7715         * tst-rwlock12.c: New file.
7716
7717 2003-06-05  Jakub Jelinek  <jakub@redhat.com>
7718
7719         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait,
7720         __lll_timedlock_wait, lll_unlock_wake_cb, __lll_timedwait_tid):
7721         Remove bogus hidden_proto.
7722         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c (___lll_lock):
7723         Likewise.
7724         * sysdeps/unix/sysv/linux/s390/lowlevellock.c (___lll_lock,
7725         lll_unlock_wake_cb, ___lll_timedwait_tid): Likewise.
7726         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c (___lll_mutex_lock,
7727         ___lll_mutex_timedlock): Likewise.
7728
7729 2003-06-04  Ulrich Drepper  <drepper@redhat.com>
7730
7731         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
7732         (__pthread_cond_signal): Add some code to eventually handle
7733         cond_lock!=0.
7734
7735 2003-06-01  Ulrich Drepper  <drepper@redhat.com>
7736
7737         * Makefile (tests): Add tst-exec4.
7738         (tst-exec4-ARGS): Define.
7739         * tst-exec4.c: New file.
7740
7741 2003-05-31  Ulrich Drepper  <drepper@redhat.com>
7742
7743         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
7744         Also fail if tv_nsec < 0.
7745         (__lll_timedwait_tid): Likewise.
7746         * sysdeps/unix/sysv/linux/sem_timedwait.c (sem_timedwait): Likewise.
7747         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_timedwait_tid):
7748         Likewise.
7749         * sysdeps/unix/sysv/linux/s390/lowlevellock.c (___lll_timedwait_tid):
7750         Likewise.
7751         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c (__lll_mutex_timedlock):
7752         Likewise.
7753         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait):
7754         Likewise.
7755         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_timedwait_tid):
7756         Likewise.
7757         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_timedwait_tid):
7758         Likewise.
7759
7760         * Makefile (tests): Add tst-sem8 and tst-sem9.
7761         * tst-sem8.c: New file.
7762         * tst-sem9.c: New file.
7763         * sem_open.c: Fix creation of in_use record if the file exists but
7764         no internal record.
7765
7766         * posix-timer.h: Remove old, unused timer_id2ptr and timer_ptr2id
7767         definitions.
7768
7769         * sysdeps/pthread/timer_create.c (timer_create): In case
7770         evp==NULL, assign timer ID to sival_ptr.
7771
7772         * descr.h (struct pthread_unwind_buf): Change type of prev element to
7773         struct pthread_unwind_buf *.
7774         (struct pthread): Likewise for cleanup_jmp_buf element.
7775
7776         * cleanup.c (__pthread_register_cancel): Add cast to avoid warning.
7777         * cleanup_defer.c (__pthread_register_cancel_defer): Likewise.
7778         * unwind.c (__pthread_unwind_next): Likewise.
7779
7780 2003-05-30  Ulrich Drepper  <drepper@redhat.com>
7781
7782         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
7783         (lll_futex_timed_wait): Use int for futex value parameter.
7784         (lll_futex_wake): Likewise.
7785         (lll_futex_requeue): Likewise.
7786
7787         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait):
7788         Replace one memory operation with one register operation.
7789
7790         * tst-join4.c (do_test): Fix error message.
7791
7792         * tst-rwlock6.c (do_test): Use correct format specifier.
7793
7794         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
7795         (__lll_mutex_lock_wait): Replace one memory operation with one
7796         register operation.
7797         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S
7798         (__lll_mutex_lock_wait): Likewise.
7799
7800         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
7801         (__lll_mutex_cond_lock): Add one to value parameter of
7802         __lll_lock_wait to reflect reality in the futex syscall.
7803         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
7804         (lll_mutex_cond_lock): Likewise.
7805
7806 2003-05-30  Jakub Jelinek  <jakub@redhat.com>
7807
7808         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_mutex_cond_lock):
7809         New function.
7810         (lll_mutex_cond_lock): Define.
7811
7812 2003-05-29  Ulrich Drepper  <drepper@redhat.com>
7813
7814         * Makefile (tests): Add tst-signal6.
7815         * tst-signal6.c: New file.
7816
7817         * sysdeps/unix/sysv/linux/s390/lowlevellock.h
7818         (__lll_mutex_unlock_force): New function
7819         (lll_mutex_unlock_force): Use __lll_mutex_unlock_force.
7820
7821         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
7822         (__lll_mutex_unlock_force): New function.
7823         (lll_mutex_unlock_force): Use __lll_mutex_unlock_force.
7824
7825         * tst-rwlock7.c (do_test): Use correct format specifier.
7826
7827         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_requeue):
7828         Find break parameter in correct asm argument.
7829
7830 2003-05-27  Jakub Jelinek  <jakub@redhat.com>
7831
7832         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_clobbers):
7833         Remove out4.
7834         (lll_futex_requeue): Fix __o3 constraint, return negative errno if
7835         error occured.
7836         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
7837         Add __mutex.
7838         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_REQUEUE,
7839         lll_futex_requeue, lll_mutex_unlock_force): Define.
7840
7841 2003-05-30  Jakub Jelinek  <jakub@redhat.com>
7842
7843         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
7844         (pthread_cond_t): Add __mutex.
7845         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_REQUEUE,
7846         lll_futex_requeue, lll_mutex_unlock_force): Define.
7847
7848 2003-05-28  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
7849
7850         * sysdeps/sh/tcb-offsets.sym: Define MUTEX_FUTEX.
7851         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
7852         Add __mutex field.
7853         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (SYSCALL_WITH_INST_PAD):
7854         Define.
7855         (lll_futex_wait, lll_futex_wake): Define.
7856         * sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h: New file.
7857         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Try using
7858         FUTEX_REQUEUE instead of FUTEX_WAIT.
7859         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise.
7860         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Remember
7861         mutex which was used in condvar structure.  Call
7862         __pthread_mutex_cond_lock instead of __pthread_mutex_lock_internal.
7863         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
7864
7865         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Don't
7866         include tcb-offsets.h.  Read wakeup value in locked region.
7867         Use the value of gbr register as THREAD_ID.
7868         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
7869         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
7870         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
7871
7872         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Remove futex related
7873         macros.
7874
7875 2003-05-28  Ulrich Drepper  <drepper@redhat.com>
7876
7877         * sysdeps/pthread/pthread_cond_broadcast.c
7878         (__pthread_cond_broadcast): Fix typo: MAX_INT -> INT_MAX.
7879
7880 2003-05-26  Ulrich Drepper  <drepper@redhat.com>
7881
7882         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Fix
7883         typo in register name.
7884         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Use parameters
7885         correctly.  Actually use requeue.  Little optimization.
7886         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Store
7887         mutex address early.  Handle cancellation state as 32-bit value.
7888         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
7889         Remove unnecessary label.
7890
7891 2003-05-25  Ulrich Drepper  <drepper@redhat.com>
7892
7893         * sysdeps/pthread/pthread_cond_broadcast.c: Try using FUTEX_REQUEUE
7894         instead of FUTEX_WAIT.
7895         * sysdeps/pthread/pthread_cond_signal.c: Likewise.
7896         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
7897         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
7898         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
7899         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
7900         * sysdeps/pthread/pthread_cond_timedwait.c: Remember mutex which was
7901         used in condvar structure.  Call __pthread_mutex_cond_lock instead
7902         of __pthread_mutex_lock_internal.
7903         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
7904         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
7905         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
7906         (__condvar_cleanup): Always call __pthread_mutex_cond_lock.
7907         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
7908         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
7909         * sysdeps/unix/sysv/linux/Makefile (libpthread-sysdep_routines):
7910         Add pthread_mutex_cond_lock.
7911         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add dep_mutex.
7912         * sysdeps/unix/sysv/linux/pthread_cond_mutex_lock.c: New file.
7913         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define
7914         lll_mutex_cond_lock.
7915         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
7916         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
7917         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
7918         Add __mutex field.
7919         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
7920         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
7921
7922         * sysdeps/i386/tcb-offsets.sym: Define MUTEX_FUTEX.
7923         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
7924
7925         * pthreadP.h: Declare __pthread_mutex_cond_lock.
7926         * pthread_mutex_lock.c: Define LLL_MUTEX_LOCK if not already defined.
7927         Use it instead of lll_mutex_lock.  If __pthread_mutex_lock is a
7928         macro don't define aliases.
7929
7930         * cancellation.c: Remove __pthread_enable_asynccancel_2.
7931         * pthreadP.h: Remove declaration of __pthread_enable_asynccancel_2.
7932         * sysdeps/pthread/pthread_cond_timedwait.c: Use
7933         __pthread_enable_asynccancel instead of __pthread_enable_asynccancel_2.
7934         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
7935         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
7936         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
7937         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
7938         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
7939
7940 2003-05-17  Ulrich Drepper  <drepper@redhat.com>
7941
7942         * sem_open.c: Fix one endless loop.  Implement correct semantics
7943         wrt opening the same semaphore more then once.
7944         * sem_close.c: Adjust for sem_open change.
7945         * semaphoreP.h: Include <semaphore.h>.  Define struct inuse_sem.
7946         Declare __sem_mappings, __sem_mappings_lock, __sem_search.
7947         * Makefile (tests): Add tst-sem7.
7948         * tst-sem7.c: New file.
7949
7950 2003-05-16  Roland McGrath  <roland@redhat.com>
7951
7952         * sysdeps/unix/sysv/linux/register-atfork.c (libc_freeres_fn): Fix
7953         uninitialized variable braino.
7954
7955 2003-05-16  Ulrich Drepper  <drepper@redhat.com>
7956
7957         * sysdeps/unix/sysv/linux/timer_gettime.c (timer_gettime): Correct
7958         test for syscall availability.
7959
7960         * sysdeps/unix/sysv/linux/timer_settime.c (timer_settime): Set
7961         __no_posix_timers to -1 if the syscalls don't exist.
7962
7963         * pthread_join.c (pthread_join): Set tid field of the joined
7964         thread to -1.  This isn't necessary but helps to recognize some
7965         error conditions with almost no cost.
7966
7967         * allocatestack.c (FREE_P): Also negative values indicate an
7968         unused stack.
7969
7970         * unwind.c: Include <unistd.h>.
7971
7972 2003-05-14  Ulrich Drepper  <drepper@redhat.com>
7973
7974         * Makefile ($(objpfx)$(multidir)): Add rule to create the directory.
7975
7976 2003-05-14  Jakub Jelinek  <jakub@redhat.com>
7977
7978         * Makefile (crti-objs, crtn-objs): New variables.
7979         (omit-deps, extra-objs): Add crtn.
7980         ($(objpfx)libpthread.so): Depend on both crti and crtn
7981         and links to them in multidir.
7982         ($(objpfx)crtn.S, $(objpfx)crtn.o): New rules.
7983
7984 2003-05-12  Steven Munroe  <sjmunroe@us.ibm.com>
7985
7986         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
7987         (lll_mutex_unlock): Use atomic_exchange_rel.
7988
7989 2003-05-11  Ulrich Drepper  <drepper@redhat.com>
7990
7991         * cond-perf.c (cons): Add missing locking around setting of alldone.
7992
7993 2003-05-10  Ulrich Drepper  <drepper@redhat.com>
7994
7995         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Remove futex
7996         related macros.
7997         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
7998
7999 2003-05-09  Ulrich Drepper  <drepper@redhat.com>
8000
8001         * tst-sem6.c: New file.
8002         * Makefile (tests): Add tst-sem6.
8003
8004         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (___lll_mutex_unlock):
8005         Use atomic_exchange_rel instead of atomic_exchange.
8006         * sysdeps/unix/sysv/linux/lowlevellock.c (lll_unlock_wake_cb):
8007         Likewise.
8008
8009         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Improve quality of
8010         code for lll_futex_wait and lll_futex_wake in static apps.  Use
8011         vsyscall is possible.
8012
8013         * sysdeps/unix/sysv/linux/pthread_getaffinity.c: New file.
8014         * sysdeps/unix/sysv/linux/pthread_setaffinity.c: New file.
8015         * sysdeps/pthread/pthread.h: Declare pthread_getaffinity_np and
8016         pthread_setaffinity_np.
8017         * Versions [libpthread] (GLIBC_2.3.3): Add pthread_getaffinity_np
8018         and pthread_setaffinity_np.
8019         * Makefile (libpthread-routines): Add pthread_getaffinity and
8020         pthread_setaffinity.
8021
8022         * allocatestack.c (allocate_stack): If ARCH_RETRY_MMAP is defined,
8023         use it in case mmap to allocate the stack fails.
8024         * sysdeps/unix/sysv/linux/x86_64/Makefile: Don't define
8025         ARCH_MAP_FLAGS here.
8026         * sysdeps/x86_64/pthreaddef.h: Define ARCH_MAP_FLAGS and
8027         ARCH_RETRY_MMAP.
8028
8029 2003-05-08  Ulrich Drepper  <drepper@redhat.com>
8030
8031         * sysdeps/unix/sysv/linux/fork.c: Complete rewrite of the atfork
8032         handler implementation.  It is now lockless in fork().
8033         * sysdeps/unix/sysv/linux/register-atfork.c: Likewise.
8034         * sysdeps/unix/sysv/linux/unregister-atfork.c: Likewise.
8035         * sysdeps/unix/sysv/linux/fork.h: Don't include <link.h>.  Don't
8036         declare the __fork_*_lists.
8037         (struct fork_handler): Include pointers to all three functions.
8038         Add next, refcntr and need_signal elements.
8039         (__fork_handlers): New declaration.
8040         (__register_atfork_malloc): Remove declaration.
8041         (HAVE_register_atfork_malloc): Remove definition.
8042         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Remove
8043         __pthread_child_handler variable.
8044         (__libc_pthread_init): Use __register_atfork instead of explicitly
8045         adding to the list.
8046         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define lll_futex_wait
8047         and lll_futex_wake.
8048         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
8049
8050         * unwind.c (unwind_cleanup): Print error message and then abort.  This
8051         function must never be reached.
8052
8053         * cond-perf.c: New file.
8054
8055 2003-05-05  Ulrich Drepper  <drepper@redhat.com>
8056
8057         * sysdeps/i386/tls.h (TLS_INIT_TP): Include \n in error message.
8058
8059 2003-05-04  Roland McGrath  <roland@redhat.com>
8060
8061         * Makefile ($(objpfx)../libc.so): New target.
8062
8063 2003-05-02  Ulrich Drepper  <drepper@redhat.com>
8064
8065         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
8066         (pthread_condattr_t): Size is only an int, don't use long for
8067         alignment.
8068         (pthread_mutexattr_t): Likewise.
8069         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
8070         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
8071         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
8072
8073 2003-05-01  Ulrich Drepper  <drepper@redhat.com>
8074
8075         * sysdeps/i386/tls.h: Define THREAD_ID.
8076         * sysdeps/ia64/tls.h: Likewise.
8077         * sysdeps/powerpc/tls.h: Likewise.
8078         * sysdeps/s390/tls.h: Likewise.
8079         * sysdeps/sh/tls.h: Likewise.
8080         * sysdeps/x86_64/tls.h: Likewise.
8081         * pthread_mutex_lock.c: Use THREAD_ID instead of THREAD_SELF to
8082         record ownership.
8083         * pthread_mutex_timedlock.c: Likewise.
8084         * pthread_mutex_trylock.c: Likewise.
8085         * pthread_mutex_unlock.c: Likewise.
8086         * pthread_rwlock_trywrlock.c: Likewise.
8087         * sysdeps/pthread/pthread_rwlocklock_rdlock.c: Likewise.
8088         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
8089         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
8090         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
8091
8092         * sysdeps/pthread/createthread.c (create_thread): Use CLONE_SYSVSEM
8093         flag.
8094
8095 2003-04-29  Jakub Jelinek  <jakub@redhat.com>
8096
8097         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
8098         (__SIZEOF_PTHREAD_COND_T): Define to 48.
8099         (pthread_rwlock_t): Add 16 bytes of pad instead of 8 before __flags.
8100         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
8101         Make __align long long instead of long.
8102         (pthread_rwlock_t): Formatting.
8103         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h
8104         (pthread_rwlock_t): Formatting.
8105         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
8106         (pthread_cond_t): Make __align long long instead of long.
8107         (pthread_rwlock_t): Move __flags field to the same position as in
8108         linuxthreads.
8109
8110 2003-04-30  Ulrich Drepper  <drepper@redhat.com>
8111
8112         * tst-rwlock6.c (do_test): Use correct printf format specifiers.
8113         * tst-rwlock7.c (do_test): Likewise.
8114
8115 2003-04-26  Roland McGrath  <roland@redhat.com>
8116
8117         * Makefile ($(test-modules)): Depend on $(common-objpfx)shlib.lds.
8118
8119 2003-04-22  Jakub Jelinek  <jakub@redhat.com>
8120
8121         * allocatestack.c (TLS_TPADJ): Add TLS_PRE_TCB_SIZE instead of
8122         sizeof (struct pthread).
8123         (allocate_stack): Subtract TLS_PRE_TCB_SIZE bytes instead of
8124         1 struct pthread.
8125         * sysdeps/powerpc/tls.h (TLS_INIT_TCB_SIZE, TLS_TCB_SIZE): Define
8126         to 0.
8127         (TLS_INIT_TCB_ALIGN, TLS_TCB_ALIGN): Define to alignment of
8128         struct pthread.
8129         (TLS_PRE_TCB_SIZE): Increase to cover tcbhead_t preceeded by pad
8130         to 32-bit bytes.
8131         (INSTALL_DTV, GET_DTV, THREAD_DTV): tcbhead_t is immediately before
8132         tcbp.
8133         (TLS_INIT_TP, THREAD_SELF, INIT_THREAD_SELF): Don't add TLS_TCB_SIZE
8134         unneccessarily.
8135         (NO_TLS_OFFSET): Define.
8136         * sysdeps/unix/sysv/linux/powerpc/createthread.c (TLS_VALUE): Don't
8137         add TLS_TCB_SIZE unnecessarily.
8138
8139 2003-04-22  Roland McGrath  <roland@redhat.com>
8140
8141         * Makeconfig (shared-thread-library): Reverse link order to work
8142         around linker bug.
8143
8144 2003-04-22  Ulrich Drepper  <drepper@redhat.com>
8145
8146         * semaphore.h: Fix typo in comment.
8147
8148 2003-04-21  Ulrich Drepper  <drepper@redhat.com>
8149
8150         * sysdeps/pthread/sigfillset.c: New file.
8151
8152         * init.c (__pthread_initialize_minimal): Don't block SIGTIMER.
8153         * pthreadP.h: Make SIGTIMER and SIGCANCEL the same.
8154         * sysdeps/pthread/pthread_sigmask.c: Remove handling of SIGTIMER.
8155         * sysdeps/pthread/sigaction.c: Likewise.
8156         * sysdeps/pthread/sigprocmask.c: New file.
8157         * sysdeps/unix/sysv/linux/allocrtsig.c (current_rtmin): Define as
8158         __SIGRTMIN+1.
8159         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
8160         Block SIGTIMER.  Also handle SI_TKILL events and terminate thread
8161         in this case.
8162
8163 2003-04-19  Ulrich Drepper  <drepper@redhat.com>
8164
8165         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
8166         (DL_SYSINFO_IMPLEMENTATION): Add .eh_frame information.
8167
8168         * sysdeps/unix/sysv/linux/unregister-atfork.c
8169         (__unregister_atfork): Don't free memory not allocated dynamically.
8170
8171         * semaphore.h: Remove __THROW marker from cancellation points.
8172         * nptl/sysdeps/pthread/pthread.h: Likewise.
8173
8174 2003-04-18  Ulrich Drepper  <drepper@redhat.com>
8175
8176         * sysdeps/pthread/pthread.h: Don't mark pthread_testcancel,
8177         pthread_cancel, pthread_setcancelstate, and pthread_setcanceltype with
8178         __THROW.
8179
8180 2003-04-16  Jakub Jelinek  <jakub@redhat.com>
8181
8182         * tst-cancel4.c (do_test): Use %zd instead of %d when printing cnt.
8183
8184 2003-04-15  Roland McGrath  <roland@redhat.com>
8185
8186         * forward.c (__pthread_unwind): Tweak to avoid warning.
8187
8188 2003-04-15  Ulrich Drepper  <drepper@redhat.com>
8189
8190         * pthreadP.h: Move THREAD_ATOMIC_* replacements to the top.
8191
8192 2003-04-14  Ulrich Drepper  <drepper@redhat.com>
8193
8194         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Don't
8195         overflow CFA advance instructions.
8196         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
8197
8198 2003-04-14  Jakub Jelinek  <jakub@redhat.com>
8199
8200         * sysdeps/i386/tls.h: Rename LOCK to LOCK_PREFIX.
8201         * sysdeps/i386/pthread_spin_lock.c: Likewise.
8202         * sysdeps/x86_64/tls.h: Likewise.  Define LOCK_PREFIX if not already
8203         defined.
8204
8205         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Use
8206         DW_CFA_advance_loc2 for .Laddl-.Lsubl.
8207         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use
8208         DW_CFA_advance_loc for .Laddl-.Lsubl.
8209
8210 2003-04-13  Ulrich Drepper  <drepper@redhat.com>
8211
8212         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Don't use
8213         position-independent unwind data for static libraries.
8214         Add missing unwind info.  Add comments.
8215
8216         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Add unwind info.
8217         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
8218         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
8219         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
8220
8221 2003-04-12  Ulrich Drepper  <drepper@redhat.com>
8222
8223         * Makefile: Make sure all cancellation points are compiled with
8224         exception and asynchronous unwind tables.
8225
8226         * sysdeps/x86_64/tls.h (THREAD_SETMEM): Word around compiler bug
8227         which mishandles loading of global object addresses in PIC.
8228         (THREAD_SETMEM_NC): Likewise.
8229
8230 2003-04-11  Ulrich Drepper  <drepper@redhat.com>
8231
8232         * pthread.h: Define new data structure for cleanup buffer.  Declare
8233         new cleanup handler interfaces.
8234         * descr.h: Include <unwind.h> if necessary.  Define pthread_unwind_buf.
8235         (struct pthread): Add cleanup_jmp_buf pointer.  Define
8236         HAVE_CLEANUP_JMP_BUF and not HAVE_CANCELBUF.
8237         * pthreadP.h: Declare __pthread_unwind.  Define __do_cancel to use
8238         it.  Declare old cleanup handler installation functions.
8239         * cleanup.c: Rewrite.  Install handler for unwind-based cleanup
8240         handling.
8241         * cleanup_defer.c: Likewise.
8242         * cleanup_compat.c: New file.  Old cleanup code.
8243         * cleanup_def_compat.c: New file.  Old cleanup code.
8244         * pthread_create.c (start_thread): Initialize cleanup_jmp_buf element
8245         if own thread descriptor.
8246         * unwind.c: New file.
8247         * forward.c: Add __pthread_unwind.
8248         * init.c (pthread_functions): Add __pthread_unwind.
8249         * sysdeps/pthread/pthread-functions.s (struct pthread_functions):
8250         Add ptr___pthread_unwind.
8251         * Versions [GLIBC_2.3.3] (libpthread): Export new cleanup handling
8252         and unwind function.
8253         * Makefile (libpthread-routines): Add cleanup_compat,
8254         cleanup_def_compat, and unwind.  Define CFLAGS to enable unwind
8255         table generation if necessary.
8256         * version.c: Record whether unwind support is compiled in.
8257         * sysdeps/pthread/configure.in: Add checks for unwind unterfaces.
8258         * sysdeps/pthread/bits/libc-lock.h: Add prototypes of the old cleanup
8259         handler interfaces.
8260         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Add quite a bit of
8261         complication to generate unwind information for syscall wrappers.
8262         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
8263         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Define
8264         __cleanup_fct_attribute.
8265
8266         * Makefile: Add rules to build and run tst-cleanup0.
8267         * tst-cleanup0.c: New file.
8268         * tst-cleanup0.expect: New file.
8269
8270         * pthread_create.c (deallocate_tsd): Don't take parameter.  Adjust
8271         caller.  Optimize to avoid often unecessary local variable.
8272
8273 2003-04-11  Roland McGrath  <roland@redhat.com>
8274
8275         * Makefile ($(objpfx)multidir.mk): New target, generated makefile that
8276         sets variable `multidir'; include that.
8277         (generated): Add it.
8278         ($(objpfx)$(multidir)/crti.o): New target.
8279         [$(multidir) != .] (generated-dirs, extra-objs, omit-deps): Add it.
8280
8281 2003-04-11  Ulrich Drepper  <drepper@redhat.com>
8282
8283         * tst-attr2.c (do_test): Add cast to avoid warning.
8284         * tst-mutex4.c (do_test): Likewise.
8285
8286 2003-04-10  Ulrich Drepper  <drepper@redhat.com>
8287
8288         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Reset CPU clocks
8289         in child.
8290
8291 2003-04-09  Ulrich Drepper  <drepper@redhat.com>
8292
8293         * Makefile (tests): Add tst-detach1.
8294         * tst-detach1.c: New file.
8295
8296 2003-04-08  Ulrich Drepper  <drepper@redhat.com>
8297
8298         * sysdeps/pthread/pthread.h: Remove duplicate
8299         pthread_cleanup_{push,pop} definitions.
8300
8301         * tst-barrier2.c: Eliminate warnings.
8302         * tst-cancel4.c: Likewise.
8303         * tst-cond4.c: Likewise.
8304         * tst-cond6.c: Likewise.
8305         * tst-detach1.c: Likewise.
8306         * tst-rwlock4.c: Likewise.
8307         * tst-rwlock6.c: Likewise.
8308         * tst-rwlock7.c: Likewise.
8309         * tst-sem3.c: Likewise.
8310         * tst-spin2.c: Likewise.
8311         * tst-umask1.c: Likewise.
8312
8313 2003-04-07  Ulrich Drepper  <drepper@redhat.com>
8314
8315         * pthread_detach.c (pthread_detach): Fix test for invalid TID.
8316
8317 2003-04-06  Ulrich Drepper  <drepper@redhat.com>
8318
8319         * descr.h (struct pthread): Move cancelhandling member to the front.
8320
8321 2003-04-05  Ulrich Drepper  <drepper@redhat.com>
8322
8323         * sysdeps/unix/sysv/linux/register-atfork.c: Define malloc_prepare,
8324         malloc_parent, and malloc_child statically.
8325         (__register_atfork_malloc): New function.
8326         (free_mem): Don't free any of the malloc_* variables on the list.
8327         * sysdeps/unix/sysv/linux/fork.h: Declare __register_atfork_malloc.
8328         Define HAVE_register_atfork_malloc.
8329
8330 2003-04-04  Ulrich Drepper  <drepper@redhat.com>
8331
8332         * sysdeps/pthread/createthread.c (create_thread): Add some more
8333         comments explaining when to set multiple_threads and when not.
8334
8335         * pthreadP.h: Define THREAD_ATOMIC_CMPXCHG_VAL and
8336         THREAD_ATOMIC_BIT_SET if not already defined.
8337         * sysdeps/i386/tls.h: Define THREAD_ATOMIC_CMPXCHG_VAL and
8338         THREAD_ATOMIC_BIT_SET:
8339         * sysdeps/x86_64/tls.h: Likewise.
8340         * cleanup_defer.c (_pthread_cleanup_push_defer): Rewrite to use
8341         THREAD_ATOMIC_CMPXCHG_VAL.
8342         (_pthread_cleanup_pop_restore): Likewise.
8343         * cancellation.c (__pthread_enable_asynccancel): Likewise.
8344         (__pthread_enable_asynccancel_2): Likewise.
8345         (__pthread_disable_asynccancel): Likewise.
8346         * libc-cancellation.c (__libc_enable_asynccancel): Likewise.
8347         (__libc_disable_asynccancel): Likewise.
8348         * init.c (sigcancel_handler): Likewise.
8349         * pthread_setcancelstate.c (__pthread_setcancelstate): Likewise.
8350         * pthread_setcanceltype.c (__pthread_setcanceltype): Likewise.
8351
8352 2003-04-03  Ulrich Drepper  <drepper@redhat.com>
8353
8354         * init.c (sigcancel_handler): Don't set EXITING_BIT here.
8355         * libc-cancellation.c (__libc_enable_asynccancel): Likewise.
8356         * pthreadP.h (__do_cancel): Set EXITING_BIT here.
8357         * Makefile (tests): Add tst-cancel11.
8358         * tst-cancel11.c: New file.
8359
8360 2003-04-01  Ulrich Drepper  <drepper@redhat.com>
8361
8362         * pthread_create.c (deallocate_tsd): Clear/free memory after the last
8363         round, not the first.  Use specific_used flag instead of local
8364         found_nonzero variable.  Use THREAD_[SG]ETMEM where possible.
8365         (__free_tcb): Don't call deallocate_tsd here.
8366         (start_thread): Call deallocate_tsd here.
8367         * pthread_setspecific.c: Set specific_used flag really only when
8368         needed.
8369         * Makefile (tests): Add tst-tsd3.c and tst-tsd4.
8370         * tst-tsd3.c: New file.
8371         * tst-tsd4.c: New file.
8372
8373 2003-03-31  Ulrich Drepper  <drepper@redhat.com>
8374
8375         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_mutex_lock):
8376         Use atomic_exchange_and_add instead of __lll_add.
8377         (__lll_mutex_timedlock): Likewise.
8378         Patch by Ian Wienand.
8379
8380 2003-03-24  Steven Munroe  <sjmunroe@us.ibm.com>
8381
8382         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
8383         (SINGLE_THREAD_P): Fix typo.
8384         * tst-cancel-wrappers.sh: Handle '.'ed symbols.
8385
8386 2003-03-31  Ulrich Drepper  <drepper@redhat.com>
8387
8388         * Makefile (tests): Add tst-align.
8389         * tst-align.c: New file.
8390         * sysdeps/i386/Makefile: Define CFLAGS-tst-align.
8391
8392         * sysdeps/i386/tls.h (CALL_THREAD_FCT): Align stack of called
8393         function correctly.
8394
8395         * tst-tsd2.c: Add casts to avoid warnings.
8396
8397 2003-03-30  Ulrich Drepper  <drepper@redhat.com>
8398
8399         * descr.h (struct pthread): Move most often used elements to the front.
8400
8401 2003-03-29  Ulrich Drepper  <drepper@redhat.com>
8402
8403         * Makefile (libpthread-routines): Add pthread_atfork.
8404         (libpthread-static-only-routines): Add pthread_atfork.
8405
8406 2003-03-28  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
8407
8408         * sysdeps/sh/tls.h: Include nptl/descr.h after the definition
8409         of TLS_DTV_AT_TP.
8410         (INSTALL_DTV): Add parens.
8411         (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM, THREAD_SETMEM_NC):
8412         Use passed descr instead of THREAD_SELF.
8413         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S
8414         (__lll_mutex_timedlock_wait): Correct expected value after
8415         spurious wakeup.
8416         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S:
8417         Release lock before waking up the waiters.
8418         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Correct exit
8419         criteria.  Reorderstruct passed to cleanup handler.  Fix
8420         handling of cancellation and failung pthread_mutex_unlock call.
8421         Use __pthread_enable_asynccancel_2 instead of
8422         __pthread_enable_asynccancel.
8423         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
8424         Return result of lock re-get if it fails.
8425         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Fix wrong argument
8426         for __pthread_cleanup_push.
8427         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Fix
8428         completely broken rwlock implementation.
8429         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
8430         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
8431         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
8432         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
8433         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
8434         * sysdeps/unix/sysv/linux/sh/sem_post.S: Fix error value.  Use
8435         versioned_symbol macro.
8436         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Use versioned_symbol macro.
8437         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
8438
8439 2003-03-27  Ulrich Drepper  <drepper@redhat.com>
8440
8441         * sysdeps/unix/sysv/linux/kernel-posix-timers.h: Don't declare
8442         __timer_helper_thread.  Declare __start_helper_thread, __helper_once,
8443         and __helper_tid.
8444         (struct timer): Remove th and bar field.
8445         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Remove
8446         debugging code.  Create only one helper thread.
8447         * sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Don't kill
8448         helper thread.
8449         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
8450         Renamed.  Define statically.  Use thread info from siginfo.
8451         (__helper_once): New variable.
8452         (__helper_tid): New variable.
8453         (__reset_helper_control): New function.
8454         (__start_helper_thread): New function.
8455
8456         * pthread_create.c (start_thread): Don't use setjmp inside
8457         __builtin_expect to work around gcc bug.
8458
8459         * sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Even if
8460         timer_delete syscall fails, but not with ENOSYS, set
8461         __no_posix_timers.
8462
8463         * sysdeps/unix/sysv/linux/timer_settime.c [!__ASSUME_POSIX_TIMERS]
8464         (timer_settime): Fix typo.
8465         * sysdeps/unix/sysv/linux/timer_getoverr.c
8466         [!__ASSUME_POSIX_TIMERS] (timer_getoverrun): Likewise.
8467
8468 2003-03-27  Jakub Jelinek  <jakub@redhat.com>
8469
8470         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Fix
8471         offset of cleanupbuf.__prev.
8472
8473 2003-03-26  Jakub Jelinek  <jakub@redhat.com>
8474
8475         * sysdeps/unix/sysv/linux/timer_getoverr.c: Fix typo in name
8476         of included file.
8477
8478 2003-03-26  Ulrich Drepper  <drepper@redhat.com>
8479
8480         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): If EVP ==
8481         NULL provide default definition to syscall.
8482
8483 2003-03-25  Roland McGrath  <roland@redhat.com>
8484
8485         * sysdeps/pthread/posix-timer.h (TIMER_MAX): Define if not defined.
8486         (timer_id2ptr): Fix typo.
8487
8488 2003-03-25  Ulrich Drepper  <drepper@redhat.com>
8489
8490         * pthreadP.h: Define SIGCANCEL and SIGTIMER.
8491         * sysdeps/i386/pthreaddef.h: Remove SIGCANCEL definition.
8492         * sysdeps/ia64/pthreaddef.h: Likewise.
8493         * sysdeps/powerpc/pthreaddef.h: Likewise.
8494         * sysdeps/s390/pthreaddef.h: Likewise.
8495         * sysdeps/sh/pthreaddef.h: Likewise.
8496         * sysdeps/x86_64/pthreaddef.h: Likewise.
8497         * init.c (__pthread_initialize_minimal): Block SIGTIMER.
8498         * sysdeps/pthread/sigaction.c: Also prevent SIGTIMER handler from
8499         being changed.
8500         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Make sure
8501         SIGTIMER is not unblocked.
8502         * sysdeps/unix/sysv/linux/allocrtsig.c (current_rtmin): One more
8503         RT signal taken.
8504         * sysdeps/unix/sysv/linux/pthread_kill.c: Do not allow SIGTIMER to
8505         be send.
8506         * sysdeps/pthread/posix-timer.h (timer_id2ptr, timer_ptr2id): Just
8507         pass pointer through as ID.
8508         * sysdeps/unix/sysv/linux/bits/local_lim.h (TIMER_MAX): Removed.
8509         * sysdeps/unix/sysv/linux/kernel-posix-timers.h: New file.
8510         * sysdeps/unix/sysv/linux/timer_create.c: New file.
8511         * sysdeps/unix/sysv/linux/timer_delete.c: New file.
8512         * sysdeps/unix/sysv/linux/timer_getoverr.c: New file.
8513         * sysdeps/unix/sysv/linux/timer_gettime.c: New file.
8514         * sysdeps/unix/sysv/linux/timer_routines.c: New file.
8515         * sysdeps/unix/sysv/linux/timer_settime.c: New file.
8516         * sysdeps/unix/sysv/linux/ia64/Versions: New file.
8517         * sysdeps/unix/sysv/linux/ia64/timer_create.c: New file.
8518         * sysdeps/unix/sysv/linux/ia64/timer_delete.c: New file.
8519         * sysdeps/unix/sysv/linux/ia64/timer_getoverr.c: New file.
8520         * sysdeps/unix/sysv/linux/ia64/timer_gettime.c: New file.
8521         * sysdeps/unix/sysv/linux/ia64/timer_settime.c: New file.
8522         * sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: New file.
8523         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c: New file.
8524         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c: New file.
8525         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c: New file.
8526         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c: New file.
8527         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c: New file.
8528         * sysdeps/unix/sysv/linux/s390/s390-64/Versions: New file.
8529         * sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c: New file.
8530         * sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c: New file.
8531         * sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c: New file.
8532         * sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c: New file.
8533         * sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c: New file.
8534         * sysdeps/unix/sysv/linux/x86_64/Versions: New file.
8535         * sysdeps/unix/sysv/linux/x86_64/compat-timer.h: New file.
8536         * sysdeps/unix/sysv/linux/x86_64/timer_create.c: New file.
8537         * sysdeps/unix/sysv/linux/x86_64/timer_delete.c: New file.
8538         * sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c: New file.
8539         * sysdeps/unix/sysv/linux/x86_64/timer_gettime.c: New file.
8540         * sysdeps/unix/sysv/linux/x86_64/timer_settime.c: New file.
8541
8542         * pthreadP.h: Remove FRAME_LEFT definition.
8543         * cleanup.c (_pthread_cleanup_push): Don't check for reference to
8544         already left frame.  Programs which have this problem are not POSIX
8545         compliant.
8546         * cleanup_defer.c (_pthread_cleanup_push_defer): Likewise.
8547
8548 2003-03-24  Ulrich Drepper  <drepper@redhat.com>
8549
8550         * sysdeps/pthread/tst-timer.c: Check return values of the
8551         functions we test.
8552
8553 2003-03-23  Roland McGrath  <roland@redhat.com>
8554
8555         * tst-tls3.c (do_test) [! HAVE___THREAD]: Don't test anything.
8556         * tst-tls3mod.c: Likewise.
8557         * tst-tls1.c: Likewise.
8558         * tst-tls2.c: Likewise.
8559
8560         * tst-mutex5.c (do_test): Unlock before destroy, otherwise we invoke
8561         undefined behavior.
8562
8563         * tst-join5.c (tf1, tf2): Add a cast.
8564
8565         * Makeconfig (includes): Append -I$(..)nptl to this variable.
8566
8567         * tst-barrier2.c (do_test) [! _POSIX_THREAD_PROCESS_SHARED]:
8568         Don't test anything.
8569         * tst-cond4.c: Likewise.
8570         * tst-cond6.c: Likewise.
8571         * tst-flock2.c: Likewise.
8572         * tst-mutex4.c: Likewise.
8573         * tst-rwlock4.c: Likewise.
8574         * tst-signal1.c: Likewise.
8575         * tst-spin2.c: Likewise.
8576         * tst-cond11.c [! _POSIX_CLOCK_SELECTION]: Likewise.
8577
8578         * tst-mutex4.c: Use test-skeleton.c.
8579         * tst-spin2.c: Likewise.
8580         * tst-sysconf.c: Likewise.
8581         * tst-barrier2.c: Likewise.
8582         * tst-cond4.c: Likewise.
8583         * tst-cond6.c: Likewise.
8584         * tst-rwlock4.c: Likewise.
8585         * tst-unload.c: Likewise.
8586         * tst-flock2.c (do_test): Use return instead of exit.
8587
8588 2003-03-22  Jakub Jelinek  <jakub@redhat.com>
8589
8590         * sysdeps/unix/sysv/linux/fork.c (__fork): Add libc_hidden_def.
8591
8592 2003-03-21  Ulrich Drepper  <drepper@redhat.com>
8593
8594         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
8595         (__lll_mutex_trylock): Use atomic_compare_and_exchange_val_acq
8596         instead of __lll_compare_and_swap.
8597         * sysdeps/unix/sysv/linux/ia64/pthread_once.c (__pthread_once):
8598         Likewise.
8599         Removed definition if __lll_compare_and_swap.
8600
8601         * cancellation.c: Adjust for new form of compare&exchange macros.
8602         * cleanup_defer.c: Likewise.
8603         * init.c: Likewise.
8604         * libc-cancellation.c: Likewise.
8605         * old_pthread_cond_broadcast.c: Likewise.
8606         * old_pthread_cond_signal.c: Likewise.
8607         * old_pthread_cond_timedwait.c: Likewise.
8608         * old_pthread_cond_wait.c: Likewise.
8609         * pthread_cancel.c: Likewise.
8610         * pthread_create.c: Likewise.
8611         * pthread_detach.c: Likewise.
8612         * pthread_join.c: Likewise.
8613         * pthread_key_delete.c: Likewise.
8614         * pthread_setcancelstate.c: Likewise.
8615         * pthread_setcanceltype.c: Likewise.
8616         * pthread_timedjoin.c: Likewise.
8617         * pthread_tryjoin.c: Likewise.
8618         * sysdeps/pthread/createthread.c: Likewise.
8619
8620 2003-03-20  Ulrich Drepper  <drepper@redhat.com>
8621
8622         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Include <atomic.h>.
8623         Remove __lll_add, __lll_dec_if_positive, and __lll_test_and_set
8624         definitions.  Replace uses with calls to atomic_* functions.
8625         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
8626         * sysdeps/unix/sysv/linux/lowlevellock.c: Replace __lll_add and
8627         __lll_test_and_set calls with atomic_exchange_and_add and
8628         atomic_exchange calls respectively.
8629         * sysdeps/unix/sysv/linux/sem_post.c: Likewise.
8630         * sysdeps/unix/sysv/linux/sem_timedwait.c: Likewise.
8631         * sysdeps/unix/sysv/linux/sem_trywait.c: Likewise.
8632         * sysdeps/unix/sysv/linux/sem_wait.c: Likewise.
8633         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: Likewise.
8634         * sysdeps/unix/sysv/linux/ia64/sem_port.c: Likewise.
8635         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c: Likewise.
8636
8637         * allocatestack.c (allocate_stack): Assume atomic_exchange_and_add
8638         returns the old value.
8639
8640 2003-03-20  Martin Schwidefsky  <sky@mschwid3.boeblingen.de.ibm.com>
8641
8642         * sysdeps/s390/pthread_spin_lock.c (pthread_spin_lock): Use type
8643         int for variable OLDVAL and correct inline assembler contraint.
8644         * sysdeps/s390/pthread_spin_trylock.c (pthread_spin_trylock): Use
8645         type int for variable OLD.
8646
8647         * sysdeps/s390/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define it
8648         only for s390-32.
8649         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
8650         (SINGLE_THREAD_P): Use global variable __local_multiple_threads
8651         instead of multiple_threads field in the TCB.
8652
8653 2003-03-19  Ulrich Drepper  <drepper@redhat.com>
8654
8655         * sysdeps/i386/i686/bits/atomic.h: Removed.
8656         * sysdeps/i386/i586/bits/atomic.h: Removed.
8657         * sysdeps/i386/i486/bits/atomic.h: Removed.  Moved to glibc.
8658         * sysdeps/x86_64/bits/atomic.h: Removed.  Moved to glibc.
8659         * sysdeps/s390/bits/atomic.h: Removed.  Moved to glibc.
8660         * sysdeps/sh/bits/atomic.h: Removed.  Moved to glibc.
8661         * sysdeps/ia64/bits/atomic.h: Removed.  Moved to glibc.
8662         * sysdeps/powerpc/bits/atomic.h: Removed.  Moved to glibc.
8663         * atomic.h: Removed.  Moved to glibc.
8664
8665         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Add
8666         support for clock selection.
8667
8668         * sysdeps/pthread/pthread_cond_broadcast.c: Release lock before
8669         signalling waiters.
8670
8671 2003-03-18  Roland McGrath  <roland@redhat.com>
8672
8673         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_test_and_set):
8674         Add __lll_rel_instr first.  Add memory clobber.
8675         (lll_mutex_unlock): Use __lll_test_and_set.
8676         From Paul Mackerras <paulus@samba.org>.
8677
8678         * sysdeps/powerpc/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define
8679         unconditionally.
8680         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
8681         (SINGLE_THREAD_P):  Add `header.' prefix.
8682         From Paul Mackerras <paulus@samba.org>.
8683
8684         * Versions (libpthread: GLIBC_2.3.2): Move pthread_tryjoin_np and
8685         pthread_timedjoin_np to ...
8686         (libpthread: GLIBC_2.3.3): ... here.
8687         (libpthread: GLIBC_2.2): Move pthread_barrierattr_getpshared there too.
8688
8689         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
8690         Avoid shadowing VAL variable.
8691
8692         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_test_and_set):
8693         New macro.
8694
8695 2003-03-18  Ulrich Drepper  <drepper@redhat.com>
8696
8697         * Makefile (tests): Add tst-cond11.
8698         * tst-cond11.c: New file.
8699
8700         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Reorder
8701         struct passed to cleanup handler to eliminate one more
8702         instruction.
8703         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
8704
8705         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
8706         (pthrad_cond_t): Replace __unused field with __clock.
8707
8708         * sysdeps/pthread/pthread_cond_wait.c: Release condvar lock before
8709         waken all waiters in cleanup handler.
8710         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
8711         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
8712
8713         * pthread_condattr_getclock.c: New file.
8714         * pthread_condattr_setclock.c: New file.
8715         * sysdeps/pthread/pthread.h: Declare these new functions.
8716         * Versions [GLIBC_2.3.3] (libpthread): Add the new functions.
8717         * Makefile (libpthread-routines): Add the new functions.
8718         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_condattr):
8719         Renamed field to value.  Document use of the bits.
8720         * pthread_condattr_getpshared.c: Adjust for struct pthread_condattr
8721         change.
8722         * pthread_condattr_setpshared.c: Likewise.
8723         * pthread_cond_init.c (__pthread_cond_init): Initialized __clock field.
8724         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add cond_clock symbol.
8725         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
8726         Add __clock field.
8727         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
8728         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
8729         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
8730         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
8731         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
8732         Implement clock selection.
8733         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
8734         * pthread-errnos.sym: Add ENOSYS.
8735         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
8736         _POSIX_CLOCK_SELECTION.
8737         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
8738
8739         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Remove
8740         invalid .size directive.
8741
8742 2003-03-17  Roland McGrath  <roland@redhat.com>
8743
8744         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait):
8745         Formatting tweaks.
8746
8747 2003-03-17  Ulrich Drepper  <drepper@redhat.com>
8748
8749         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: Use __builtin_expect.
8750         Use __lll_add instead of spelling it out.  Use protected symbol names.
8751         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Use __builtin_expect.
8752         Use __lll_add.
8753         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_compare_and_swap):
8754         Renamed from lll_compare_and_swap.  Use new name where necessary.
8755         (__lll_add): Defined.
8756         (__lll_dec_if_positive): Defined.
8757         (__lll_test_and_set): Defined.
8758         * sysdeps/ia64/pthread_spin_init.c: Removed.
8759         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: Removed.
8760         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: Removed.
8761         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: Removed.
8762         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: Removed.
8763         * sysdeps/unix/sysv/linux/ia64/libc-lowlevellock.c: Removed.
8764         * sysdeps/unix/sysv/linux/ia64/libc-lowlevelmutex.c: Removed.
8765         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Removed.
8766         * sysdeps/ia64/bits/atomic.h: Add __builtin_expect where appropriate.
8767         * sysdeps/ia64/pthread_spin_unlock.c (pthread_spin_unlock): Use
8768         __sync_lock_release_si.
8769         Patch by Jakub Jelinek.
8770
8771         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
8772         Fix timeout handling.
8773         (__lll_timedwait_tid): Likewise.
8774         (lll_unlock_wake_cb): Wake up other waiters if necessary.
8775         Patch by Jakub Jelinek.
8776
8777         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Pretty printing.
8778
8779 2003-03-17  Roland McGrath  <roland@redhat.com>
8780
8781         PowerPC port contributed by Paul Mackerras <paulus@samba.org>.
8782         * sysdeps/pthread/pthread_spin_init.c: New file.
8783         * sysdeps/pthread/pthread_spin_unlock.c: New file.
8784         * sysdeps/powerpc/Makefile: New file.
8785         * sysdeps/powerpc/pthread_spin_lock.c: New file.
8786         * sysdeps/powerpc/pthread_spin_trylock.c: New file.
8787         * sysdeps/powerpc/pthreaddef.h: New file.
8788         * sysdeps/powerpc/tcb-offsets.sym: New file.
8789         * sysdeps/powerpc/td_ta_map_lwp2thr.c: New file.
8790         * sysdeps/powerpc/tls.h: New file.
8791         * sysdeps/powerpc/bits/atomic.h: New file.
8792         * sysdeps/unix/sysv/linux/libc-lowlevelmutex.c: New file.
8793         * sysdeps/unix/sysv/linux/libc-lowlevellock.c: New file.
8794         * sysdeps/unix/sysv/linux/lowlevellock.c: New file.
8795
8796         * sysdeps/unix/sysv/linux/lowlevelmutex.c: New file.
8797         * sysdeps/unix/sysv/linux/sem_post.c: New file.
8798         * sysdeps/unix/sysv/linux/sem_timedwait.c: New file.
8799         * sysdeps/unix/sysv/linux/sem_trywait.c: New file.
8800         * sysdeps/unix/sysv/linux/sem_wait.c: New file.
8801         * sysdeps/unix/sysv/linux/powerpc/Makefile: New file.
8802         * sysdeps/unix/sysv/linux/powerpc/createthread.c: New file.
8803         * sysdeps/unix/sysv/linux/powerpc/fork.c: New file.
8804         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: New file.
8805         * sysdeps/unix/sysv/linux/powerpc/pt-vfork.S: New file.
8806         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c: New file.
8807         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: New file.
8808         * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: New file.
8809         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: New file.
8810         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: New file.
8811
8812         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: Use __gettimeofday,
8813         not gettimeofday.
8814         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: Likewise.
8815         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Likewise.
8816         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Likewise.
8817         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: Likewise.
8818         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
8819
8820 2003-03-17  Ulrich Drepper  <drepper@redhat.com>
8821
8822         * sysdeps/pthread/pthread_cond_wait.c: Correct exit criteria.
8823         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
8824         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
8825         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
8826         Patch by Ewald Snel <ewald@rambo.its.tudelft.nl>.
8827
8828 2003-03-16  Roland McGrath  <roland@redhat.com>
8829
8830         * tst-fork4.c: Include <string.h>.
8831         * tst-signal2.c: Likewise.
8832         * tst-mutex5.c (do_test): exit -> return.
8833         * tst-mutex2.c: Include <stdlib.h>.
8834
8835 2003-03-16  Ulrich Drepper  <drepper@redhat.com>
8836
8837         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
8838         (__lll_mutex_timedlock_wait): Correct expected value after
8839         spurious wakeup.  Otherwise we would never wait again.
8840
8841         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Work around red
8842         zone versus inline asm stupidity.  Use correct instructions.
8843
8844         * tst-rwlock6.c: Add some more status output.
8845
8846 2003-03-15  Roland McGrath  <roland@redhat.com>
8847
8848         * sysdeps/pthread/configure.in: New file.
8849         * sysdeps/pthread/configure: New file (generated).
8850
8851 2003-03-15  Ulrich Drepper  <drepper@redhat.com>
8852
8853         * allocatestack.c (allocate_stack): Store the exact stack size of
8854         user allocated stacks.
8855
8856 2003-03-15  Jakub Jelinek  <jakub@redhat.com>
8857
8858         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
8859         (SINGLE_THREAD): Use `header' prefix instead of `header.data'.
8860         * sysdeps/sh/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Likewise.
8861         * sysdeps/sh/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define.
8862         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (SINGLE_THREAD_P):
8863         Use `header.' prefix.
8864         * sysdeps/ia64/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Likewise.
8865
8866 2003-03-15  Ulrich Drepper  <drepper@redhat.com>
8867
8868         * sysdeps/x86_64/pthreaddef.h (CURRENT_STACK_FRAME): Don't use
8869         __builtin_frame_address, use stack pointer.
8870
8871         * sysdeps/unix/sysv/linux/jmp-unwind.c: Use CURRENT_STACK_FRAME
8872         instead of __builtin_frame_pointer.
8873
8874 2003-03-14  Ulrich Drepper  <drepper@redhat.com>
8875
8876         * tst-basic1.c (do_test): Add cast to avoid warning.
8877         * tst-basic2.c (do_test): Likewise.
8878
8879         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Use correct
8880         amount of stack correction.
8881
8882         * tst-fork4.c: Use test-skeleton.c.
8883
8884 2003-03-14  Roland McGrath  <roland@redhat.com>
8885
8886         * init.c: Fix typo "#eli" for "#else".
8887
8888 2003-03-14  Steven Munroe  <sjmunroe@us.ibm.com>
8889
8890         * allocatestack.c (__stack_user): Use hidden_data_def.
8891         * pthread_create.c (__pthread_keys): Likewise.
8892
8893         * init.c [__powerpc__] (__NR_set_tid_address): Define it.
8894
8895 2003-03-14  Roland McGrath  <roland@redhat.com>
8896
8897         * tst-fork4.c: New file.
8898         * Makefile (tests): Add it.
8899
8900         * descr.h (struct pthread): Move the union out of [!TLS_DTV_AT_TP], so
8901         we always define the padding space.
8902         [!TLS_DTV_AT_TP]: Give tcbhead_t field a name, `header', since GCC
8903         stopped supporting its own extensions fully.
8904         [TLS_MULTIPLE_THREADS_IN_TCB]: Put `multiple_threads' inside a wrapper
8905         struct also called `header', so `header.multiple_threads' is the field
8906         name to use on all machines.
8907         * allocatestack.c (allocate_stack): Use `header.' prefix.
8908         * sysdeps/pthread/createthread.c (create_thread): Likewise.
8909         * pthread_create.c (__pthread_create_2_1): Likewise.
8910         * sysdeps/i386/tls.h (INSTALL_NEW_DTV, THREAD_DTV): Likewise.
8911         (THREAD_SELF): Likewise.
8912         * sysdeps/x86_64/tls.h: Likewise.
8913         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
8914         (SINGLE_THREAD_P): Likewise.
8915         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
8916         (SINGLE_THREAD_P): Likewise.
8917         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
8918         (SINGLE_THREAD_P): Likewise.
8919
8920         * sysdeps/s390/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Use REGS[18]
8921         value directly.
8922
8923 2003-03-14  Ulrich Drepper  <drepper@redhat.com>
8924
8925         * pthread_create.c (start_thread): Use CALL_THREAD_FCT if defined.
8926         * sysdeps/i386/tls.h: Define CALL_THREAD_FCT.
8927
8928         * pthread_create.c (start_thread): setjmp is expected to return 0.
8929
8930         * sysdeps/x86_64/tls.h (THREAD_GETMEM): Mark asms volatile.
8931         (THREAD_GETMEM_NC): Likewise.
8932
8933 2003-03-13  Ulrich Drepper  <drepper@redhat.com>
8934
8935         * allocatestack.c (allocate_stack): If MULTI_PAGE_ALIASING is defined
8936         and the size of the stack which must be allocated is a multiple,
8937         allocate one more page.
8938         * sysdeps/i386/i686/Makefile: Don't define COLORING_INCREMENT, but
8939         MULTI_PAGE_ALIASING.
8940
8941 2003-03-13  Roland McGrath  <roland@redhat.com>
8942
8943         * pthread_create.c (start_thread): Set EXITING_BIT after the
8944         event-reporting (and destructors), not before.
8945
8946 2003-03-13  Jakub Jelinek  <jakub@redhat.com>
8947
8948         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_timed_wait,
8949         lll_futex_wake): Declare register variables as long int instead of
8950         unsigned long int.  Patch by Ian Wienand <ianw@gelato.unsw.edu.au>.
8951         Make syscall arguments clobbered by the syscall.
8952         (lll_futex_wait): Define using lll_futex_timed_wait.
8953
8954         * sysdeps/ia64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Cast regs[13]
8955         to void *.
8956
8957         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Only declare and set
8958         PPID if [! NDEBUG].
8959
8960         * allocatestack.c (nptl_ncreated): Only declare if
8961         COLORING_INCREMENT != 0.
8962
8963         * pthreadP.h (__pthread_enable_asynccancel_2): New prototype.
8964         (__libc_enable_asynccancel_2): Remove prototype.
8965
8966         * sysdeps/unix/sysv/linux/ia64/fork.c (ARCH_FORK): Swap ptid and
8967         ctid to match kernel.
8968
8969 2003-03-12  Ulrich Drepper  <drepper@redhat.com>
8970
8971         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add
8972         libc_multiple_threads.
8973         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Move definition of
8974         __libc_multiple_threads to...
8975         * sysdeps/unix/sysv/linux/libc_multiple_threads.c: ...here.  New file.
8976
8977         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Remove unnecessary
8978         versioning.
8979         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
8980         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
8981
8982         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S
8983         (__pthread_once_internal): Define.
8984
8985         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Use shlib-compat.h
8986         macros instead of .symver directly.
8987         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
8988         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
8989
8990         * sysdeps/x86_64/tls.h [__ASSEMBLER__]: Include tcb-offsets.h.
8991         * sysdeps/x86_64/tcb-offsets.sym: New file.
8992         * sysdeps/x86_64/Makefile: New file.
8993
8994         * sysdeps/i386/tcb-offsets.sym: Add SELF.
8995         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Use SELF
8996         to access own pthread_t in TCB.
8997         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
8998         Likewise.
8999         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
9000         Likewise.
9001         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
9002
9003 2003-03-12  Roland McGrath  <roland@redhat.com>
9004
9005         * pthread-errnos.sym: New file.
9006         * Makefile (gen-as-const-headers): New variable, list that file.
9007         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Include generated
9008         header <pthread-errnos.h> instead of defining errno values here.
9009         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
9010         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
9011         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
9012         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
9013         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
9014         Likewise.
9015         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
9016         Likewise.
9017         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
9018         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
9019         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
9020         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
9021         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
9022         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
9023         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
9024         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
9025         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
9026         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise.
9027         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
9028         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Likewise.
9029         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
9030         * sysdeps/unix/sysv/linux/sh/sem_post.S: Likewise.
9031         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
9032         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
9033         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
9034         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
9035         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
9036         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
9037         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
9038         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Likewise.
9039         * sysdeps/i386/i486/pthread_spin_trylock.S: Likewise.
9040         * sysdeps/x86_64/pthread_spin_trylock.S: Likewise.
9041         * sysdeps/sh/pthread_spin_trylock.S: Likewise.
9042         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
9043         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
9044
9045         * sysdeps/unix/sysv/linux/fork.c: Add an assert to check that
9046         CLONE_CHILD_SETTID worked.
9047
9048 2003-03-12  Ulrich Drepper  <drepper@redhat.com>
9049
9050         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: New
9051         file.
9052         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S: New
9053         file.
9054
9055         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
9056         (pthread_cond_t): Add padding.
9057
9058         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: New file.
9059         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: New file.
9060         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: New file.
9061
9062         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
9063         (__pthread_rwlock_timedwrlock): Add missing opcode suffix.
9064         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
9065         (__pthread_rwlock_timedrdlock): Likewise.
9066         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
9067         (__pthread_rwlock_wrlock): Likewise.
9068         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
9069         (__pthread_rwlock_rdlock): Likewise.
9070
9071         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: New file.
9072
9073         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Return
9074         result of lock re-get if it fails.
9075
9076 2003-03-11  Ulrich Drepper  <drepper@redhat.com>
9077
9078         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Fix asm syntax.
9079         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
9080         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise.
9081         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
9082         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
9083         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
9084         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
9085         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
9086         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
9087         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
9088
9089         * sysdeps/x86_64/tls.h (THREAD_SELF, THREAD_GETMEM, THREAD_GETMEM_NC,
9090         THREAD_SETMEM, THREAD_SETMEM_NC): Correct asm syntax.
9091
9092         * allocatestack.c [! TLS_MULTIPLE_THREADS_IN_TCB] (allocate_stack):
9093         Initialize *__libc_multiple_threads_ptr not __libc_multiple_threads.
9094         * sysdeps/pthread/createthread.c [! TLS_MULTIPLE_THREADS_IN_TCB]
9095         (create_thread): Likewise.
9096         Define __pthread_multiple_threads and __libc_multiple_threads_ptr.
9097         * init.c (__pthread_initialize_minimal_internal): Initialize
9098         __libc_multiple_threads_ptr if necessary.
9099         * pthreadP.h: Adjust prototype for __libc_pthread_init.  Declare
9100         __pthread_multiple_threads and __libc_multiple_threads_ptr.
9101         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Define
9102         __libc_multiple_threads.
9103         (__libc_pthread_init): Return pointer to __libc_pthread_init if
9104         necessary.
9105
9106         * sysdeps/i386/tls.h (THREAD_SETMEM): Fix one-byte variant.
9107         (THREAD_SETMEM_NC): Likewise.
9108
9109         * sysdeps/x86_64/pthread_spin_trylock.c: Removed.
9110         * sysdeps/x86_64/pthread_spin_trylock.S: New file.
9111         * sysdeps/x86_64/pthread_spin_unlock.c: Removed.
9112         * sysdeps/x86_64/pthread_spin_unlock.S: New file.
9113
9114         * sysdeps/i386/i486/pthread_spin_trylock.S (pthread_spin_trylock):
9115         Eliminate one entire instruction.
9116
9117         * cancellation.c (__pthread_enable_asynccancel_2): New function.
9118         * pthreadP.h: Declare __pthread_enable_asynccancel_2.
9119         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
9120         (__pthread_cond_timedwait): Use __pthread_enable_asynccancel_2
9121         instead of __pthread_enable_asynccancel.
9122         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
9123         (__pthread_cond_wait): Likewise.
9124         * sysdeps/pthread/pthread_cond_timedwait.c
9125         (__pthread_cond_timedwait): Likewise.
9126         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
9127
9128         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
9129         (__condvar_cleanup): Wake up all waiters in case we got signaled
9130         after being woken up but before disabling asynchronous
9131         cancellation.
9132         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise.
9133         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
9134         (__condvar_cleanup): Likewise.
9135
9136         * init.c (__NR_set_tid_address): If already defined, don't redefine.
9137         Make it an error if architecture has no #if case.  Add x86-64.
9138
9139         * sysdeps/unix/sysv/linux/x86_64/Makefile: Add flags for
9140         pt-initfini.s generation.
9141
9142         * sysdeps/x86_64/tls.h: Include <asm/prctl.h>.
9143         (TLS_INIT_TP): Fix typo.
9144
9145 2003-03-11  Jakub Jelinek  <jakub@redhat.com>
9146
9147         * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Swap 2nd and
9148         3rd argument of __arch_compare_and_exchange_{32,64}_val_acq.
9149
9150         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Include semaphore.h.
9151         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Likewise.
9152         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: Likewise.
9153         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: Likewise.
9154         * sysdeps/unix/sysv/linux/s390/sem_post.c: Likewise.
9155         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
9156         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Likewise.
9157         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Likewise.
9158
9159 2003-03-11  Ulrich Drepper  <drepper@redhat.com>
9160
9161         * sysdeps/pthread/pthread_cond_timedwait.c
9162         (__pthread_cond_timedwait): Return the result of the final
9163         locking.  If it succeeds, the regular function return value.
9164
9165         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait):
9166         Return result of the final locking.
9167         * version.c (__nptl_main): Work around problems with the strange
9168         INTERNAL_SYSCALL macro on ppc32.
9169         * init.c (__pthread_initialize_minimal_internal): Unblock
9170         SIGCANCEL in case the parent blocked it.
9171         Reported by Paul Mackerras <paulus@samba.org>.
9172
9173         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: New file.
9174         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: New file.
9175         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: New file.
9176
9177 2003-03-11  Jakub Jelinek  <jakub@redhat.com>
9178
9179         * sysdeps/pthread/pthread_cond_timedwait.c
9180         (__pthread_cond_timedwait): Unlock and fail if
9181         __pthread_mutex_unlock_internal failed.
9182
9183         * sysdeps/pthread/createthread.c (ARCH_CLONE): Define if not defined.
9184         (create_thread): Only assert PD->tcb != NULL under [TLS_TCB_AT_TP].
9185         Use ARCH_CLONE.
9186         * allocatestack.c (ALLOCATE_STACK_PARMS): New macro.
9187         [NEED_SEPARATE_REGISTER_STACK] (STACK_VARIABLES,
9188         STACK_VARIABLES_ARGS, STACK_VARIABLES_PARMS, ALLOCATE_STACK_PARMS,
9189         ALLOCATE_STACK): New macros.
9190         (TLS_TPADJ): New macro.
9191         (get_cached_stack, queue_stack, __deallocate_stack): Use TLS_TPADJ.
9192         (allocate_stack): Handle TLS_DTV_AT_TP and
9193         NEED_SEPARATE_REGISTER_STACK.  Use TLS_TPADJ.
9194         * pthread_create.c (__pthread_create_2_1) [! TLS_TCB_AT_TP]:
9195         Don't set PD->self.
9196         * init.c [__ia64__] (__NR_set_tid_address): Define.
9197
9198         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: New file.
9199         * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: New file.
9200         * sysdeps/unix/sysv/linux/ia64/fork.c: New file.
9201         * sysdeps/unix/sysv/linux/ia64/createthread.c: New file.
9202         * sysdeps/unix/sysv/linux/ia64/libc-lowlevellock.c: New file.
9203         * sysdeps/unix/sysv/linux/ia64/libc-lowlevelmutex.c: New file.
9204         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: New file.
9205         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: New file.
9206         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: New file.
9207         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: New file.
9208         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: New file.
9209         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: New file.
9210         * sysdeps/unix/sysv/linux/ia64/sem_post.c: New file.
9211         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: New file.
9212         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: New file.
9213         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: New file.
9214         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: New file.
9215         * sysdeps/ia64/bits/atomic.h: New file.
9216         * sysdeps/ia64/Makefile: New file.
9217         * sysdeps/ia64/pthread_spin_init.c: New file.
9218         * sysdeps/ia64/pthread_spin_lock.c: New file.
9219         * sysdeps/ia64/pthread_spin_trylock.c: New file.
9220         * sysdeps/ia64/pthread_spin_unlock.c: New file.
9221         * sysdeps/ia64/pthreaddef.h: New file.
9222         * sysdeps/ia64/tcb-offsets.sym: New file.
9223         * sysdeps/ia64/td_ta_map_lwp2thr.c: New file.
9224         * sysdeps/ia64/tls.h: New file.
9225
9226         * sysdeps/s390/pthreaddef.h (__exit_thread_inline): Pass 1 argument
9227         to syscall instead of no arguments.
9228
9229 2003-03-10  Ulrich Drepper  <drepper@redhat.com>
9230
9231         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: New file.
9232         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: New file.
9233         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: New file.
9234         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: New file.
9235
9236         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Fix error value in
9237         unused code.
9238
9239         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: New file
9240
9241         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
9242         lowlevelbarrier.sym.
9243         * sysdeps/unix/sysv/linux/lowlevelbarrier.sym: New file.
9244         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S:
9245         Include lowlevelbarrier.h and don't define offsets locally.
9246         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Likewise.
9247
9248         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
9249         (__lll_mutex_lock_wait): Reverse order of first two parameters.
9250         (__lll_mutex_timedlock_wait): Likewise.
9251         (lll_mutex_lock): Adjust asm for that.
9252         (lll_mutex_timedlock): Likewise.  Mark cx, cc, r10 as clobbered.
9253         (lll_lock): Adjust asm for operand order change.
9254         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: New file.
9255         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevelmutex.S: New file.
9256
9257         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (__lll_lock_wait):
9258         Reverse order of parameters.
9259         (__lll_timedwait_tid): Remove regparms attribute.
9260         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: New file.
9261         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: New file.
9262
9263         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
9264         (__lll_timedwait_tid): Remove one unnecessary instruction.
9265
9266         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Define
9267         __lll_mutex_timedlock_wait only for NOT_IN_libc.
9268         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Include
9269         lowlevelmutex.S.
9270
9271         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define
9272         lll_unlock_wake_cb, __lll_wait_tid, and __lll_timedwait_tid only
9273         for NOT_IN_libc.
9274         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Include
9275         lowlevellock.S.
9276
9277         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Don't define
9278         LOCK is already defined.  Don't define __lll_mutex_timedlock_wait
9279         for libc.so.
9280         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Only
9281         define LOCK here (if UP is not defined).  The actual code is in
9282         lowlevelmutex.S.
9283
9284         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Don't define
9285         LOCK is already defined.  Don't define lll_unlock_wake_cb and
9286         __lll_timedwait_tid for libc.so.
9287         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Only
9288         define LOCK here (if UP is not defined).  The actual code is in
9289         lowlevellock.S.
9290
9291         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Not needed anymore.
9292         * sysdeps/unix/sysv/linux/s390/lowlevelsem.h: Likewise.
9293         * sysdeps/unix/sysv/linux/s390/sem_post.c: Include lowlevellock.h
9294         instead of lowlevelsem.h.
9295         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
9296         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Likewise.
9297         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Likewise.
9298
9299         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
9300         lowlevelrwlock.sym.
9301         * sysdeps/unix/sysv/linux/lowlevelrwlock.sym: New file.
9302         * sysdeps/unix/sysv/linux/i386/lowlevelrwlock.h: Removed.
9303         * sysdeps/unix/sysv/linux/sh/lowlevelrwlock.h: Removed.
9304
9305         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_trylock): Fix
9306         register loading.
9307         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_trylock): Undo
9308         last changed.  D'oh.
9309
9310         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: New file.
9311
9312         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove declaration
9313         of __libc_locking_needed.
9314         (lll_trylock): Initialize %eax to zero.
9315
9316         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Update
9317         pthread_cond_t definition.
9318
9319 2003-03-10  Roland McGrath  <roland@redhat.com>
9320
9321         * sysdeps/unix/sysv/linux/lowlevelcond.sym: New file.
9322         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add it.
9323         * sysdeps/unix/sysv/linux/sh/lowlevelcond.h: File removed.
9324         * sysdeps/unix/sysv/linux/i386/lowlevelcond.h: Likewise.
9325         * sysdeps/unix/sysv/linux/x86_64/lowlevelcond.h: Likewise.
9326
9327         * allocatestack.c (allocate_stack) [!TLS_MULTIPLE_THREADS_IN_TCB]:
9328         Instead of setting PD->multiple_threads, set globals
9329         __pthread_multiple_threads and __libc_multiple_threads.
9330         * sysdeps/pthread/createthread.c (create_thread): Likewise.
9331         * sysdeps/i386/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define it.
9332         * sysdeps/s390/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Likewise.
9333
9334         * descr.h (struct pthread): Conditionalize first member on
9335         [!TLS_DTV_AT_TP].  Replace the `header' member with an anonymous union
9336         containing an anonymous tcbhead_t.  Move `list' member out.
9337         [TLS_MULTIPLE_THREADS_IN_TCB]: Define a `multiple_threads' member.
9338         * allocatestack.c: Remove use of `header.data.' prefix.
9339         * pthread_create.c: Likewise.
9340         * init.c (__pthread_initialize_minimal_internal): Likewise.
9341         * sysdeps/pthread/createthread.c (create_thread): Likewise.
9342         * sysdeps/i386/tls.h (INSTALL_DTV): Add parens.
9343         (THREAD_SELF, THREAD_DTV, INSTALL_NEW_DTV): No `header.data.' prefix.
9344         * sysdeps/x86_64/tls.h: Likewise.
9345         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
9346         (SINGLE_THREAD_P): Likewise.
9347         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
9348         (SINGLE_THREAD_P): Likewise.
9349         * sysdeps/i386/tls.h (tcbhead_t): Remove `list' member.
9350         * sysdeps/s390/tls.h (tcbhead_t): Likewise.
9351
9352 2003-03-09  Ulrich Drepper  <drepper@redhat.com>
9353
9354         * sysdeps/unix/sysv/linux/x86_64/lowlevelcond.h: New file.
9355
9356         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: New file.
9357         * sysdeps/unix/sysv/linux/x86_64/fork.c: New file.
9358
9359         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Fix many
9360         leftovers from the ia32 code.
9361
9362         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Remove unneccessary
9363         memory load.
9364         (clear_once_control): Don't load %esi.
9365
9366         * sysdeps/x86_64/tls.h: Remove all traces of segment descriptor
9367         handling.
9368
9369         * sysdeps/unix/sysv/linux/x86_64/fork.c: New file.
9370
9371         * sysdeps/unix/sysv/linux/s390/createthread.c: Moved to...
9372         * sysdeps/unix/sysv/linux/createthread.c: ...here.
9373
9374         * Makefile (tests): Add tst-cond10.
9375         * tst-cond10.c: New file.
9376
9377 2003-03-08  Ulrich Drepper  <drepper@redhat.com>
9378
9379         * tst-tls2.c (do_test): Add TEMP_FAILURE_RETRY around sem_wait call.
9380         * tst-signal3.c (do_test): Likewise.
9381         * tst-sem5.c (do_test): Likewise.
9382         * tst-kill6.c (do_test): Likewise.
9383         * tst-tls3.c (do_test): Likewise.  Include <errno.h>.
9384
9385         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use add/sub instead
9386         of inc/dec.
9387         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Likewise.
9388         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise
9389         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
9390         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
9391         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
9392         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
9393         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
9394         Likewise.
9395         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
9396         Likewise.
9397         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
9398         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
9399         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
9400         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
9401         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
9402         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Likewise.
9403         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
9404         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
9405
9406         * allocatestack.c (allocate_stack): If mprotect() fails free the
9407         TLS memory.
9408
9409 2003-03-07  Ulrich Drepper  <drepper@redhat.com>
9410
9411         * sysdeps/i386/i486/bits/atomic.h: Fix a few unused definitions.
9412
9413         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove all trace of
9414         lll_wake_tid.  This was used only to work around kernel limits in
9415         the early days.
9416         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
9417         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Likewise.
9418         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
9419         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
9420
9421         * init.c (__static_tls_align_m1): Renamed from __static_tls_align.
9422         (__pthread_initialize_minimal_internal): Change initialization of
9423         __static_tls_align_m1 appropriately.
9424         * pthreadP.h (__static_tls_align_m1): Renamed from
9425         __static_tls_align.
9426         * allocatestack.c (allocate_stack): Use __static_tls_align_m1
9427         instead of __static_tls_align-1.
9428
9429 2003-03-04  Ulrich Drepper  <drepper@redhat.com>
9430
9431         * sysdeps/unix/sysv/linux/x86_64/Makefile: New file.
9432
9433         * pthread_create.c: Define __pthread_keys using nocommon
9434         attribute, not by placing it explicitly in bss.
9435         Remove DEFINE_DEALLOC definition.  Not needed anymore.
9436
9437         * allocatestack.c: Define ARCH_MAP_FLAGS if not already defined.
9438         Use it in mmap call to allocate stacks.
9439
9440         * sysdeps/pthread/createthread.c (create_thread): Fix comment.
9441
9442         * pthread_create.c (start_thread): Use THREAD_SETMEM to store
9443         result of the thread function.
9444
9445 2003-03-03  Ulrich Drepper  <drepper@redhat.com>
9446
9447         * sysdeps/unix/sysv/linux/s390/dl-sysdep.h: Removed.  The generic
9448         version is just fine.
9449
9450         * sysdeps/unix/sysv/linux/libc_pthread_init.c
9451         (__pthread_child_handler): Renamed from pthread_child_handler,
9452         exported, and marked hidden.  Change all users.
9453         * sysdeps/unix/sysv/linux/register-atfork.c (free_mem): Do not
9454         free __pthread_child_handler from child list.
9455
9456 2003-03-03  Martin Schwidefsky  <schwidefsky@de.ibm.com>
9457
9458         * atomic.h (atomic_exchange_and_add): Return newval, not oldval.
9459
9460         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
9461         Fix handling of cancellation and failing pthread_mutex_unlock call.
9462         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise.
9463         (__pthread_cond_wait): Likewise.
9464
9465         * sysdeps/pthread/pthread_rwlock_timedrdlock.c
9466         (pthread_rwlock_timedrdlock): Fix clobber of result variable by
9467         lll_futex_timed_wait call.
9468         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
9469         (pthread_rwlock_timedwrlock): Likewise.
9470
9471         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c (___lll_lock):
9472         Don't define lll_unlock_wake_cb and ___lll_timedwait_tid in libc.so.
9473         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Remove XXX comments.
9474
9475         * sysdeps/unix/sysv/linux/s390/sem_post.c (__new_sem_post): Fix
9476         check of lll_futex_wake return value.
9477
9478 2003-03-03  Roland McGrath  <roland@redhat.com>
9479
9480         * forward.c: Fix typo in __pthread_attr_init_2_0 compat_symbol decl.
9481
9482         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
9483         Argument to ptr___pthread_cleanup_upto is __jmp_buf, not jmp_buf.
9484         * sysdeps/unix/sysv/linux/jmp-unwind.c: Likewise.
9485
9486 2003-03-02  Ulrich Drepper  <drepper@redhat.com>
9487
9488         * sysdeps/pthread/timer_create.c (timer_create): Return correct
9489         error for CPU clocks.
9490
9491         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
9492         _POSIX_MONOTONIC_CLOCK.
9493         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
9494
9495         * tst-cancel4.c (tf_sleep): Lower sleep time a bit to not upset
9496         recent kernels.
9497
9498 2003-03-01  Ulrich Drepper  <drepper@redhat.com>
9499
9500         * descr.h (struct pthread): Move cleanup field to the front.
9501
9502 2003-03-01  Roland McGrath  <roland@redhat.com>
9503
9504         * sem_open.c (sem_open): Braino fix.
9505
9506 2003-03-01  Ulrich Drepper  <drepper@redhat.com>
9507
9508         * sysdeps/i386/tcb-offsets.sym: Add CLEANUP and CLEANUP_PREV.
9509         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Inline
9510         __pthread_cleanup_pop functionality.
9511         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
9512
9513         * descr.h (struct pthread): Move tid field to the front now that
9514         it is often used.
9515
9516         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S
9517         (__lll_mutex_timedlock_wait): Remove.
9518         (__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
9519         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
9520         (__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
9521         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
9522         (lll_unlock_wake_cb): Don't save and restore %esi.
9523         (__lll_unlock_wake): Add alignment.  Don't save, load, and restore
9524         %esi.
9525         (__lll_timedwait_tid): Add alignment.
9526         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
9527         (__lll_unlock_wake): Add alignment.  Don't save, load, and restore
9528         %esi.
9529         (__lll_timedwait_tid): Removed.
9530         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
9531         (__pthread_cond_broadcast): Don't save, load, and restore %esi.
9532         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
9533         (pthread_barrier_wait): Don't save, load, and restore %esi for
9534         last thread.
9535         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
9536         (__pthread_cond_signal): Don't save, load, and restore %esi.
9537         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
9538         (__pthread_rwlock_unlock): Don't save, load, and restore %esi.
9539         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
9540         Don't save, load, and restore %esi.
9541
9542 2003-02-27  Ulrich Drepper  <drepper@redhat.com>
9543
9544         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S:
9545         Release lock before waking up the waiters.
9546
9547         * tst-exit1.c (do_test): Don't start more than one thread in parallel.
9548
9549         * tst-rwlock9.c (writer_thread): Correct adding TIMEOUT.
9550         (reader_thread): Likewise.
9551
9552         * sysdeps/pthread/pthread_rwlock_unlock.c
9553         (__pthread_rwlock_unlock): Release internal lock early.  Don't try
9554         to wake up readers if there are none.
9555
9556         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S:
9557         Release internal lock before wake threads.
9558
9559 2003-02-26  Ulrich Drepper  <drepper@redhat.com>
9560
9561         * Makefile (tests): Add tst-rwlock10 and tst-rwlock11.
9562         * tst-rwlock8.c: Initialize lock with INIT.  Allow INIT to be
9563         predefined.
9564         * tst-rwlock9.c: Likewise.
9565         * tst-rwlock10.c: New file.
9566         * tst-rwlock11.c: New file.
9567
9568         * Makefile (tests): Add tst-dlsym1.
9569         * tst-dlsym1.c: New file.
9570
9571         * init.c (__pthread_initialize_minimal_internal): Set
9572         GL(dl_error_catch_tsd) to __libc_dl_error_tsd.
9573         * Versions (libc:GLIBC_PRIVATE): Export __libc_dl_error_tsd.
9574
9575 2003-02-24  Ulrich Drepper  <drepper@redhat.com>
9576
9577         * sem_open.c (sem_open): Fix handling of O_CREAT without O_EXCL.
9578
9579         * tst-cond2.c: Fix sychronization with child.
9580
9581         * tst-rwlock8.c (reader_thread): Remove unused variable.
9582
9583         * Makefile: Add rules to build and run tst-tls3.
9584         * tst-tls3.c: New file.
9585         * tst-tls3mod.c: New file.
9586
9587         * Makefile (tests): Add tst-rwlock8 and tst-rwlock9.
9588         * tst-rwlock8.c: New file.
9589         * tst-rwlock9.c: New file.
9590         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Fix
9591         complete broken rwlock implementation.
9592         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
9593         Likewise.
9594         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
9595         Likewise.
9596         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
9597         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
9598         * sysdeps/pthread/pthread_rwlock_rdlock.c: Likewise.
9599         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
9600         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
9601         * sysdeps/pthread/pthread_rwlock_unlock.c: Likewise.
9602         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
9603
9604 2003-02-23  Roland McGrath  <roland@redhat.com>
9605
9606         * Makefile (nptl-version): Change regexp so case sensitivity is ok.
9607
9608 2003-02-23  Ulrich Drepper  <drepper@redhat.com>
9609
9610         * Makefile (tests): Add tst-context1.
9611         * tst-context1.c: New file.
9612
9613         * Makefile (tests): Add tst-tls1 and tst-tls2.
9614         * tst-tls1.c: New file.
9615         * tst-tls2.c: New file.
9616
9617         * libc-cancellation.c (__libc_enable_asynccancel): Correct test
9618         for failed cmpxchg.
9619
9620         * pthread_create.c (start_thread): Set EXITING_BIT early.
9621
9622         * sysdeps/i386/tls.h (THREAD_GETMEM): Mark asm as volatile.
9623         (THREAD_GETMEM_NC): Likewise.
9624
9625 2003-02-22  Ulrich Drepper  <drepper@redhat.com>
9626
9627         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Shave
9628         off 3 more bytes by using offset-less instructions when possible.
9629
9630         * Makefile: Add dependency for $(objpfx)version.d.
9631
9632         * eintr.c (eintr_source): Add unnecessary return but the compiler
9633         insists.
9634
9635         * tst-kill3.c: Include <unistd.h>.
9636
9637 2003-02-21  Roland McGrath  <roland@redhat.com>
9638
9639         * pthread_create.c (start_thread): Call __libc_thread_freeres.
9640
9641 2003-02-21  Ulrich Drepper  <drepper@redhat.com>
9642
9643         * Makefile (tests): Add tst-eintr1.
9644         (distribute): Add eintr.c.
9645         * tst-eintr1.c: New file.
9646         * eintr.c: New file.
9647
9648         * pthread_cancel.c (pthread_cancel): Use tkill directly.
9649
9650         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill):
9651         Disallow sending SIGCANCEL.
9652
9653         * Makefile (tests): Remove tst-basic7.  Add tst-kill1, tst-kill2,
9654         tst-kill3, tst-kill4, tst-kill5, tst-kill6.
9655         * tst-kill1.c: New file.
9656         * tst-kill2.c: New file.
9657         * tst-kill3.c: New file.
9658         * tst-kill5.c: New file.
9659         * tst-kill6.c: New file.
9660         * tst-basic7.c: Renamed to...
9661         * tst-kill4.c: ...this.
9662
9663 2003-02-21  Roland McGrath  <roland@redhat.com>
9664
9665         * Makefile (install-lib-ldscripts): New variable.
9666
9667 2003-02-21  Ulrich Drepper  <drepper@redhat.com>
9668
9669         * pthreadP.h: Define INVALID_TD_P and INVALID_NOT_TERMINATED_TD_P.
9670         * pthread_cancel.c: Use INVALID_TD_P.
9671         * pthread_detach.c: Likewise.
9672         * pthread_getschedparam.c: Likewise.
9673         * pthread_setschedparam.c: Likewise.
9674         * sysdeps/pthread/pthread_getcpuclockid.c: Likewise.
9675         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
9676         * pthread_join.c: Use INVALID_NOT_TERMINATED_TD_P.
9677         * pthread_timedjoin.c: Likewise.
9678
9679         * tst-basic7.c: Include <signal.h>.
9680
9681         * pthread_join.c (pthread_join): Limited checking for invalid
9682         descriptors.
9683         * pthread_timedjoin.c (pthread_timedjoin_np): Likewise.
9684
9685 2003-02-20  Ulrich Drepper  <drepper@redhat.com>
9686
9687         * pthread_create.c (deallocate_tsd): Reset found_nonzero at the
9688         beginning of the loop.  Clear the entire first block of TSD.
9689         * Makefile (tests): Add tst-key4.
9690         * tst-key4.c: New file.
9691
9692 2003-02-18  Ulrich Drepper  <drepper@redhat.com>
9693
9694         * Makefile (tests): Add tst-basic7.
9695         * tst-basic7.c: New file.
9696
9697         * pthread_create.c (deallocate_tsd): Mark as internal_function.
9698         Add some more __builtin_expect.
9699
9700         * pthreadP.h: Define dummy version of DEBUGGING_P.
9701
9702 2003-02-17  Ulrich Drepper  <drepper@redhat.com>
9703
9704         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remnove
9705         _POSIX_THREAD_PRIORITY_SCHEDULING.
9706         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remove
9707         _XOPEN_REALTIME_THREADS.
9708         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
9709
9710         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): The
9711         kernel returns EINVAL for PID <= 0, work around it.
9712
9713         * Makefile (tests): Add tst-signal5.
9714         * tst-signal5.c: New file.
9715
9716         * sysdeps/unix/sysv/linux/bits/local_lim.h: Define TTY_NAME_MAX
9717         and LOGIN_NAME_MAX.
9718
9719         * tst-cancel1.c (tf): Block all signals.
9720
9721         * Makefile (tests): Add tst-basic6.
9722         * tst-basic6.c: New file.
9723
9724         * tst-basic1.c: Add test for process ID.
9725
9726         * Makefile (tests): Add tst-cancel10.
9727         * tst-cancel10.c: New file.
9728
9729         * Makefile (tests): Add tst-signal4.
9730         * tst-signal4.c: New file.
9731
9732         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Use
9733         __sigismember instead of sigismember.  Add __builtin_expect.
9734
9735 2003-02-16  Ulrich Drepper  <drepper@redhat.com>
9736
9737         * tst-attr1.c (do_test): Add tests for pthread_setcanceltype,
9738         pthread_setcancelstate, and pthread_rwlock_setpshared.
9739
9740         * tst-cancel7.c (do_test): Make sure the pid file exists before
9741         canceling the thread.
9742
9743         * tst-rwlock6.c: More pthread_rwlock_timedwrlock and
9744         pthread_rwlock_timedrdlock tests.
9745         * tst-rwlock7.c: More pthread_rwlock_timedwrlock tests.
9746         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
9747         Check for invalid tv_nsec field.
9748         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
9749         Likewise.
9750
9751         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Protect
9752         recursive mutex of overflow.
9753
9754         * tst-attr1.c (do_test): Add test for pthread_mutexattr_setpshared.
9755
9756         * libc-cancellation.c (__libc_enable_asynccancel): Rewrite to avoid
9757         going into an endless loop.
9758         * Makefile (tests): Add tst-cancel9.
9759         * tst-cancel9.c: New file.
9760
9761         * pthread_cancel.c (pthread_cancel): Use the result of __pthread_kill.
9762
9763 2003-02-15  Ulrich Drepper  <drepper@redhat.com>
9764
9765         * tst-mutex5.c (do_test): Add more timedlock tests.
9766
9767         * tst-mutex2.c: Tests of trylock and unlock with ERROR mutexes.
9768         * tst-mutex3.c (do_test): Add tests for trylock with RECURSIVE mutexes.
9769
9770         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): Don't
9771         use INLINE_SYSCALL.  Error number is returned, not -1.
9772
9773         * pthreadP.h: Mark declarations of __find_in_stack_list, __free_tcb,
9774         and __deallocate_stack with internal_function.
9775         * pthread_create.c: Adjust definitions appropriately.
9776         * allocatestack.c: Likewise.
9777
9778         * pthread_join.c: Add one more __builtin_expect.
9779         * pthread_timedjoin.c: Likewise.
9780
9781         * pthread_getspecific.c (__pthread_getspecific): Clear data->data
9782         not data of sequence number does not match.
9783         Add one __builtin_expect.
9784
9785         * Makefile (tests): Add tst-clock1.
9786         * tst-clock1.c: New file.
9787
9788         * pthread_setconcurrency.c (pthread_setconcurrency): Fail for
9789         negative arguments.
9790         * Makefile (tests): Add tst-basic5.
9791         * tst-basic5.c: New file.
9792
9793 2003-02-14  Ulrich Drepper  <drepper@redhat.com>
9794
9795         * Makefile (tests): Add tst-basic4.
9796         * tst-basic4.c: New file.
9797
9798         * pthreadP.h: Add declaraction for __nptl_nthreads.
9799         * pthread_create.c: Define __nptl_nthreads
9800         (start_thread): Increment __nptl_nthreads at beginning.  Decrement
9801         after thread is done.  If then zero, call exit(0).
9802         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
9803         Add ptr_nthreads.  Define HAVE_PTR_NTHREADS.
9804         * init.c (pthread_functions): Initialize ptr_nthreads.
9805         * allocatestack.c (nptl_nthreads): Remove definition and all uses.
9806         (__reclaim_stacks): Decrement __nptl_nthreads.
9807         * sysdeps/pthread/Makefile [$(subdir)==csu] (CFLAGS-libc-start.c):
9808         Define.
9809         * Makefile (tests): Add tst-basic3.
9810         * tst-basic3.c: New file.
9811
9812         * descr.h: Define CANCELING_BIT and CANCELING_BITMASK.  Introduce
9813         after CANCELTYPE_BIT, move the other bits up.  Update CANCEL_RESTMASK.
9814         * init.c (sigcancel_handler): Also set CANCELING_BITMASK bit in newval.
9815         * pthread_cancel.c (pthread_cancel): Likewise.  Also set CANCELING_BIT
9816         if asynchronous canceling is enabled.
9817         * pthread_join.c (pthread_join): When recognizing circular joins,
9818         take into account the other thread might be already canceled.
9819         * Makefile (tests): Add tst-join5.
9820         * tst-join5.c: New file.
9821
9822         * Makefile (tests): Add tst-join4.
9823         * tst-join4.c: New file.
9824
9825 2003-02-13  Ulrich Drepper  <drepper@redhat.com>
9826
9827         * tst-cond4.c (main): Add test of pthread_attr_getpshared.
9828
9829 2003-02-13  Martin Schwidefsky  <schwidefsky@de.ibm.com>
9830
9831         * sysdeps/s390/tls.h (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM,
9832         THREAD_SETMEM_NC): Use passed descr instead of THREAD_SELF.
9833         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c (_longjmp_unwind): Avoid
9834         warning.
9835         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Include <sys/time.h>
9836         to avoid warning.
9837         * sysdeps/unix/sysv/linux/s390/sem_post.c (__new_sem_post): Return
9838         error if lll_futex_wake failed.
9839
9840 2003-02-13  Ulrich Drepper  <drepper@redhat.com>
9841
9842         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Fix
9843         handling of cancellation and failung pthread_mutex_unlock call.
9844         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
9845         * Makefile (tests): Add tst-cond8 and tst-cond9.
9846         * tst-cond8.c: New file.
9847         * tst-cond9.c: New file.
9848
9849         * tst-cond7.c (do_test): Unlock the mutex before canceling the thread.
9850
9851         * sysdeps/pthread/pthread.h: Add missing initializers.  Protect
9852         non-standard initializers with __USE_GNU.
9853
9854         * Makefile (tests): Add tst-cleanup3.
9855         * tst-cleanup3.c: New file.
9856
9857 2003-02-12  Ulrich Drepper  <drepper@redhat.com>
9858
9859         * Makefile (tests): Add tst-attr1 and tst-attr2.
9860         * tst-attr1.c: New file.
9861         * tst-attr2.c: New file.
9862
9863         * Makefile: Add rules to build and run tst-atfork2 test.
9864         * tst-atfork2.c: New file.
9865         * tst-atfork2mod.c: New file.
9866
9867         * sysdeps/unix/sysv/linux/unregister-atfork.c
9868         (__unregister_atfork): Free the memory allocated for the handlers
9869         after removing them from the lists.
9870
9871         * sysdeps/unix/sysv/linux/register-atfork.c: Define memeory
9872         cleanup function.
9873
9874         * tst-atfork1.c (do_test): Wait for the child we forked.
9875         Report error in child.
9876
9877         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Fix comment.
9878
9879         * sysdeps/pthread/Makefile: Define CFLAGS-confstr.c.
9880
9881 2003-02-10  Ulrich Drepper  <drepper@redhat.com>
9882
9883         * Makefile (tests): Add tst-cancel8.
9884         * tst-cancel8.c: New file.
9885
9886         * sysdeps/unix/sysv/linux/i386/pthread_once.S (clear_once_control): Fix
9887         clearing of control variable.
9888         * Makefile (tests): Add tst-once3 and tst-once4.
9889         * tst-once3.c: New file.
9890         * tst-once4.c: New file.
9891
9892 2003-02-08  kaz Kojima  <kkojima@rr.iij4u.or.jp>
9893
9894         * sysdeps/sh/Makefile: New file.
9895         * sysdeps/sh/bits/atomic.h: New file.
9896         * sysdeps/sh/pthread_spin_init.c: New file.
9897         * sysdeps/sh/pthread_spin_lock.c: New file.
9898         * sysdeps/sh/pthread_spin_trylock.S: New file.
9899         * sysdeps/sh/pthread_spin_unlock.S: New file.
9900         * sysdeps/sh/pthreaddef.h: New file.
9901         * sysdeps/sh/tcb-offsets.sym: New file.
9902         * sysdeps/sh/td_ta_map_lwp2thr.c: New file.
9903         * sysdeps/sh/tls.h: New file.
9904         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: New file.
9905         * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: New file.
9906         * sysdeps/unix/sysv/linux/sh/createthread.c: New file.
9907         * sysdeps/unix/sysv/linux/sh/fork.c: New file.
9908         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: New file.
9909         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: New file.
9910         * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h: New file.
9911         * sysdeps/unix/sysv/linux/sh/lowlevelcond.h: New file.
9912         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: New file.
9913         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: New file.
9914         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: New file.
9915         * sysdeps/unix/sysv/linux/sh/lowlevelrwlock.h: New file.
9916         * sysdeps/unix/sysv/linux/sh/pt-initfini.c: New file.
9917         * sysdeps/unix/sysv/linux/sh/pt-vfork.S: New file.
9918         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: New file.
9919         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: New file.
9920         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: New file.
9921         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: New file.
9922         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: New file.
9923         * sysdeps/unix/sysv/linux/sh/pthread_once.S: New file.
9924         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: New file.
9925         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: New file.
9926         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: New file.
9927         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: New file.
9928         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: New file.
9929         * sysdeps/unix/sysv/linux/sh/sem_post.S: New file.
9930         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: New file.
9931         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: New file.
9932         * sysdeps/unix/sysv/linux/sh/sem_wait.S: New file.
9933         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: New file.
9934
9935 2003-02-08  Ulrich Drepper  <drepper@redhat.com>
9936
9937         * tst-cond2.c: Rearrange code to not rely on behavior undefined
9938         according to POSIX.
9939
9940         * tst-basic2.c (do_test): Lock mutex before creating the thread.
9941
9942 2003-02-07  Ulrich Drepper  <drepper@redhat.com>
9943
9944         * sysdeps/x86_64/tls.h: Remove unnecessary macros, left over from x86.
9945         (TLS_GET_FS): New #define.
9946         (TLS_SET_FS): New #define.
9947         Correct value of __NR_set_thread_area.
9948
9949         * sysdeps/x86_64/td_ta_map_lwp2thr.c: New file.
9950
9951 2003-02-06  Ulrich Drepper  <drepper@redhat.com>
9952
9953         * Makefile (tests): Add tst-popen1.
9954         * tst-popen1.c: New file.
9955
9956         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Remove wrong
9957         but inactive generalization.
9958         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
9959         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
9960         Minor optimization, remove one instruction.
9961         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
9962
9963 2003-02-04  Martin Schwidefsky  <schwidefsky@de.ibm.com>
9964
9965         * sysdeps/unix/sysv/linux/s390/fork.c: Correct order of parameters.
9966
9967 2003-01-31  Martin Schwidefsky  <schwidefsky@de.ibm.com>
9968
9969         * init.c (__NR_set_tid_address): Add #ifdef for s390.
9970         * sysdeps/pthread/pthread_barrier_wait.c: New file.
9971         * sysdeps/pthread/pthread_cond_broadcast.c: New file.
9972         * sysdeps/pthread/pthread_cond_signal.c: New file.
9973         * sysdeps/pthread/pthread_cond_timedwait.c: New file.
9974         * sysdeps/pthread/pthread_cond_wait.c: New file.
9975         * sysdeps/pthread/pthread_rwlock_rdlock.c: New file.
9976         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: New file.
9977         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: New file.
9978         * sysdeps/pthread/pthread_rwlock_unlock.c: New file.
9979         * sysdeps/pthread/pthread_rwlock_wrlock.c: New file.
9980         * sysdeps/s390/Makefile: New file.
9981         * sysdeps/s390/bits/atomic.h: New file.
9982         * sysdeps/s390/pthread_spin_init.c: New file.
9983         * sysdeps/s390/pthread_spin_lock.c: New file.
9984         * sysdeps/s390/pthread_spin_trylock.c: New file.
9985         * sysdeps/s390/pthread_spin_unlock.c: New file.
9986         * sysdeps/s390/pthreaddef.h: New file.
9987         * sysdeps/s390/tcb-offsets.sym: New file.
9988         * sysdeps/s390/td_ta_map_lwp2thr.c: New file.
9989         * sysdeps/s390/tls.h: New file.
9990         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: New file.
9991         * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: New file.
9992         * sysdeps/unix/sysv/linux/s390/createthread.c: New file.
9993         * sysdeps/unix/sysv/linux/s390/dl-sysdep.h: New file.
9994         * sysdeps/unix/sysv/linux/s390/fork.c: New file.
9995         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: New file.
9996         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: New file.
9997         * sysdeps/unix/sysv/linux/s390/libc-lowlevelmutex.c: New file.
9998         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: New file.
9999         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: New file.
10000         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: New file.
10001         * sysdeps/unix/sysv/linux/s390/lowlevelsem.h: New file.
10002         * sysdeps/unix/sysv/linux/s390/pthread_once.c: New file.
10003         * sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c: New file.
10004         * sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: New file.
10005         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: New file.
10006         * sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c: New file.
10007         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S: New file.
10008         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: New file.
10009         * sysdeps/unix/sysv/linux/s390/sem_post.c: New file.
10010         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: New file.
10011         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: New file.
10012         * sysdeps/unix/sysv/linux/s390/sem_wait.c: New file.
10013
10014 2003-02-04  Ulrich Drepper  <drepper@redhat.com>
10015
10016         * atomic.h: Add a couple more default implementations.
10017         (atomic_compare_and_exchange_acq): Use
10018         __arch_compare_and_exchange_32_acq in return value definition.  It
10019         always exists.
10020         (atomic_bit_set): Renamed from atomic_set_bit.
10021         Add missing atomic_ prefixes.
10022
10023         * sysdeps/pthread/bits/libc-lock.h (__libc_once): In case no
10024         thread library is available, use correct value to mark initialized
10025         once variable.
10026
10027 2003-02-03  Ulrich Drepper  <drepper@redhat.com>
10028
10029         * allocatestack.c (allocate_stack): Use __getpagesize instead of
10030         __sysconf to determine pagesize.
10031
10032         * pthread_create.c: Include <atomic.h>.
10033         * allocatestack.c (allocate_stack): Implement coloring of the
10034         allocated stack memory.  Rename pagesize to pagesize_m1.  It's the
10035         size minus one.  Adjust users.
10036         * sysdeps/i386/i686/Makefile: New file.
10037
10038 2003-02-02  Ulrich Drepper  <drepper@redhat.com>
10039
10040         * allocatestack.c: Improve comment throughout the file.
10041
10042         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
10043         (__lll_lock_wait): Add branch prediction.
10044         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
10045         (__lll_lock_wait): Likewise.
10046         (lll_unlock_wake_cb): Removed.
10047
10048 2003-01-31  Ulrich Drepper  <drepper@redhat.com>
10049
10050         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Remove
10051         _POSIX_THREAD_PRIORITY_SCHEDULING.
10052
10053 2003-01-30  Jakub Jelinek  <jakub@redhat.com>
10054
10055         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
10056         Fix return type of ptr___pthread_getspecific.
10057
10058 2003-01-29  Ulrich Drepper  <drepper@redhat.com>
10059
10060         * Makefile (tests): Add tst-umask1.
10061         (tst-umask1-ARGS): Define.
10062         * tst-umask1.c: New file.
10063
10064 2003-01-28  Ulrich Drepper  <drepper@redhat.com>
10065
10066         * Makefile (libpthread-routines): Remove lowlevelrwlock.  Add
10067         pthread_rwlock_rdlock, pthread_rwlock_timedrdlock,
10068         pthread_rwlock_wrlock, pthread_rwlock_timedwrlock, and
10069         pthread_rwlock_unlock.
10070         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Removed
10071         * sysdeps/unix/sysv/linux/i386/i586/lowlevelrwlock.S: Removed
10072         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrwlock.S: Removed
10073         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: New file.
10074         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
10075         New file.
10076         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: New file.
10077         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
10078         New file.
10079         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: New file.
10080         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S: New file.
10081         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S:
10082         New file.
10083         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S: New file.
10084         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S:
10085         New file.
10086         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S: New file.
10087         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S: New file.
10088         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S:
10089         New file.
10090         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S: New file.
10091         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S:
10092         New file.
10093         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S: New file.
10094
10095         * Makefile (libpthread-routines): Remove lowlevelcond and
10096         lowlevelsem.  Add sem_wait, sem_trywait, sem_timedwait, sem_post,
10097         pthread_cond_wait, pthread_cond_timedwait, pthread_cond_signal,
10098         and pthread_cond_broadcast.
10099         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Removed
10100         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Removed
10101         * sysdeps/unix/sysv/linux/i386/i586/lowlevelsem.S: Removed
10102         * sysdeps/unix/sysv/linux/i386/i586/lowlevelcond.S: Removed
10103         * sysdeps/unix/sysv/linux/i386/i686/lowlevelsem.S: Removed
10104         * sysdeps/unix/sysv/linux/i386/i686/lowlevelcond.S: Removed
10105         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: New file.
10106         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: New file.
10107         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: New file.
10108         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: New file.
10109         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: New file.
10110         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: New file.
10111         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: New file.
10112         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: New file.
10113         * sysdeps/unix/sysv/linux/i386/i586/sem_wait.S: New file.
10114         * sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S: New file.
10115         * sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S: New file.
10116         * sysdeps/unix/sysv/linux/i386/i586/sem_post.S: New file.
10117         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S: New file.
10118         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S: New file.
10119         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S: New file.
10120         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S: New file.
10121         * sysdeps/unix/sysv/linux/i386/i686/sem_wait.S: New file.
10122         * sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S: New file.
10123         * sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S: New file.
10124         * sysdeps/unix/sysv/linux/i386/i686/sem_post.S: New file.
10125         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S: New file.
10126         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S: New file.
10127         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S: New file.
10128         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S: New file.
10129         * sysdeps/unix/sysv/linux/i386/lowlevelcond.h: New file.
10130
10131         * sysdeps/unix/sysv/linux/i386/createthread.c: Define
10132         PREPARE_CREATE and TLS_VALUE with x86-specific bits.  All the rest
10133         of the code is moved to ...
10134         * sysdeps/pthread/createthread.c: ...here.  New file.
10135
10136 2003-01-27  Ulrich Drepper  <drepper@redhat.com>
10137
10138         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S
10139         (__new_sem_post): Clear %eax before returning.
10140         Reported by MAEDA Naoaki <maeda.naoaki@jp.fujitsu.com>.
10141
10142         * Makefile (tests): Add tst-cleanup2.
10143         * tst-cleanup2.c: New file.
10144
10145         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_region_start):
10146         Interpret first parameter correctly.
10147
10148 2003-01-17  Ulrich Drepper  <drepper@redhat.com>
10149
10150         * Makefile (headers): Add bits/semaphore.h.
10151
10152 2003-01-16  Jakub Jelinek  <jakub@redhat.com>
10153
10154         * sysdeps/i386/tls.h (INIT_SYSINFO): Initialize _head->sysinfo even
10155         if not SHARED.
10156
10157 2003-01-14  Ulrich Drepper  <drepper@redhat.com>
10158
10159         * sem_open.c (sem_open): Return SEM_FAILED if existing semaphore
10160         must be used and mapping failed.
10161         Reported by Luke Elliott <luke.elliott@activfinancial.com>.
10162
10163         * Makefile (CFLAGS-pthread_self.os): Define this, not
10164         CFLAGS-pthread_self.c.
10165
10166 2003-01-13  Ulrich Drepper  <drepper@redhat.com>
10167
10168         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Don't export
10169         lll_unlock_wake_cb.
10170
10171         * Makefile (libpthread-routines): Add version.  Add rules to build
10172         version.os and banner.h.
10173         * version.c: New file.
10174
10175 2003-01-13  Jakub Jelinek  <jakub@redhat.com>
10176
10177         * pthread_mutex_lock.c (__pthread_mutex_lock_internal): Make
10178         the alias unconditional.
10179         * pthread_mutex_unlock.c  (__pthread_mutex_unlock_internal): Likewise.
10180
10181 2003-01-13  Ulrich Drepper  <drepper@redhat.com>
10182
10183         * Makefile (CFLAGS-pthread_self.c): New definition.
10184
10185 2003-01-06  Jakub Jelinek  <jakub@redhat.com>
10186
10187         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Add
10188         INTERNAL_SYSCALL_DECL, add err argument to INTERNAL_SYSCALL* macros.
10189         * sysdeps/unix/sysv/linux/raise.c (raise): Likewise.
10190         * init.c (__pthread_initialize_minimal_internal): Likewise.
10191
10192 2003-01-07  Jakub Jelinek  <jakub@redhat.com>
10193
10194         * pthreadP.h (__pthread_cond_timedwait): Add prototype.
10195
10196         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
10197         (RTLD_CORRECT_DYNAMIC_WEAK): Remove.
10198         (DL_SYSINFO_IMPLEMENTATION): Change into .text section and back.
10199         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
10200         (RTLD_CORRECT_DYNAMIC_WEAK): Remove.
10201         (DL_SYSINFO_IMPLEMENTATION): Change into .text section and back.
10202
10203 2003-01-06  Jakub Jelinek  <jakub@redhat.com>
10204
10205         * pthreadP.h (LIBC_CANCEL_HANDLED): Define.
10206         * pt-system.c (LIBC_CANCEL_HANDLED): Add.
10207         * tst-cancel-wrappers.sh: Remove all exceptions.
10208
10209 2003-01-05  Ulrich Drepper  <drepper@redhat.com>
10210
10211         * tst-cancel-wrappers.sh: Invoke gawk not awk since we use GNU awk
10212         features.  Reported by Marijn Ros <marijn@mad.scientist.com>.
10213
10214         * sysdeps/unix/sysv/linux/jmp-unwind.c: Include <pthread-functions.h>.
10215         Use __libc_pthread_functions array if SHARED.
10216
10217         * pthreadP.h: Move pthread_cond_2_0_t definition to...
10218         * sysdeps/unix/sysv/linux/internaltypes.h: ...here.
10219
10220         * sysdeps/pthread/bits/libc-lock.h (__libc_ptf_call): New #define.
10221         (__libc_rwlock_rdlock, __libc_rwlock_wrlock, __libc_rwlock_unlock,
10222         __libc_key_create, __libc_getspecific, __libc_setspecific): Use
10223         __libc_ptf_call instead of __libc_maybe_call.
10224         (PTF): New #define.
10225         (__libc_cleanup_region_start): Wrap function name with PTF call.
10226         (__libc_cleanup_region_end): Likewise.
10227         (__libc_cleanup_end): Likewise.
10228
10229         * pthread_getspecific.c: Add __pthread_getspecific_internal alias.
10230         * pthread_setspecific.c: Add __pthread_setspecific_internal alias.
10231         * pthread_key_create.c: Add __pthread_key_create_internal alias.
10232         * pthreadP.h: Add prototypes.
10233
10234         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Add
10235         __pthread_rwlock_rdlock, __pthread_rwlock_wrlock, and
10236         __pthread_rwlock_unlock aliases.
10237         * pthreadP.h: Add prototypes for new aliases.
10238
10239         * pthreadP.h (struct pthead_functions): Moved to...
10240         * sysdeps/pthread/pthread-functions.h: ...here.  New file.
10241         * init.c (pthread_functions): Add initializers for new elements.
10242
10243         * cleanup_defer.c: Add __pthread_cleanup_push_defer and
10244         __pthread_cleanup_pop_restore aliases.
10245         * pthreadP.h: Add prototypes.
10246
10247         * cleanup.c: Rename _GI_pthread_cleanup_push to __pthread_cleanup_push
10248         and _GI_pthread_cleanup_pop to __pthread_cleanup_pop.
10249         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Adjust caller.
10250         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise.
10251         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
10252         * pthreadP.h: Adjust prototypes and callers.
10253
10254 2003-01-04  Ulrich Drepper  <drepper@redhat.com>
10255
10256         * Makefile (tests): Add tst-cancel7.
10257         (tst-cancel7-ARGS): New variable.
10258         * tst-cancel7.c: New file.
10259
10260         * old_pthread_cond_broadcast.c: Optimize initialization a bit to work
10261         around gcc defficiencies.
10262         * old_pthread_cond_signal.c: Likewise.
10263         * old_pthread_cond_timedwait.c: Likewise.
10264         * old_pthread_cond_wait.c: Likewise.
10265
10266         * pthreadP.h (pthread_cond_2_0_t): Remove unneeded lock element.
10267
10268 2003-01-03  Ulrich Drepper  <drepper@redhat.com>
10269
10270         * Makefile (tests): Add tst-cond7.
10271         * tst-cond7.c: New file.
10272
10273         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S
10274         (condvar_cleanup): Get condvar address from the right place.
10275
10276         * atomic.h: Correct definitions of atomic_full_barrier,
10277         atomic_read_barrier, atomic_write_barrier.
10278
10279         * old_pthread_cond_broadcast.c: Make memory allocate and initialization
10280         race-free.
10281         * old_pthread_cond_signal.c: Likewise.
10282         * old_pthread_cond_timedwait.c: Likewise.
10283         * old_pthread_cond_wait.c: Likewise.
10284
10285 2003-01-03  Jakub Jelinek  <jakub@redhat.com>
10286
10287         * Makefile ($(objpfx)libpthread.so): Depend on ld.so.
10288
10289 2003-01-03  Ulrich Drepper  <drepper@redhat.com>
10290
10291         * pthreadP.h (pthread_cond_2_0_t): New type.
10292         (struct pthread_functions): Use new type for 2.0 condvar callbacks.
10293         Use new type for the 2.0 condvar function prototypes.
10294         * forward.c: Use pthread_cond_2_0_t for 2.0 condvar functions.
10295         * old_pthread_cond_init.c: Use pthread_cond_2_0_t for condvar
10296         parameter.
10297         * old_pthread_cond_destroy.c: Likewise.
10298         * old_pthread_cond_broadcast.c: Likewise.  Lock appropriately.
10299         * old_pthread_cond_signal.c: Likewise.
10300         * old_pthread_cond_timedwait.c: Likewise.
10301         * old_pthread_cond_wait.c: Likewise.
10302
10303         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S
10304         (__pthread_cond_wait): Don't save cancellation mode and seq value
10305         in same location.
10306
10307         * herrno.c (__h_errno_location): Don't define as weak.
10308
10309 2003-01-02  Jakub Jelinek  <jakub@redhat.com>
10310
10311         * Versions [libc] (GLIBC_2.3.2): Export pthread_cond_broadcast,
10312         pthread_cond_destroy, pthread_cond_init, pthread_cond_signal
10313         and pthread_cond_wait.
10314         * old_pthread_cond_broadcast.c (__old_pthread_cond_broadcast):
10315         Renamed to...
10316         (__pthread_cond_broadcast_2_0): ... this.
10317         * old_pthread_cond_destroy.c (__old_pthread_cond_destroy):
10318         Renamed to...
10319         (__pthread_cond_destroy_2_0): ... this.
10320         * old_pthread_cond_init.c (__old_pthread_cond_init):
10321         Renamed to...
10322         (__pthread_cond_init_2_0): ... this.
10323         * old_pthread_cond_signal.c (__old_pthread_cond_signal):
10324         Renamed to...
10325         (__pthread_cond_signal_2_0): ... this.
10326         * old_pthread_cond_wait.c (__old_pthread_cond_wait):
10327         Renamed to...
10328         (__pthread_cond_wait_2_0): ... this.
10329         * pthread_cond_destroy.c: Include shlib-compat.h.
10330         (pthread_cond_destroy): Change strong_alias into versioned_symbol.
10331         * pthread_cond_init.c: Include shlib-compat.h.
10332         (pthread_cond_init): Change strong_alias into versioned_symbol.
10333         * pthreadP.h (struct pthread_functions): Rename ptr_pthread_cond_*
10334         fields to ptr___pthread_cond_* and add ptr___pthread_cond_*_2_0
10335         fields.
10336         (__pthread_cond_broadcast_2_0, __pthread_cond_destroy_2_0,
10337         __pthread_cond_init_2_0, __pthread_cond_signal_2_0,
10338         __pthread_cond_wait_2_0): New prototypes.
10339         (__old_pthread_cond_broadcast, __old_pthread_cond_destroy,
10340         __old_pthread_cond_init, __old_pthread_cond_signal,
10341         __old_pthread_cond_wait): Removed.
10342         * init.c: Include shlib-compat.h.
10343         (pthread_functions): Guard ptr___pthread_attr_init_2_0
10344         initialization with SHLIB_COMPAT (GLIBC_2_0, GLIBC_2_1).
10345         Rename ptr_pthread_cond_* to ptr___pthread_cond_*, initialize
10346         ptr___pthread_cond_*_2_0 fields.
10347         * forward.c: Export both pthread_cond_*@@GLIBC_2.3.2 and
10348         pthread_cond_*@GLIBC_2.0 compatibility symbols.
10349
10350         * sysdeps/pthread/sigaction.c (SIGCANCEL): Only define if
10351         LIBC_SIGACTION was not yet defined.
10352         [!defined LIBC_SIGACTION]: Define LIBC_SIGACTION, #include self.
10353         [!defined LIBC_SIGACTION] (__sigaction): New function and
10354         libc_hidden_weak.
10355         [!defined LIBC_SIGACTION] (sigaction): New weak_alias.
10356         [defined LIBC_SIGACTION]: #include_next <sigaction.c>.
10357
10358 2003-01-02  Jakub Jelinek  <jakub@redhat.com>
10359
10360         * Makefile (CFLAGS-pthread_atfork.c): Add -DNOT_IN_libc.
10361
10362 2003-01-02  Ulrich Drepper  <drepper@redhat.com>
10363
10364         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
10365         New, larger type definition.
10366         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: New condvar
10367         implementation.
10368         * Versions [libpthread]: Add definitions for new pthread_cond_*
10369         interfaces for version GLIBC_2.3.2.
10370         * pthread_cond_init.c: Update initialization for new type definition.
10371         * Makefile (libpthread-routines): Remove pthread_cond_wait,
10372         pthread_cond_timedwait, pthread_cond_signal, and
10373         pthread_cond_broadcast.  Add old_pthread_cond_init,
10374         old_pthread_cond_destroy, old_pthread_cond_wait,
10375         old_pthread_cond_timedwait, old_pthread_cond_signal, and
10376         old_pthread_cond_broadcast.
10377         * old_pthread_cond_broadcast.c: New file.
10378         * old_pthread_cond_destroy.c: New file.
10379         * old_pthread_cond_init.c: New file.
10380         * old_pthread_cond_signal.c: New file.
10381         * old_pthread_cond_timedwait.c: New file.
10382         * old_pthread_cond_wait.c: New file.
10383         * pthreadP.h: Add prototypes for the compatibility interfaces.
10384
10385         * pthread_cond_destroy.c: Don't include <errno.h>.
10386
10387 2003-01-01  Ulrich Drepper  <drepper@redhat.com>
10388
10389         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Avoid
10390         unnecessary zero offset when addressing MUTEX.
10391
10392 2002-12-31  Ulrich Drepper  <drepper@redhat.com>
10393
10394         * sysdeps/unix/sysv/linux/fork.h: Add libc_hidden_proto for
10395         __register_atfork.
10396         * sysdeps/unix/sysv/linux/register-atfork.c: Add libc_hidden_def
10397         for __register_atfork.
10398
10399 2002-12-31  Jakub Jelinek  <jakub@redhat.com>
10400
10401         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Use __ASSEMBLER__
10402         instead of ASSEMBLER test macro.
10403
10404         * sysdeps/unix/sysv/linux/allocrtsig.c (__libc_current_sigrtmin,
10405         __libc_current_sigrtmax): Add libc_hidden_def.
10406
10407         * sysdeps/pthread/list.h: Remove assert.h include.
10408
10409 2002-12-31  Ulrich Drepper  <drepper@redhat.com>
10410
10411         * sysdeps/pthread/pt-initfini.c (call_initialize_minimal): Use
10412         __pthread_initialize_minimal_internal not
10413         __pthread_initialize_minimal.
10414
10415 2002-12-30  Ulrich Drepper  <drepper@redhat.com>
10416
10417         * sysdeps/pthread/pt-initfini.c (call_initialize_minimal): Mark
10418         __pthread_initialize_minimal as hidden.
10419
10420         * init.c (__pthread_initialize_minimal_internal): Don't mark as
10421         constructor.
10422
10423 2002-12-31  Jakub Jelinek  <jakub@redhat.com>
10424
10425         * Makefile ($(inst_libdir)/libpthread.so): Depend on
10426         $(common-objpfx)format.lds, include that into the output script.
10427         Fix comment.
10428         (extra-B-pthread.so): Change linuxthreads/ into nptl/.
10429
10430 2002-12-28  Andreas Jaeger  <aj@suse.de>
10431
10432         * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv): Adjust for
10433         nsec resolution changes.
10434         (xstat64_conv): Likewise.
10435         (xstat32_conv): Likewise.
10436         * sysdeps/unix/sysv/linux/kernel_stat.h: Add nsec resolution for
10437         struct kernel_stat.
10438         * sysdeps/unix/sysv/linux/bits/stat.h: Add nsec resolution for
10439         structs stat and stat64.
10440         * time/time.h (__timespec_defined): Define for __USE_MISC.
10441         * io/sys/stat.h [__USE_MISC]: Define __need_timespec for struct stat.
10442
10443 2002-12-30  Jakub Jelinek  <jakub@redhat.com>
10444
10445         * forward.c (FORWARD2): Renamed from FORWARD3.  Remove unused export
10446         argument.
10447         (pthread_attr_init_2_0, pthread_attr_init_2_1): Use FORWARD macro.
10448         (pthread_exit): Use strong_alias to avoid warnings.
10449         * pthreadP.h (struct pthread_functions): Rename ptr_pthread_exit
10450         and ptr_pthread_attr_init_2_* to ptr___pthread_exit and
10451         ptr___pthread_attr_init_2_*.
10452         * init.c (pthread_functions): Adjust.
10453
10454 2002-12-29  Ulrich Drepper  <drepper@redhat.com>
10455
10456         * forward.c: Make all functions available by default again.  It
10457         caused too much trouble.
10458
10459         * pt-siglongjmp.c: Removed.
10460
10461 2002-12-28  Jakub Jelinek  <jakub@redhat.com>
10462
10463         * sysdeps/i386/tls.h: Include tcb-offsets.h in assembler.
10464         (SYSINFO_OFFSET, MULTIPLE_THREADS_OFFSET): Remove.
10465         * sysdeps/i386/Makefile: New file.
10466         * sysdeps/i386/tcb-offsets.sym: New file.
10467         * sysdeps/pthread/tcb-offsets.h: New file.
10468         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
10469         Remove MULTIPLE_THREADS_OFFSET and SYSINFO_OFFSET checks.
10470
10471         * sysdeps/unix/sysv/linux/Versions [libc] (GLIBC_PRIVATE): Move
10472         __register_atfork...
10473         (GLIBC_2.3.2): ...here.
10474
10475 2002-12-28  Ulrich Drepper  <drepper@redhat.com>
10476
10477         * sysdeps/pthread/pthread.h: Mark pthread_attr_getstackaddr and
10478         pthread_attr_setstackaddr with __attribute_deprecated__.
10479
10480 2002-12-27  Jakub Jelinek  <jakub@redhat.com>
10481
10482         * pt-system.c (system): Remove cancellation handling.
10483         * tst-cancel-wrappers.sh: Allow pt-system.o* to not use the
10484         cancellation routines.
10485
10486 2002-12-28  Ulrich Drepper  <drepper@redhat.com>
10487
10488         * descr.h: Include <dl-sysdep.h>.
10489         (struct pthread): Move header.data.list to the back of the struct.
10490         * sysdeps/i386/tls.h (tcbhead_t): Move list to the back of the struct.
10491         (MULTIPLE_THREADS_OFFSET): Adjust offset.
10492         (SYSINFO_OFFSEET): Likewise.
10493
10494 2002-12-27  Jakub Jelinek  <jakub@redhat.com>
10495
10496         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h (USE_DL_SYSINFO):
10497         Define.
10498         (DL_SYSINFO_DEFAULT): Cast to uintptr_t to avoid warnings.
10499         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h (NEED_DL_SYSINFO,
10500         DL_SYSINFO_DEFAULT, DL_SYSINFO_IMPLEMENTATION): Define.
10501         (USE_DL_SYSINFO): Undef.
10502
10503 2002-12-22  Jakub Jelinek  <jakub@redhat.com>
10504
10505         * Makefile (tests-reverse): Use $(objpfx)../libc.so instead of
10506         $(common-objpfx)libc.so.
10507         * tst-cancel4.c (tf_write, tf_writev): Increase buf sizes so that
10508         it is bigger than pipe buffer size even on arches with bigger
10509         page size.
10510         (tf_usleep): Cast usleep argument to useconds_t to avoid warnings.
10511
10512 2002-12-25  Ulrich Drepper  <drepper@redhat.com>
10513
10514         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Implement
10515         correct errno access for case that USE___THREAD is not defined.
10516
10517 2002-12-24  Ulrich Drepper  <drepper@redhat.com>
10518
10519         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Add missing #endif.
10520         Patch by Marijn Ros <marijn@mad.scientist.com>.
10521
10522 2002-12-22  Roland McGrath  <roland@redhat.com>
10523
10524         * Makefile (omit-deps): Add $(unix-syscalls:%=ptw-%).
10525
10526 2002-12-20  Ulrich Drepper  <drepper@redhat.com>
10527
10528         * sysdeps/pthread/bits/stdio-lock.h (_IO_lock_inexpensive): Define.
10529
10530 2002-12-19  Ulrich Drepper  <drepper@redhat.com>
10531
10532         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Don't define
10533         NEED_DL_SYSINFO since no processor < i686 had the sysenter opcode.
10534         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: New file.
10535
10536         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Use ENTER_KERNEL instead
10537         of int $0x80.
10538         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
10539         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Likewise.
10540         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Likewise.
10541         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
10542         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
10543         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Likewise.
10544         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Likewise.
10545         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Likewise.
10546
10547         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Add support for using
10548         sysenter.
10549         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Likewise.
10550
10551         * sysdeps/i386/tls.h: Unconditionally include <dl-sysdep.h>.
10552
10553         * allocatestack.c (allocate_stack) [NEED_DL_SYSINFO]: Set sysinfo
10554         in new TCB.
10555         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Check
10556         that sysinfo is properly initialized.
10557         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define RTLD_PRIVATE_ERRNO
10558         to 1 only for ld.so.
10559
10560         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define
10561         RTLD_CORRECT_DYNAMIC_WEAK.
10562
10563 2002-12-19  Jakub Jelinek  <jakub@redhat.com>
10564
10565         * forward.c (pthread_attr_init_2_0, pthread_attr_init_2_1):
10566         Use return 0 as 6th argument to FORWARD4.
10567         * pthread_equal.c: Include pthreadP.h instead of pthread.h.
10568
10569 2002-12-18  Ulrich Drepper  <drepper@redhat.com>
10570
10571         * descr.h (struct pthread) [NEED_DL_SYSINFO]: Add sysinfo member.
10572         * sysdeps/i386/tls.h (tcbhead_t): Add sysinfo member.
10573         Define SYSINFO_OFFSEET if NEED_DL_SYSINFO is defined.
10574         (INIT_SYSINFO): New #define.
10575         (TLS_TP_INIT): Use INIT_SYSINFO.
10576         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
10577         At test to make sure SYSINFO_OFFSET value is correct.
10578         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: New file.
10579
10580 2002-12-18  Jakub Jelinek  <jakub@redhat.com>
10581
10582         * sysdeps/pthread/flockfile.c (flockfile): Change into weak alias.
10583         * sysdeps/unix/sysv/linux/raise.c (gsignal): Add weak alias to raise.
10584         * Versions [libc: GLIBC_2.0]: Add pthread_attr_init.
10585         [libpthread: GLIBC_2.1]: Remove __pthread_rwlock_init,
10586         __pthread_rwlock_destroy, __pthread_rwlock_rdlock,
10587         __pthread_rwlock_wrlock, __pthread_rwlock_unlock,
10588         __pthread_rwlock_tryrdlock and __pthread_rwlock_trywrlock.
10589
10590 2002-12-18  Ulrich Drepper  <drepper@redhat.com>
10591
10592         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Use ENTER_KERNEL
10593         macro instead of using int $0x80 directly.
10594
10595         * sysdeps/pthread/bits/stdio-lock.h: New file.
10596         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: New file.
10597         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevelmutex.S: New file.
10598         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevelmutex.S: New file.
10599         * Makefile (routines): Add libc-lowlevelmutex.
10600
10601         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Remove
10602         __i686.get_pc_thunk.dx.
10603
10604 2002-12-17  Jakub Jelinek  <jakub@redhat.com>
10605
10606         * Makefile (libpthread-shared-only-routines): Add pt-allocrtsig.
10607         (tests): Depend on $(objpfx)tst-cancel-wrappers.out.
10608         ($(objpfx)tst-cancel-wrappers.out): New rule.
10609         * tst-cancel-wrappers.sh: New test.
10610         * tst-locale1.c: Include signal.h.
10611         (uselocale): Test static linking of __libc_current_sigrt*.
10612
10613 2002-12-17  Ulrich Drepper  <drepper@redhat.com>
10614
10615         * Makefile (tests): Add tst-cancel6.
10616         * tst-cancel6.c: New file
10617
10618 2002-12-17  Jakub Jelinek  <jakub@redhat.com>
10619
10620         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (SINGLE_THREAD_P):
10621         Define meaningfully for assembler as well.
10622         * pthreadP.h (struct pthread_functions): Remove
10623         ptr_pthread_attr_init field.  Add ptr_pthread_attr_init_2_0
10624         and ptr_pthread_attr_init_2_1 fields.
10625         * init.c (pthread_functions): Initialize ptr_pthread_attr_init_2_0
10626         and ptr_pthread_attr_init_2_1 instead of ptr_pthread_attr_init.
10627         * forward.c (FORWARD4): Renamed from FORWARD3. Add export argument.
10628         (FORWARD3): Define using FORWARD4.
10629         (pthread_attr_init): Provide both @GLIBC_2.0 and @@GLIBC_2.1
10630         versions.
10631         * pt-system.c: Remove duplicate stdlib.h include.
10632
10633 2002-12-16  Ulrich Drepper  <drepper@redhat.com>
10634
10635         * sem_init.c: Define sem_init@GLIBC_2.0.
10636         * sem_destroy.c: Define sem_destroy@GLIBC_2.0.
10637         * sem_getvalue.c: Define sem_getvalue@GLIBC_2.0.
10638
10639         * flockfile.c: Moved to...
10640         * sysdeps/pthread/flockfile.c: ...here.  New file.
10641         * funlockfile.c: Moved to...
10642         * sysdeps/pthread/funlockfile.c: ...here.  New file.
10643         * ftrylockfile.c: Moved to...
10644         * sysdeps/pthread/ftrylockfile.c: ...here.  New file.
10645
10646 2002-12-16  Jakub Jelinek  <jakub@redhat.com>
10647
10648         * libc-cancellation.c: Guard both function with
10649         #if !defined NOT_IN_libc.
10650         * Makefile (libpthread-routines): Use ptw-, not pt- prefix for the
10651         automatically provided pthread wrappers.
10652         * pthreadP.h (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET): Define to
10653         CANCEL_* if IS_IN_libpthread and to dummy versions if not in libc
10654         nor in libpthread.
10655         * pt-open.c: Removed.
10656         * pt-fcntl.c: Removed.
10657         * pt-fsync.c: Removed.
10658         * pt-lseek.c: Removed.
10659         * pt-msgrcv.c: Removed.
10660         * pt-msgsnd.c: Removed.
10661         * pt-msync.c: Removed.
10662         * pt-nanosleep.c: Removed.
10663         * pt-open64.c: Removed.
10664         * pt-pause.c: Removed.
10665         * pt-pread.c: Removed.
10666         * pt-pread64.c: Removed.
10667         * pt-pwrite.c: Removed.
10668         * pt-pwrite64.c: Removed.
10669         * pt-read.c: Removed.
10670         * pt-recv.c: Removed.
10671         * pt-recvfrom.c: Removed.
10672         * pt-recvmsg.c: Removed.
10673         * pt-send.c: Removed.
10674         * pt-sendto.c: Removed.
10675         * pt-sigtimedwait.c: Removed.
10676         * pt-sigwait.c: Removed.
10677         * pt-wait.c: Removed.
10678         * pt-waitpid.c: Removed.
10679         * pt-write.c: Removed.
10680         * pt-accept.c: Removed.
10681         * pt-close.c: Removed.
10682         * pt-connect.c: Removed.
10683         * pt-lseek64.c: Removed.
10684         * pt-sendmsg.c: Removed.
10685         * pt-tcdrain.c: Removed.
10686
10687 2002-12-15  Ulrich Drepper  <drepper@redhat.com>
10688
10689         * init.c (__pthread_initialize_minimal_internal): Renamed from
10690         __pthread_initialize_minimal.  Make old name an alias.  This
10691         converts a normal relocation into a relative relocation.
10692
10693         * pt-fcntl.c (__fcntl): Use fcntl64 syscall, not fcntl.
10694
10695         * Versions [libpthread: GLIBC_2.3.2]: Remove creat, poll, pselect,
10696         readv, select, sigpause, sigsuspend, sigwaitinfo, waitid, writev.
10697         * Makefile (libpthread-routines): Remove pt-creat, pt-poll,
10698         pt-pselect, pt-readv, pt-select, pt-sigpause, pt-sigsuspend,
10699         pt-sigwaitinfo, pt-waitid, and pt-writev.
10700         * pt-creat.c: Removed.
10701         * pt-poll.c: Removed.
10702         * pt-pselect.c: Removed.
10703         * pt-readv.c: Removed.
10704         * pt-select.c: Removed.
10705         * pt-sigpause.c: Removed.
10706         * pt-sigsuspend.c: Removed.
10707         * pt-sigwaitinfo.c: Removed.
10708         * pt-waitid.c: Removed.
10709         * pt-writev.c: Removed.
10710
10711         * init.c (pthread_functions): New variable.
10712         (__pthread_initialize_minimal): Pass pointer to pthread_functions
10713         (or NULL) to __libc_pthread_init.
10714         * forward.c: Rewrite to use __libc:pthread_functions array to get
10715         function addresses.
10716         * sysdeps/unix/sysv/linux/fork.h: Remove __libc_pthread_init
10717         prototype.
10718         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
10719         Take new parameter.  Copy content of variable pointed to by it
10720         to __libc_pthread_init.
10721
10722         * pthreadP.h (struct pthread_functions): New type.
10723         (__libc_pthread_init): Declare.
10724
10725         * pthread_attr_destroy.c: Add namespace protected alias.
10726         * pthread_attr_getdetachstate.c: Likewise.
10727         * pthread_attr_getinheritsched.c: Likewise.
10728         * pthread_attr_getschedparam.c: Likewise.
10729         * pthread_attr_getschedpolicy.c: Likewise.
10730         * pthread_attr_getscope.c: Likewise.
10731         * pthread_attr_setdetachstate.c: Likewise.
10732         * pthread_attr_setinheritsched.c: Likewise.
10733         * pthread_attr_setschedparam.c: Likewise.
10734         * pthread_attr_setschedpolicy.c: Likewise.
10735         * pthread_attr_setscope.c: Likewise.
10736         * pthread_cond_broadcast.c: Likewise.
10737         * pthread_cond_destroy.c: Likewise.
10738         * pthread_cond_init.c: Likewise.
10739         * pthread_cond_signal.c: Likewise.
10740         * pthread_cond_wait.c: Likewise.
10741         * pthread_condattr_destroy.c: Likewise.
10742         * pthread_condattr_init.c: Likewise.
10743         * pthread_equal.c: Likewise.
10744         * pthread_exit.c: Likewise.
10745         * pthread_getschedparam.c: Likewise.
10746         * pthread_self.c: Likewise.
10747         * pthread_setcancelstate.c: Likewise.
10748         * pthread_setschedparam.c: Likewise.
10749         * pthread_mutex_destroy.c: Likewise.
10750         * pthread_mutex_init.c: Likewise.
10751         * pthreadP.h: Add prototypes for the aliases.
10752
10753         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Set
10754         multiple_threads member in correct TCB to 1.
10755
10756         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define
10757         SINGLE_THREAD_P.  If in libc or libpthread examine multiple_thread
10758         member of thread decriptor, otherwise return unconditionally 1.
10759
10760 2002-12-14  Ulrich Drepper  <drepper@redhat.com>
10761
10762         * sysdeps/unix/sysv/linux/i386/pt-socket.S: Changes folded into the
10763         regular Linux version.  Remove file.
10764         * sysdeps/unix/sysv/linux/connect.S: Likewise.  Remove file.
10765         * sysdeps/unix/sysv/linux/llseek.c: Likewise.  Remove file.
10766         * sysdeps/unix/sysv/linux/msgrcv.c: Likewise.  Remove file.
10767         * sysdeps/unix/sysv/linux/msgsnd.c: Likewise.  Remove file.
10768         * sysdeps/unix/sysv/linux/open64.c: Likewise.  Remove file.
10769         * sysdeps/unix/sysv/linux/poll.c: Likewise.  Remove file.
10770         * sysdeps/unix/sysv/linux/pread.c: Likewise.  Remove file.
10771         * sysdeps/unix/sysv/linux/pread64.c: Likewise.  Remove file.
10772         * sysdeps/unix/sysv/linux/pselect.c: Likewise.  Remove file.
10773         * sysdeps/unix/sysv/linux/pwrite.c: Likewise.  Remove file.
10774         * sysdeps/unix/sysv/linux/pwrite64.c: Likewise.  Remove file.
10775         * sysdeps/unix/sysv/linux/readv.c: Likewise.  Remove file.
10776         * sysdeps/unix/sysv/linux/recv.S: Likewise.  Remove file.
10777         * sysdeps/unix/sysv/linux/recvfrom.S: Likewise.  Remove file.
10778         * sysdeps/unix/sysv/linux/recvmsg.S: Likewise.  Remove file.
10779         * sysdeps/unix/sysv/linux/send.S: Likewise.  Remove file.
10780         * sysdeps/unix/sysv/linux/sendmsg.S: Likewise.  Remove file.
10781         * sysdeps/unix/sysv/linux/sendto.S: Likewise.  Remove file.
10782         * sysdeps/unix/sysv/linux/sigpause.c: Likewise.  Remove file.
10783         * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise.  Remove file.
10784         * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.  Remove file.
10785         * sysdeps/unix/sysv/linux/sigwait.c: Likewise.  Remove file.
10786         * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.  Remove file.
10787         * sysdeps/unix/sysv/linux/system.c: Likewise.  Remove file.
10788         * sysdeps/unix/sysv/linux/tcdrain.c: Likewise.  Remove file.
10789         * sysdeps/unix/sysv/linux/wait.c: Likewise.  Remove file.
10790         * sysdeps/unix/sysv/linux/waitid.c: Likewise.  Remove file.
10791         * sysdeps/unix/sysv/linux/waitpid.c: Likewise.  Remove file.
10792         * sysdeps/unix/sysv/linux/writev.c: Likewise.  Remove file.
10793         * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.  Remove file.
10794
10795 2002-12-14  Jakub Jelinek  <jakub@redhat.com>
10796
10797         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: New file.
10798         * sysdeps/unix/sysv/linux/open.c: Removed.
10799         * sysdeps/unix/sysv/linux/fsync.c: Removed.
10800         * sysdeps/unix/sysv/linux/lseek.c: Removed.
10801         * sysdeps/unix/sysv/linux/msync.c: Removed.
10802         * sysdeps/unix/sysv/linux/read.c: Removed.
10803         * sysdeps/unix/sysv/linux/close.c: Removed.
10804         * sysdeps/unix/sysv/linux/creat.c: Removed.
10805         * sysdeps/unix/sysv/linux/nanosleep.c: Removed.
10806         * sysdeps/unix/sysv/linux/pause.c: Removed.
10807         * sysdeps/unix/sysv/linux/select.c: Removed.
10808         * sysdeps/unix/sysv/linux/write.c: Removed.
10809
10810 2002-12-14  Ulrich Drepper  <drepper@redhat.com>
10811
10812         * sysdeps/unix/sysv/linux/i386/pt-socket.S: Check multiple_threads
10813         element in TCB to see whether locking is needed.
10814
10815         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Check that
10816         MULTIPLE_THREADS_OFFSET value is correct.
10817
10818         * sysdeps/unix/sysv/linux/close.c: New file.
10819         * sysdeps/unix/sysv/linux/connect.S: New file.
10820         * sysdeps/unix/sysv/linux/creat.c: New file.
10821         * sysdeps/unix/sysv/linux/fsync.c: New file.
10822         * sysdeps/unix/sysv/linux/llseek.c: New file.
10823         * sysdeps/unix/sysv/linux/lseek.c: New file.
10824         * sysdeps/unix/sysv/linux/msgrcv.c: New file.
10825         * sysdeps/unix/sysv/linux/msgsnd.c: New file.
10826         * sysdeps/unix/sysv/linux/msync.c: New file.
10827         * sysdeps/unix/sysv/linux/nanosleep.c: New file.
10828         * sysdeps/unix/sysv/linux/open.c: New file.
10829         * sysdeps/unix/sysv/linux/open64.c: New file.
10830         * sysdeps/unix/sysv/linux/pause.c: New file.
10831         * sysdeps/unix/sysv/linux/poll.c: New file.
10832         * sysdeps/unix/sysv/linux/pread.c: New file.
10833         * sysdeps/unix/sysv/linux/pread64.c: New file.
10834         * sysdeps/unix/sysv/linux/pselect.c: New file.
10835         * sysdeps/unix/sysv/linux/pwrite.c: New file.
10836         * sysdeps/unix/sysv/linux/pwrite64.c: New file.
10837         * sysdeps/unix/sysv/linux/readv.c: New file.
10838         * sysdeps/unix/sysv/linux/recv.S: New file.
10839         * sysdeps/unix/sysv/linux/recvfrom.S: New file.
10840         * sysdeps/unix/sysv/linux/recvmsg.S: New file.
10841         * sysdeps/unix/sysv/linux/select.c: New file.
10842         * sysdeps/unix/sysv/linux/send.S: New file.
10843         * sysdeps/unix/sysv/linux/sendmsg.S: New file.
10844         * sysdeps/unix/sysv/linux/sendto.S: New file.
10845         * sysdeps/unix/sysv/linux/sigpause.c: New file.
10846         * sysdeps/unix/sysv/linux/sigsuspend.c: New file.
10847         * sysdeps/unix/sysv/linux/sigtimedwait.c: New file.
10848         * sysdeps/unix/sysv/linux/sigwait.c: New file.
10849         * sysdeps/unix/sysv/linux/sigwaitinfo.c: New file.
10850         * sysdeps/unix/sysv/linux/system.c: New file.
10851         * sysdeps/unix/sysv/linux/tcdrain.c: New file.
10852         * sysdeps/unix/sysv/linux/wait.c: New file.
10853         * sysdeps/unix/sysv/linux/waitid.c: New file.
10854         * sysdeps/unix/sysv/linux/waitpid.c: New file.
10855         * sysdeps/unix/sysv/linux/writev.c: New file.
10856         * sysdeps/unix/sysv/linux/i386/fcntl.c: New file.
10857
10858         * pt-readv.c: Fix comment.
10859
10860 2002-12-14  Jakub Jelinek  <jakub@redhat.com>
10861
10862         * tst-cleanup1.c: Include stdlib.h.
10863
10864         * tst-cancel5.c: New test.
10865         * Makefile (tests): Add tst-cancel5.
10866         (tst-cancel5): Link against libc.so libpthread.so in that order.
10867
10868 2002-12-13  Ulrich Drepper  <drepper@redhat.com>
10869
10870         * forward.c (test_loaded): Prevent recursive calls.
10871
10872         * Makefile (routines): Add libc-cancellation.
10873         * libc-cancellation.c: New file.
10874         * descr.h (struct pthread): Add multiple_threads field.
10875         * allocatestack.c (allocate_stack): Initialize multiple_header field of
10876         new thread descriptor to 1.
10877         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread):
10878         Initialize multiple_thread field after successful thread creation.
10879         * cancellation.c (__do_cancel): Move to pthreadP.h.
10880         (__pthread_enable_asynccancel): Remove parameter from __do_cancel call.
10881         (__pthread_disable_asynccancel): Add internal_function attribute.
10882         * init.c (sigcancel_handler): Remove parameter from __do_cancel call.
10883         * pthread_setcancelstate.c: Likewise.
10884         * pthread_setcanceltype.c: Likewise.
10885         * pthread_exit.c: Likewise.
10886         * pthreadP.h (CANCELLATION_P): Likewise.
10887         (__do_cancel): Define as static inline.
10888         (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET): New #defines.
10889         (__libc_enable_asynccancel, __libc_disable_asynccancel): New
10890         declarations.
10891         * sysdeps/i386/tls.h (tcbhead_t): Add list and multiple_threads
10892         fields.  Define MULTIPLE_THREADS_OFFSET.
10893         * sysdeps/pthread/bits/libc-lock.h: Remove __libc_locking_needed
10894         declaration.
10895         * sysdeps/unix/sysv/linux/accept.S: New file.
10896         * sysdeps/unix/sysv/linux/read.c: New file.
10897         * sysdeps/unix/sysv/linux/write.c: New file.
10898         * sysdeps/unix/sysv/linux/i386/pt-socket.S: New file.
10899         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Remove definition and
10900         initialization of __libc_locking_needed.
10901         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Don't use
10902         __libc_locking_needed, use multiple_threads field in TCB.
10903         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
10904
10905 2002-12-12  Ulrich Drepper  <drepper@redhat.com>
10906
10907         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevellock.S: Use i486
10908         version.
10909         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevellock.S: Likewise.
10910
10911         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Correct
10912         access to __libc_locking_needed for PIC.
10913
10914 2002-12-12  Jakub Jelinek  <jakub@redhat.com>
10915
10916         * sysdeps/pthread/bits/libc-lock.h (__libc_locking_needed): Only
10917         declare for libc.so.
10918         (__libc_lock_init, __libc_lock_init_recursive): Change into comma
10919         expression.
10920         (__libc_lock_lock): Put into statement expression.
10921         (__libc_lock_unlock): Remove trailing semicolon.
10922         * sysdeps/unix/sysv/linux/fork.h (__libc_pthread_init): Fix typo.
10923
10924 2002-12-12  Roland McGrath  <roland@redhat.com>
10925
10926         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use asm operand with
10927         "m" constraint to refer to __libc_locking_needed.  Declare it here.
10928
10929 2002-12-12  Ulrich Drepper  <drepper@redhat.com>
10930
10931         * sysdeps/unix/sysv/linux/fork-gen.c: Renamed to...
10932         * sysdeps/unix/sysv/linux/libc_pthread_init.c: ...this.
10933         Initialize __libc_locking_needed.
10934         * init.c (__pthread_initialize_minimal): Call __libc_pthread_init
10935         instead of __register_pthread_fork_handler.
10936         * sysdeps/pthread/bits/libc-lock.h: Declare __libc_locking_needed.
10937         * sysdeps/unix/sysv/linux/Makefile (sysdep_routimes): Replace
10938         fork-gen with libc_pthread_init.
10939         * sysdeps/unix/sysv/linux/Versions: Use __libc_pthread_init instead
10940         of __register_pthread_fork_handler.
10941         * sysdeps/unix/sysv/linux/fork.h: Declare __libc_pthread_init instead
10942         of __register_pthread_fork_handler.
10943         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use
10944         __libc_locking_needed to determine whether lock prefix can be avoided.
10945         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
10946
10947 2002-12-11  Ulrich Drepper  <drepper@redhat.com>
10948
10949         * Makefile (tests): Add tst-cleanup1.
10950         * tst-cleanup1.c: New file.
10951         * cancellation.c (__cleanup_thread): Removed.
10952         (__do_cancel): Remove call to __cleanup_thread.
10953         * pthreadP.h: Remove __cleanup_thread prorotype.
10954
10955         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_region_start):
10956         Remember function and argument even if cancellation handler
10957         function is not available.
10958         (__libc_cleanup_region_end): Execute registered function directly if
10959         pthread functions are not available.
10960         (__libc_cleanup_end): Likewise.
10961
10962         * init.c (__pthread_initialize_minimal): Fix initialization in
10963         static lib by preventing gcc from being too clever.
10964
10965 2002-12-10  Ulrich Drepper  <drepper@redhat.com>
10966
10967         * init.c (__pthread_initialize_minimal): Remove unneccesary
10968         sigaddset call.
10969
10970         * Makefile (tests): We can run tst-locale2 now.
10971
10972 2002-12-09  Ulrich Drepper  <drepper@redhat.com>
10973
10974         * Versions: Remove duplicated sigwait entry.
10975
10976 2002-12-08  Ulrich Drepper  <drepper@redhat.com>
10977
10978         * pthreadP.h: Enable pthread_cleanup_{push,pop} optimizations only
10979         inside libpthread.
10980
10981         * pt-fcntl.c (__fcntl): Initialize oldtype to avoid warning.
10982
10983         * pthreadP.h: Declare __pthread_enable_asynccancel and
10984         __pthread_disable_asynccancel.
10985         (CANCEL_ASYNC): Use __pthread_enable_asynccancel.
10986         (CANCEL_RESET): Use __pthread_disable_asynccancel.
10987         * cancellation.c (__pthread_enable_asynccancel): New function.
10988         (__pthread_disable_asynccancel): New function.
10989         * pt-accept.c: Adjust for CANCEL_ASYNC and CANCEL_RESET change.
10990         * pt-close.c: Likewise.
10991         * pt-connect.c: Likewise.
10992         * pt-creat.c: Likewise.
10993         * pt-fcntl.c: Likewise.
10994         * pt-fsync.c: Likewise.
10995         * pt-lseek.c: Likewise.
10996         * pt-lseek64.c: Likewise.
10997         * pt-msgrcv.c: Likewise.
10998         * pt-msgsnd.c: Likewise.
10999         * pt-msync.c: Likewise.
11000         * pt-nanosleep.c: Likewise.
11001         * pt-open.c: Likewise.
11002         * pt-open64.c: Likewise.
11003         * pt-pause.c: Likewise.
11004         * pt-poll.c: Likewise.
11005         * pt-pread.c: Likewise.
11006         * pt-pread64.c: Likewise.
11007         * pt-pselect.c: Likewise.
11008         * pt-pwrite.c: Likewise.
11009         * pt-pwrite64.c: Likewise.
11010         * pt-read.c: Likewise.
11011         * pt-readv.c: Likewise.
11012         * pt-recv.c: Likewise.
11013         * pt-recvfrom.c: Likewise.
11014         * pt-recvmsg.c: Likewise.
11015         * pt-select.c: Likewise.
11016         * pt-send.c: Likewise.
11017         * pt-sendmsg.c: Likewise.
11018         * pt-sendto.c: Likewise.
11019         * pt-sigpause.c: Likewise.
11020         * pt-sigsuspend.c: Likewise.
11021         * pt-sigtimedwait.c: Likewise.
11022         * pt-sigwait.c: Likewise.
11023         * pt-sigwaitinfo.c: Likewise.
11024         * pt-system.c: Likewise.
11025         * pt-tcdrain.c: Likewise.
11026         * pt-wait.c: Likewise.
11027         * pt-waitid.c: Likewise.
11028         * pt-waitpid.c: Likewise.
11029         * pt-write.c: Likewise.
11030         * pt-writev.c: Likewise.
11031         * pthread_join.c: Likewise.
11032         * pthread_timedjoin.c: Likewise.
11033
11034         * pt-sigpause.c (sigsuspend): Call __sigsuspend.
11035         (__xpg_sigpause): New function.
11036         * Versions (libpthread:GLIBC_2.3.2): Add __xpg_sigpause.
11037
11038 2002-12-07  Ulrich Drepper  <drepper@redhat.com>
11039
11040         * Makefile (CFLAGS-ftrylockfile.c): Add -D_IO_MTSAFE_IO.
11041
11042         * cleanup.c: Move declarations of _GI_pthread_cleanup_push and
11043         _GI_pthread_cleanup_pop to pthreadP.h.
11044
11045         * ftrylockfile.c: Use _IO_lock_trylock instead of
11046         pthread_mutex_trylock.
11047
11048         * pthreadP.h (CANCEL_ASYNC): Use __pthread_setcanceltype.
11049         (CANCEL_RESET): Likewise.
11050         (__pthread_setcanceltype_): Declare.
11051         (__pthread_mutex_lock_internal): Declare.
11052         (__pthread_mutex_unlock_internal): Declare.
11053         (__pthread_once_internal): Declare.
11054         (pthread_cleanup_push): Redefine using _GI_pthread_cleanup_push.
11055         (pthread_cleanup_pop): Redefine using _GI_pthread_cleanup_pop.
11056
11057         * pthread_cond_timedwait.c: Use INTUSE is calls to pthread_mutex_lock
11058         and pthread_mutex_unlock.
11059         * pthread_cond_wait.c: Likewise.
11060         * pthread_mutex_lock.c: Use INTDEF to define alias if needed.
11061         * pthread_mutex_unlock.c: Likewise.
11062
11063         * pthread_setcanceltype.c: Add additional alias
11064         __pthread_setcanceltype.
11065
11066         * sem_unlink.c (sem_unlink): Use __pthread_once with INTDEF.
11067         * sem_open.c (sem_open): Likewise.
11068         Use __libc_open, __libc_write, and __libc_close instead of
11069         open, write, and close respectively.
11070
11071         * sysdeps/pthread/bits/libc-lock.h (__libc_lock_trylock_internal):
11072         Rewrite as statement expression since it must return a value.
11073
11074         * pthread_cancel.c: Use __pthread_kill instead of pthread_kill.
11075         * sysdeps/unix/sysv/linux/pthread_kill.c: Define additional alias
11076         __pthread_kill.
11077
11078         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Define additional
11079         alias __pthread_once_internal.
11080
11081         * sysdeps/unix/sysv/linux/raise.c: Use libc_hidden_def for raise.
11082
11083 2002-12-06  Ulrich Drepper  <drepper@redhat.com>
11084
11085         * Makefile (tests): Add tst-stdio1 and tst-stdio2.
11086         * tst-stdio1.c: New file.
11087         * tst-stdio2.c: New file.
11088
11089         * init.c (__pthread_initialize_minimal): Correct INIT_LIST_HEAD use.
11090
11091         * Makefile (tests): Comment out tst-locale2 for now.
11092         (CFLAGS-flockfile.c, CFLAGS-funlockfile.c): Define to -D_IO_MTSAFE_IO.
11093
11094         * sysdeps/unix/sysv/linux/Makefile: Define CFLAGS-fork.c to
11095         -D_IO_MTSAFE_IO.
11096         * sysdeps/unix/sysv/linux/fork.c: Include <bits/stdio-lock.h>.
11097         Use _IO_lock_init instead of explicit assignment.
11098
11099         * sysdeps/pthread/bits/libc-lock.h: Define __rtld_lock_* macros.
11100         Define __libc_lock_* and __libc_lock_recursive macros with
11101         lowlevellock macros, not pthread mutexes.
11102
11103         * flockfile.c: Include <bits/stdio-lock.h>.  Use _IO_lock_lock instead
11104         of pthread_mutex_lock.
11105         * funlockfile.c: Include <bits/stdio-lock.h>.  Use _IO_lock_unlock
11106         instead of pthread_mutex_unlock.
11107
11108 2002-12-06  Roland McGrath  <roland@redhat.com>
11109
11110         * allocatestack.c (__stack_user): Use uninitialized defn.
11111         * init.c (__pthread_initialize_minimal): Initialize it here.
11112
11113 2002-12-05  Roland McGrath  <roland@redhat.com>
11114
11115         * sysdeps/i386/tls.h (TLS_INIT_TP): Make it return zero or an error
11116         string.
11117         * sysdeps/x86_64/tls.h (TLS_INIT_TP): Likewise.
11118
11119         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Add
11120         missing & here too.
11121
11122 2002-12-05  Ulrich Drepper  <drepper@redhat.com>
11123
11124         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove
11125         lowlevellock.
11126         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: New file.
11127         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevellock.S: New file.
11128         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevellock.S: New file.
11129         * sysdeps/pthread/bits/libc-lock.h: Use lowlevellock implementation
11130         for __libc_lock_* macros.
11131         * Makefile (routines): Add libc-lowlevellock.
11132
11133 2002-10-09  Roland McGrath  <roland@redhat.com>
11134
11135         * sysdeps/pthread/bits/libc-lock.h (__libc_maybe_call): New macro.
11136         Under [__PIC__], call the function via the pointer fetched for
11137         comparison rather than a call by name that uses the PLT.
11138         (__libc_lock_init, __libc_rwlock_init, __libc_lock_fini)
11139         (__libc_rwlock_fini, __libc_lock_lock, __libc_rwlock_rdlock)
11140         (__libc_rwlock_wrlock, __libc_lock_trylock, __libc_rwlock_tryrdlock)
11141         (__libc_rwlock_trywrlock, __libc_lock_unlock, __libc_rwlock_unlock)
11142         (__libc_key_create, __libc_getspecific, __libc_setspecific): Use it.
11143
11144 2002-12-04  Roland McGrath  <roland@redhat.com>
11145
11146         * forward.c (pthread_self): Use FORWARD3 macro to correct return type.
11147
11148         * sysdeps/i386/td_ta_map_lwp2thr.c: Moved from ../nptl_db.
11149         * sysdeps/generic/td_ta_map_lwp2thr.c: New file.
11150
11151         * pthread_create.c (start_thread): Add missing & on __nptl_last_event.
11152
11153 2002-12-04  Ulrich Drepper  <drepper@redhat.com>
11154
11155         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Make pthread_t
11156         a completely opaque, non-integer type.
11157         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
11158
11159 2002-12-05  Jakub Jelinek  <jakub@redhat.com>
11160
11161         * sysdeps/i386/tls.h: Include stdlib.h.
11162         * sysdeps/x86_64/tls.h: Likewise.
11163
11164 2002-12-04  Ulrich Drepper  <drepper@redhat.com>
11165
11166         * Makefile (tests): Add tst-locale2.
11167         (tests-static): Likewise.
11168         * tst-locale2.c: New file.
11169
11170         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Mark asms as
11171         volatile and add memory clobbers to lock operations.
11172
11173 2002-12-03  Ulrich Drepper  <drepper@redhat.com>
11174
11175         * sysdeps/i386/i686/bits/atomic.h: Use i486 version.
11176         * sysdeps/i386/i486/bits/atomic.h: New file.
11177         * sysdeps/i386/i586/bits/atomic.h: New file.
11178         * sysdeps/i386/i686/pthread_spin_trylock.S: Define HAVE_CMOV and
11179         include i486 version.
11180         * sysdeps/i386/i486/pthread_spin_trylock.S: New file.
11181         * sysdeps/i386/i586/pthread_spin_trylock.S: New file.
11182         Patch by Marijn Ros <marijn@mad.scientist.com>.
11183
11184         * allocatestack.c (get_cached_stack): Don't crash if we first
11185         found a stack with a larger size then needed.
11186         Reported by Hui Huang <hui.huang@sun.com>.
11187
11188         * Makefile (tests): Add tst-sysconf.
11189         * tst-sysconf.c: New file.
11190
11191         * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine
11192         PTHREAD_THREADS_MAX.
11193
11194 2002-12-02  Roland McGrath  <roland@redhat.com>
11195
11196         * pthreadP.h (__stack_user, __nptl_create_event, __nptl_death_event):
11197         Declare using hidden_proto instead of attribute_hidden, so there are
11198         non-.hidden static symbols for gdb to find.
11199         (__pthread_keys): Likewise.
11200         * events.c (__nptl_create_event, __nptl_death_event): Add hidden_def.
11201         * allocatestack.c (__stack_user): Likewise.
11202         * pthread_create.c (__pthread_keys): Likewise.
11203         (__nptl_threads_events, __nptl_last_event): Make these static instead
11204         of hidden.
11205         * pthread_key_create.c (__pthread_pthread_keys_max,
11206         __pthread_pthread_key_2ndlevel_size): Renamed from __linuxthreads_*.
11207
11208 2002-12-02  Ulrich Drepper  <drepper@redhat.com>
11209
11210         * Makefile (tests): Add tst-locale1.  If buid-static is yes link
11211         statically.
11212         * tst-locale1.c: New file.
11213
11214         * pthread_cond_timedwait.c: Include <stdlib.h>.
11215
11216         * Makefile (tests): Add tst-fork2 and tst-fork3.
11217         * tst-fork2.c: New file.
11218         * tst-fork3.c: New file.
11219
11220 2002-11-28  Ulrich Drepper  <drepper@redhat.com>
11221
11222         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: New file.
11223
11224         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define macros which
11225         require it to 200112L.
11226
11227         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Use cmov
11228         instruction only if HAVE_CMOV is defined.
11229         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrwlock.S: Define HAVE_CMOV.
11230
11231         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: New file.
11232
11233         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: New file.
11234
11235         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: New file.
11236
11237         * sysdeps/unix/sysv/linux/x86_64/pt-vfork.S: New file.
11238
11239 2002-11-27  Ulrich Drepper  <drepper@redhat.com>
11240
11241         * sysdeps/x86_64/bits/atomic.h: New file.
11242
11243         * sysdeps/i386/i686/bits/atomic.h: Fix asm syntax for 8- and
11244         16-bit operations.
11245
11246         * sysdeps/unix/sysv/linux/raise.c (raise): Use INTERNAL_SYSCALL if
11247         possible since gettid cannot fail.
11248
11249         * sysdeps/x86_64/pthreaddef.h: New file.
11250
11251         * sysdeps/i386/pthreaddef.h (gettid): Removed.
11252
11253         * sysdeps/x86_64/pthread_spin_init.c: New file.
11254         * sysdeps/x86_64/pthread_spin_lock.c: New file.
11255         * sysdeps/x86_64/pthread_spin_trylock.c: New file.
11256         * sysdeps/x86_64/pthread_spin_unlock.c: New file.
11257
11258         * sysdeps/i386/i686/pthread_spin_trylock.S (pthread_spin_trylock):
11259         Add missing lock prefix.  Minute optimization.
11260
11261         * tst-spin2.c (main): Also check successful trylock call.
11262
11263         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Use correct
11264         syscall.  Fix typo in case INTERNAL_SYSCALL is not used.
11265
11266         * sysdeps/i386/pthread_spin_destroy.c: Moved to...
11267         * sysdeps/pthread/pthread_spin_destroy.c: ...here.  New file.
11268
11269         * sysdeps/i386/pthread_sigmask.c: Removed.  Use the generic code.
11270         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Return correct
11271         value in case of an error.  Add support for INTERNAL_SYSCALL.
11272
11273         * sysdeps/i386/pthread_sigmask.c (pthread_sigmask): Return correct
11274         value in case of an error.
11275
11276         * sysdeps/x86_64/tls.h: New file.
11277
11278 2002-11-26  Ulrich Drepper  <drepper@redhat.com>
11279
11280         * sysdeps/i386/tls.h (THREAD_GETMEM_NC): Change interface.  It now
11281         takes the array member name and the index as parameters.
11282         (THREAD_SETMEM_NC): Likewise.
11283         * pthread_getspecific.c: Use new THREAD_GETMEM_NC interface.
11284         * pthread_setspecific.c: Use new THREAD_GETMEM_NC and THREAD_SETMEM_NC
11285         interfaces.
11286
11287         * sysdeps/i386/tls.h (THREAD_SETMEM): Use size of member element
11288         to decide which code to use.
11289         (THREAD_SETMEM_NC): Likewise.
11290
11291         * allocatestack.c (queue_stack): Don't remove stack from list here.
11292         Do it in the caller.  Correct condition to prematurely terminate
11293         loop to free stacks.
11294         (__deallocate_stack): Remove stack from list here.
11295
11296 2002-11-26  Ulrich Drepper  <drepper@redhat.com>
11297
11298         * Makefile (tests): Add tst-stack1.
11299         * tst-stack1.c: New file.
11300
11301         * allocatestack.c (allocate_stack): Initialize the TCB on a user
11302         provided stack.
11303
11304         * pthread_attr_getstack.c: Return bottom of the thread area.
11305
11306 2002-11-25  Ulrich Drepper  <drepper@redhat.com>
11307
11308         * Makefile (libpthread-routines): Add pt-allocrtsig and
11309         pthread_kill_other_threads.
11310         * pt-allocrtsig.c: New file.
11311         * pthread_kill_other_threads.c: New file.
11312         * sysdeps/unix/sysv/linux/allocrtsig.c: Add additional aliases for
11313         all three functions.
11314         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove
11315         allocrtsig.
11316         * sysdeps/unix/sysv/linux/Versions (libc:GLIBC_PRIVATE): Export
11317         __libc_current_sigrtmin_private, __libc_current_sigrtmax_private,
11318         and __libc_allocate_rtsig_private.
11319         * Versions (libpthread): Export pthread_kill_other_threads_np,
11320         __libc_current_sigrtmin, and __libc_current_sigrtmax.
11321
11322 2002-11-24  Ulrich Drepper  <drepper@redhat.com>
11323
11324         * allocatestack.c (allocate_stack): stackaddr in attribute points to
11325         the end of the stack.  Adjust computations.
11326         When mprotect call fails dequeue stack and free it.
11327         * pthread_attr_setstack.c: Store top of the stack in stackaddr
11328         attribute.
11329         * pthread_getattr_np.c: Likewise.
11330
11331         * descr.h (IS_DETACHED): Add some more parenthesis to prevent
11332         surprises.
11333
11334 2002-11-23  Ulrich Drepper  <drepper@redhat.com>
11335
11336         * sysdeps/pthread/pthread.h (pthread_self): __THROW must come before
11337         attribute definitions.  Patch by Luca Barbieri <ldb@ldb.ods.org>.
11338
11339 2002-11-22  Ulrich Drepper  <drepper@redhat.com>
11340
11341         * pthread_getspecific.c: Optimize access to first 2nd-level array.
11342         * pthread_setspecific.c: Likewise.
11343
11344 2002-11-21  Ulrich Drepper  <drepper@redhat.com>
11345
11346         * sysdeps/unix/sysv/linux/i386/createthread.c: Remove CLONE_ flags
11347         definitions.  Get them from the official place.
11348         * sysdeps/unix/sysv/linux/i386/fork.c: Likewise.
11349
11350         * sysdeps/unix/sysv/linux/i386/createthread.c: Update CLONE_* flags.
11351         Use new CLONE_ flags in clone() calls.
11352
11353         * sysdeps/unix/sysv/linux/fork.c: Use ARCH_FORK to actually fork.
11354         * sysdeps/unix/sysv/linux/i386/fork.c: New file.
11355
11356         * Versions: Add pthread_* functions for libc.
11357         * forward.c: New file.
11358
11359         * sysdeps/pthread/Makefile (libpthread-sysdeps_routines): Add
11360         errno-loc.
11361         * herrno.c: New file.
11362         * res.c: New file.
11363
11364         * Makefile (libpthread-routines): Remove sem_post, sem_wait,
11365         sem_trywait, and sem_timedwait.  Add herrno and res.
11366         * sem_init.c: Don't initialize lock and waiters members.
11367         * sem_open.c: Likewise.
11368         * sem_post.c: Removed.
11369         * sem_wait.c: Removed.
11370         * sem_trywait.c: Removed.
11371         * sem_timedwait.c: Removed.
11372         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Complete rewrite.
11373         Includes full implementations of sem_post, sem_wait, sem_trywait,
11374         and sem_timedwait.
11375         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h (lll_sem_post): Adjust
11376         for new implementation.
11377         * sysdeps/unix/sysv/linux/internaltypes.h (struct sem): Remove lock
11378         and waiters fields.
11379
11380         * tst-sem3.c: Improve error message.
11381         * tst-signal3.c: Likewise.
11382
11383         * init.c (__pthread_initialize_minimal): Use set_tid_address syscall
11384         to tell the kernel about the termination futex and to initialize tid
11385         member.  Don't initialize main_thread.
11386         * descr.h (struct pthread): Remove main_thread member.
11387         * cancelllation.c (__do_cancel): Remove code handling main thread.
11388         The main thread is not special anymore.
11389
11390         * allocatestack.c (__reclaim_stacks): Mark stacks as unused.  Add
11391         size of the stacks to stack_cache_actsize.
11392
11393         * pt-readv.c: Add missing "defined".
11394         * pt-sigwait.c: Likewise.
11395         * pt-writev.c: Likewise.
11396
11397 2002-11-09  Ulrich Drepper  <drepper@redhat.com>
11398
11399         * Versions: Export __connect from libpthread.
11400         Patch by Luca Barbieri <ldb@ldb.ods.org>.
11401
11402         * Makefile (libpthread-routines): Add pt-raise.
11403         * sysdeps/unix/sysv/linux/raise.c: New file.
11404         * sysdeps/unix/sysv/linux/pt-raise.c: New file.
11405         * sysdeps/generic/pt-raise.c: New file.
11406
11407         * pthread_cond_init.c: Initialize all data elements of the condvar
11408         structure.  Patch by Luca Barbieri <ldb@ldb.ods.org>.
11409
11410         * pthread_attr_init.c: Actually implement 2.0 compatibility version.
11411         * pthread_create.c: Likewise.
11412
11413         * Makefile (tests): Add tst-key1, tst-key2, tst-key3.
11414         * tst-key1.c: New file.
11415         * tst-key2.c: New file.
11416         * tst-key3.c: New file.
11417
11418         * Versions: Export pthread_detach for version GLIBC_2.0.
11419         Reported by Saurabh Desai <sdesai@austin.ibm.com>.
11420
11421 2002-11-08  Ulrich Drepper  <drepper@redhat.com>
11422
11423         * pthread_key_create.c: Terminate search after an unused key was found.
11424         Patch by Luca Barbieri <ldb@ldb.ods.org>.
11425
11426         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Return zero.
11427         Patch by Luca Barbieri <ldb@ldb.ods.org>.
11428
11429 2002-10-10  Ulrich Drepper  <drepper@redhat.com>
11430
11431         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Use slow generic
11432         dynamic lookup for errno in PIC.
11433
11434         * allocatestack.c (get_cached_stack): Rearrange code slightly to
11435         release the stack lock as soon as possible.
11436         Call _dl_allocate_tls_init for TCB from the cache to re-initialize
11437         the static TLS block.
11438         (allocate_stack): Call _dl_allocate_tls_init for user-provided stack.
11439
11440         * cancellation.c: Renamed from cancelation.c.
11441         * Makefile: Adjust accordingly.
11442         * pthreadP.h (CANCELLATION_P): Renamed from CANCELATION_P.
11443         * cleanup_defer.c: Use CANCELLATION_P.
11444         * pthread_testcancel.c: Likewise.
11445         * descr.h: Fix spelling in comments.
11446         * init.c: Likewise.
11447         * pthread_getattr_np.c: Likewise.
11448         * pthread_getschedparam.c: Likewise.
11449         * pthread_setschedparam.c: Likewise.
11450         * Versions: Likewise.
11451
11452         * pt-pselect.c: New file.
11453         * Makefile (libpthread-routines): Add pt-pselect.
11454         * Versions: Add pselect.
11455
11456         * tst-cancel4.c: New file.
11457         * Makefile (tests): Add tst-cancel4.
11458
11459 2002-10-09  Ulrich Drepper  <drepper@redhat.com>
11460
11461         * pthread_mutex_lock.c: Always record lock ownership.
11462         * pthread_mutex_timedlock.c: Likewise.
11463         * pthread_mutex_trylock.c: Likewise.
11464
11465         * pt-readv.c: New file.
11466         * pt-writev.c: New file.
11467         * pt-creat.c: New file.
11468         * pt-msgrcv.c: New file.
11469         * pt-msgsnd.c: New file.
11470         * pt-poll.c: New file.
11471         * pt-select.c: New file.
11472         * pt-sigpause.c: New file.
11473         * pt-sigsuspend.c: New file.
11474         * pt-sigwait.c: New file.
11475         * pt-sigwaitinfo.c: New file.
11476         * pt-waitid.c: New file.
11477         * Makefile (libpthread-routines): Add pt-readv, pt-writev, pt-creat,
11478         pt-msgrcv, pt-msgsnd, pt-poll, pt-select, pt-sigpause, pt-sigsuspend,
11479         pt-sigwait, pt-sigwaitinfo, and pt-waitid.
11480         * Versions: Add all the new functions.
11481
11482         * tst-exit1.c: New file.
11483         * Makefile (tests): Add tst-exit1.
11484
11485         * sem_timedwait.c: Minor optimization for more optimal fastpath.
11486
11487 2002-10-08  Ulrich Drepper  <drepper@redhat.com>
11488
11489         * pt-fcntl.c: Only enable asynchronous cancellation for F_SETLKW.
11490
11491         * pthread_join.c: Enable asynchronous cancellation around lll_wait_tid
11492         call.  pthread_join is an official cancellation point.
11493         * pthread_timedjoin.c: Likewise.
11494
11495         * pthread_cond_wait.c: Revert order in which internal lock are dropped
11496         and the condvar's mutex are retrieved.
11497         * pthread_cond_timedwait.c: Likewise.
11498         Reported by dice@saros.East.Sun.COM.
11499
11500 2002-10-07  Ulrich Drepper  <drepper@redhat.com>
11501
11502         * pthreadP.h: Cut out all type definitions and move them...
11503         * sysdeps/unix/sysv/linux/internaltypes.h: ...here.  New file.
11504         * pthreadP.h: Include <internaltypes.h>.
11505
11506         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h (lll_sem_post): Little
11507         performance tweaks.
11508
11509         * sem_trywait.c: Shuffle #includes around to get right order.
11510         * sem_timedwait.c: Likewise.
11511         * sem_post.c: Likewise.
11512         * sem_wait.c: Likewise.
11513
11514         * nptl 0.3 released.
11515
11516         * Makefile (tests): Add tst-signal3.
11517         * tst-signal3.c: New file.
11518
11519 2002-10-05  Ulrich Drepper  <drepper@redhat.com>
11520
11521         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Tell the compiler that
11522         the asms modify the sem object.
11523         (__lll_sem_timedwait): Now takes struct sem* as first parameter.
11524
11525         * sysdeps/unix/sysv/linux/i386/bits/semaphore.h (sem_t): Don't expose
11526         the actual members.
11527         * pthreadP.h (struct sem): New type.  Actual semaphore type.
11528         * semaphoreP.h: Include pthreadP.h.
11529         * sem_getvalue.c: Adjust to sem_t change.
11530         * sem_init.c: Likewise.
11531         * sem_open.c: Likewise.
11532         * sem_post.c: Likewise.
11533         * sem_timedwait.c: Likewise.
11534         * sem_trywait.c: Likewise.
11535         * sem_wait.c: Likewise.
11536
11537 2002-10-04  Ulrich Drepper  <drepper@redhat.com>
11538
11539         * Makefile (tests): Add tst-basic2, tst-exec1, tst-exec3, tst-exec3.
11540         * tst-basic2.c: New file.
11541         * tst-exec1.c: New file.
11542         * tst-exec2.c: New file.
11543         * tst-exec3.c: New file.
11544
11545         * tst-fork1.c: Remove extra */.
11546
11547         * nptl 0.2 released.  The API for IA-32 is complete.