chiark / gitweb /
eglibc (2.11.3-4+deb6u3) squeeze-lts; urgency=medium
[eglibc.git] / nptl / ChangeLog
1 2010-08-12  H.J. Lu  <hongjiu.lu@intel.com>
2
3         * nptl/sysdeps/unix/sysv/linux/i386/Makefile: New file.
4
5 2010-07-01  Ulrich Drepper  <drepper@redhat.com>
6
7         * Makefile (tst-_res1): Add tst-_res1mod1 to dependency list.
8
9 2010-10-13  H.J. Lu  <hongjiu.lu@intel.com>
10
11         [BZ #12113]
12         * sysdeps/x86_64/pthreaddef.h (TCB_ALIGNMENT): Changed to 32.
13         * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Defined with alignment
14         of "struct pthread".
15
16 2010-06-01  Takashi Yoshii  <takashi.yoshii.zj@renesas.com>
17
18         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Fix incorrect
19         location of ifndef __ASSUME_FUTEX_CLOCK_REALTIME.
20
21 2009-11-27  Andreas Schwab  <schwab@redhat.com>
22
23         * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Reload
24         THREAD_SELF->cancelhandling after returning from futex call.
25
26 2009-11-03  Andreas Schwab  <schwab@linux-m68k.org>
27
28         [BZ #4457]
29         * sysdeps/pthread/unwind-resume.c: Include <libgcc_s.h> and use
30         LIBGCC_S_SO.
31         * sysdeps/pthread/unwind-forcedunwind.c: Likewise.
32
33 2009-10-30  Ulrich Drepper  <drepper@redhat.com>
34
35         * tst-sem11.c (main): Rewrite to avoid aliasing problems.
36
37         [BZ #3270]
38         * allocatestack.c (__nptl_setxid): Perform the operation in multiple
39         steps to avoid races with creation and terminations.
40         * nptl-init.c (sighandler_setxid): Adjust.
41         Patch by Daniel Jacobowitz.
42
43 2009-09-07  Andreas Schwab  <schwab@redhat.com>
44
45         * sysdeps/pthread/bits/libc-lock.h (BP_SYM): Remove space before paren.
46
47 2009-09-02  Suzuki K P  <suzuki@in.ibm.com>
48             Joseph Myers  <joseph@codesourcery.com>
49
50         [BZ #7094]
51         * sysdeps/unix/sysv/linux/timer_create.c (timer_create):
52         Initialize the sigev_notify field for newly created timer to make sure
53         the timer gets deleted from the active timer's list upon timer_delete.
54
55 2009-08-27  Andrew Stubbs  <ams@codesourcery.com>
56
57         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait):
58         Correct a logic error.
59
60 2009-08-25  Ulrich Drepper  <drepper@redhat.com>
61
62         * sysdeps/x86_64/tls.h (RTLD_ENABLE_FOREIGN_CALL): Store old value
63         of the field in local variables.
64         (RTLD_FINALIZE_FOREIGN_CALL): Restore rtld_must_xmm_save from local
65         variable and don't unconditionally clear it.
66
67 2009-08-24  Ulrich Drepper  <drepper@redhat.com>
68
69         * pthread_create.c (start_thread): Hint to the kernel that memory for
70         the stack can be reused.  We do not mark all the memory.  The part
71         still in use and some reserve are kept.
72
73 2009-08-23  Ulrich Drepper  <drepper@redhat.com>
74
75         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Clean up namespace.
76
77 2009-08-11  Ulrich Drepper  <drepper@redhat.com>
78
79         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Add CFI
80         directives.
81
82 2009-08-10  Ulrich Drepper  <drepper@redhat.com>
83
84         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Add CFI
85         directives.
86         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
87
88 2009-08-10  Andreas Schwab  <schwab@redhat.com>
89
90         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
91         (__pthread_cond_signal): Don't clobber register used for syscall
92         number.
93
94 2009-08-08  Ulrich Drepper  <drepper@redhat.com>
95
96         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
97         Optimize code path used when FUTEX_CLOCK_REALTIME is supported.
98
99         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
100         (__pthread_cond_wait): Optimize by avoiding use of callee-safe
101         register.
102
103 2009-08-07  Ulrich Drepper  <drepper@redhat.com>
104
105         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Little optimizations
106         enabled by the special *_asynccancel functions.
107         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
108         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
109
110         * sysdeps/unix/sysv/linux/x86_64/cancellation.S: Include lowlevellock.h.
111
112 2009-08-04  Ulrich Drepper  <drepper@redhat.com>
113
114         * sysdeps/unix/sysv/linux/x86_64/cancellation.S: New file.
115         * sysdeps/unix/sysv/linux/x86_64/libc-cancellation.S: New file.
116         * sysdeps/unix/sysv/linux/x86_64/librt-cancellation.S: New file.
117         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (PSEUDO): Optimize
118         since we can assume the special __*_{en,dis}able_asynccancel
119         functions.
120         (PUSHARGS_*, POPARGS_*, SAVESTK_*, RESTSTK_*): Removed.
121         * sysdeps/x86_64/tcb-offsets.sym: Add cancellation-related bits
122         and PTHREAD_CANCELED.
123
124 2009-07-31  Ulrich Drepper  <drepper@redhat.com>
125
126         * descr.h: Better definition of *_BITMASK macros for cancellation.
127
128 2009-07-29  Ulrich Drepper  <drepper@redhat.com>
129
130         * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Define explicitly to 32.
131
132         * sysdeps/x86_64/tls.h (tcbhead_t): Add room for SSE registers the
133         dynamic linker might have to save.
134         Define RTLD_CHECK_FOREIGN_CALL, RTLD_ENABLE_FOREIGN_CALL,
135         RTLD_PREPARE_FOREIGN_CALL, and RTLD_FINALIZE_FOREIGN_CALL.  Pretty
136         printing.
137
138         * sysdeps/x86_64/tcb-offsets.sym: Add RTLD_SAVESPACE_SSE.
139
140 2009-07-28  Ulrich Drepper  <drepper@redhat.com>
141
142         * pthread_mutex_lock.c [NO_INCR] (__pthread_mutex_cond_lock_adjust):
143         New function.
144         * pthreadP.h: Declare __pthread_mutex_cond_lock_adjust.
145         * sysdeps/unix/sysv/linux/pthread-pi-defines.sym: Add ROBUST_BIT.
146         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Don't use
147         requeue_pi for robust mutexes.
148         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
149         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
150         Don't only skip __pthread_mutex_cond_lock.  Call instead
151         __pthread_mutex_cond_lock_adjust.
152         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
153
154         * pthread_mutex_unlock.c (__pthread_mutex_unlock_full): Minor
155         optimization of PI mutex handling.
156
157 2009-07-27  Ulrich Drepper  <drepper@redhat.com>
158
159         [BZ #10418]
160         * pthread_mutex_unlock.c (__pthread_mutex_unlock_full): Use _rel
161         instead of of _acq variants of cmpxchg.
162
163 2009-07-23  Ulrich Drepper  <drepper@redhat.com>
164
165         * sysdeps/x86_64/configure.in: New file.
166
167         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Fix error
168         path when not using absolute timeout futex.
169
170 2009-07-20  Ulrich Drepper  <drepper@redhat.com>
171
172         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Minor
173         optimizations of last changes.
174         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
175
176 2009-07-19  Ulrich Drepper  <drepper@redhat.com>
177
178         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Define
179         FUTEX_WAIT_REQUEUE_PI and FUTEX_CMP_REQUEUE_PI.
180         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: If mutex
181         is a PI mutex, then use FUTEX_CMP_REQUEUE_PI.
182         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
183         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: If mutex
184         is a PI mutex, then use FUTEX_WAIT_REQUEUE_PI.
185         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
186
187         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
188         (__pthread_cond_timedwait): Make more robust.
189
190 2009-07-18  Ulrich Drepper  <drepper@redhat.com>
191
192         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
193         (__lll_robust_timedlock_wait): If possible use FUTEX_WAIT_BITSET to
194         directly use absolute timeout.
195
196         * tst-sem5.c (do_test): Add test for premature timeout.
197         * Makefile: Linu tst-sem5 with librt.
198
199         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S
200         (pthread_rwlock_timedwrlock): If possible use FUTEX_WAIT_BITSET to
201         directly use absolute timeout.
202         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
203         (pthread_rwlock_timedrdlock): Likewise.
204
205         * tst-cond11.c (run_test): Add test to check that the timeout is
206         long enough.
207
208         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
209         (__pthread_cond_timedwait): If possible use FUTEX_WAIT_BITSET to
210         directly use absolute timeout.
211
212         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
213         (__pthread_cond_wait): Convert to using exception handler instead of
214         registered unwind buffer.
215         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
216         (__pthread_cond_timedwait): Likewise.
217
218 2009-07-17  Ulrich Drepper  <drepper@redhat.com>
219
220         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
221         If possible use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME to directly
222         use absolute timeout.
223
224         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Optimize
225         handling of uncontested semaphore.
226
227         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
228         (__condvar_cleanup): Rewrite to use cfi directives instead of
229         hand-coded unwind tables.
230         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S (__pthread_once):
231         Likewise.
232         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Likewise.
233         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
234         Likewise.
235
236 2009-06-12  Ulrich Drepper  <drepper@redhat.com>
237
238         * Makefile (libpthread-routines): Add pthread_sigqueue.
239         * Versions: Add pthread_sigqueue for GLIBC_2.11.
240         * sysdeps/pthread/bits/sigthread.h: Declare pthread_sigqueue.
241         * sysdeps/unix/sysv/linux/pthread_sigqueue.c: New file.
242
243 2009-06-11  Ulrich Drepper  <drepper@redhat.com>
244
245         [BZ #10262]
246         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
247         (LOAD_FUTEX_WAIT_ABS): Fix futex parameter in case private futexes
248         cannot be assumed.
249         Patch by Bryan Kadzban <bz-glibc@kdzbn.homelinux.net>.
250
251 2009-05-16  Ulrich Drepper  <drepper@redhat.com>
252
253         * libc-cancellation.c: Move __libc_cleanup_routine to...
254         * libc-cleanup.c: ...here.  New file.
255         * Makefile (routines): Add libc-cleanup.
256
257         * cancellation.c (__pthread_disable_asynccancel): Remove unnecessary
258         test.
259         * libc-cancellation.c: Use <nptl/cancellation.c: to define the code.
260         * sysdeps/pthread/librt-cancellation.c: Likewise.
261
262         [BZ #9924]
263         * nptl-init.c: Renamed from init.c.
264         * Makefile: Change all occurences of init.c to nptl-init.c.
265
266 2009-05-15  Ulrich Drepper  <drepper@redhat.com>
267
268         * cancellation.c (__pthread_disable_asynccancel): Correct the bits
269         to test when deciding on the delay.
270         * libc-cancellation.c (__libc_disable_asynccancel): Likewise.
271         * pthread_cancel.c: Close race between deciding on sending a signal
272         and setting the CANCELING_BIT bit.
273
274         * cancellation.c (__pthread_disable_asynccancel): Don't return if
275         thread is canceled.
276         * libc-cancellation.c (__libc_disable_asynccancel): Likewise.
277
278 2009-04-27  Ulrich Drepper  <drepper@redhat.com>
279
280         * cancellation.c (__pthread_disable_asynccancel): Use THREAD_ATOMIC_AND
281         is available.
282         * libc-cancellation.c (__libc_disable_asynccancel): Likewise.
283         * sysdeps/x86_64/tls.h: Define THREAD_ATOMIC_AND.
284         * sysdeps/i386/tls.h: Likewise.
285         (tcbhead_t): Add __private_tm member.
286
287 2009-04-26  Ulrich Drepper  <drepper@redhat.com>
288
289         * sem_open.c (sem_open): Rewrite initialization of initsem to
290         avoid warnings.
291
292         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
293         Avoid warning by using may_alias attribute on ptrhack.
294
295 2009-04-22  Ulrich Drepper  <drepper@redhat.com>
296
297         [BZ #10090]
298         * pthread_attr_setschedparam.c (__pthread_attr_setschedparam):
299         Check policy and priority for validity.
300         Patch mostly by Zhang Xiliang <zhangxiliang@cn.fujitsu.com>.
301
302 2009-03-15  Ulrich Drepper  <drepper@redhat.com>
303
304         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
305         (__pthread_cond_timedwait): Change to use cfi directives instead of
306         hand-coded unwind sections.
307
308 2009-03-10  Ulrich Drepper  <drepper@redhat.com>
309
310         * init.c (nptl_freeres): Compile only for SHARED.
311
312 2009-03-09  Jakub Jelinek  <jakub@redhat.com>
313
314         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Define
315         FUTEX_WAIT_BITSET, FUTEX_WAKE_BITSET, FUTEX_CLOCK_REALTIME and
316         FUTEX_BITSET_MATCH_ANY.
317
318 2009-02-27  Roland McGrath  <roland@redhat.com>
319
320         * init.c (__nptl_initial_report_events): Mark __attribute_used__.
321         * pthread_create.c (__nptl_threads_events, __nptl_last_event): Likewise.
322
323 2009-02-26  Ulrich Drepper  <drepper@redhat.com>
324
325         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
326         _POSIX_THREAD_ROBUST_PRIO_INHERIT and
327         _POSIX_THREAD_ROBUST_PRIO_PROTECT.  Reset value of macros from
328         200112L to 200809L.
329
330 2009-02-25  Ulrich Drepper  <drepper@redhat.com>
331
332         * sysdeps/pthread/pthread.h: The robust mutex functions are in
333         POSIX 2008.
334
335 2009-02-24  Ulrich Drepper  <drepper@redhat.com>
336
337         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_BITS_POSIX_OPT_H):
338         Unify name of include protector macro.
339
340 2009-02-14  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
341
342         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define
343         LOAD_FUTEX_WAIT_ABS even if (FUTEX_WAIT == 0).
344
345 2009-01-29  Ulrich Drepper  <drepper@redhat.com>
346
347         * sysdeps/pthread/unwind-forcedunwind.c: Encrypt all function
348         pointer variables.
349
350         * allocatestack.c (__free_stacks): Renamed from free_stacks.
351         (__free_stack_cache): Removed.  Change callers to call __free_stacks.
352         * init.c (nptl_freeres): New function.
353         (pthread_functions): Initialize ptr_freeres to nptl_freeres.
354         * pthreadP.h: Don't declare __free_stack_cache.  Declare __free_stacks.
355         * sysdeps/pthread/unwind-forcedunwind.c (libgcc_s_handle): New
356         variable.
357         (pthread_cancel_init): Depend in libgcc_s_handle for decision to
358         load DSO.  Assign last.
359         (__unwind_freeres): New function.
360
361         * allocatestack.c (__reclaim_stacks): Reset in_flight_stack later
362         for better debugging.  No need to use stack_list_add here.
363
364 2009-01-14  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
365
366         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
367         (__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME
368         instead of computing relative timeout.
369         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define
370         FUTEX_CLOCK_REALTIME and FUTEX_BITSET_MATCH_ANY.
371
372 2009-01-25  Ulrich Drepper  <drepper@redhat.com>
373
374         * pthread_mutex_lock.c (__pthread_mutex_lock): Remove unused label out.
375
376 2009-01-08  Ulrich Drepper  <drepper@redhat.com>
377
378         * sysdeps/pthread/list.h (list_add): Initialize new element first.
379         (list_add_tail): Removed.
380
381 2009-01-07  Ulrich Drepper  <drepper@redhat.com>
382
383         * (in_flight_stack): New variable.
384         (stack_list_del): New function.  Use instead of list_del.
385         (stack_list_add): New function.  Use instead of list_add when adding to
386         stack_cache and stack_used lists.
387         (__reclaim_stacks): Complete operations on stack_cache and stack_used lists
388         when the fork call interrupted another thread.
389
390 2009-01-04  Ulrich Drepper  <drepper@redhat.com>
391
392         * init.c (__pthread_initialize_minimal_internal): Optimize test
393         FUTEX_CLOCK_REALTIME a bit.
394
395 2009-01-03  Ulrich Drepper  <drepper@redhat.com>
396
397         * init.c (__pthread_initialize_minimal_internal): Cheat a bit by
398         only passing five parameters to FUTEX_WAIT_BITSET call.
399
400         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
401         (__lll_timedlock_wait): Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME
402         instead of computing relative timeout.
403
404 2009-01-02  Ulrich Drepper  <drepper@redhat.com>
405
406         * init.c (__pthread_initialize_minimal_internal): Check for
407         FUTEX_CLOCK_REALTIME flag.
408         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedlock_wait):
409         Use FUTEX_WAIT_BITSET|FUTEX_CLOCK_REALTIME instead of computing
410         relative timeout.
411
412         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Define
413         FUTEX_CLOCK_REALTIME and FUTEX_BITSET_MATCH_ANY.
414         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
415         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
416         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
417         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
418
419 2008-12-09  Ulrich Drepper  <drepper@redhat.com>
420
421         * sysdeps/pthread/pthread.h (pthread_cleanup_pop): Use { } as empty
422         loop body instead of ; to avoid gcc warnings.
423         (pthread_cleanup_pop_restore_np): Likewise.
424         Patch by Caolán McNamara <caolanm@redhat.com>.
425
426 2008-12-09  Jakub Jelinek  <jakub@redhat.com>
427
428         * pthread_mutex_lock.c (__pthread_mutex_lock): Handle only the
429         fast path here, for robust/PI/PP mutexes call
430         __pthread_mutex_lock_full.  Don't use switch, instead use a series
431         of ifs according to their probability.
432         (__pthread_mutex_lock_full): New function.
433         * pthread_mutex_unlock.c: Include assert.h.
434         (__pthread_mutex_unlock_usercnt): Handle only the
435         fast path here, for robust/PI/PP mutexes call
436         __pthread_mutex_unlock_full.  Don't use switch, instead use a series
437         of ifs according to their probability.
438         (__pthread_mutex_unlock_full): New function.
439         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c
440         (__pthread_mutex_lock_full): Define.
441
442 2008-12-08  Ulrich Drepper  <drepper@redhat.com>
443
444         * sysdeps/x86_64/tls.h (tcbhead_t): Add fields reserved for TM
445         implementation.  Add necessary padding and.
446         * descr.h (struct pthread): Increase padding for tcbhead_t to 24
447         words.
448
449 2008-12-04  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
450
451         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define FUTEX_WAIT_BITSET
452         and FUTEX_WAKE_BITSET.
453
454 2008-12-02  Ulrich Drepper  <drepper@redhat.com>
455
456         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define FUTEX_WAIT_BITSET
457         and FUTEX_WAKE_BITSET.
458         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
459         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
460         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
461         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
462
463 2008-11-25  Roland McGrath  <roland@redhat.com>
464
465         * sysdeps/alpha, sysdeps/unix/sysv/linux/alpha:
466         Subdirectories moved to ports repository as
467         sysdeps/.../nptl subdirectories.
468
469 2008-11-12  Jakub Jelinek  <jakub@redhat.com>
470
471         [BZ #7008]
472         * pthread_condattr_setclock.c (pthread_condattr_setclock): Fix masking
473         of old value.
474         * pthread_cond_init.c (__pthread_cond_init): Fix
475         cond->__data.__nwaiters initialization.
476         * Makefile (tests): Add tst-cond23.
477         * tst-cond23.c: New test.
478
479 2008-11-07  Jakub Jelinek  <jakub@redhat.com>
480
481         * sysdeps/pthread/malloc-machine.h (MALLOC): Adjust __libc_tsd_define
482         arguments.
483         (tsd_setspecific, tsd_getspecific): Adjust __libc_tsd_{set,get}
484         arguments.
485
486 2008-11-01  Ulrich Drepper  <drepper@redhat.com>
487
488         [BZ #6955]
489         * pthread_mutex_lock.c: Add support for private PI mutexes.
490         * pthread_mutex_timedlock.c: Likewise.
491         * pthread_mutex_trylock.c: Likewise.
492         * pthread_mutex_unlock.c: Likewise.
493         Patch mostly by Ben Jackson <ben@ben.com>.
494
495 2008-10-31  Ulrich Drepper  <drepper@redhat.com>
496
497         [BZ #6843]
498         * sysdeps/pthread/gai_misc.h (__gai_create_helper_thread):
499         Increase stack size for helper thread.
500
501 2008-10-06  Martin Schwidefsky  <schwidefsky@de.ibm.com>
502
503         * sysdeps/s390/tls.h (THREAD_SET_STACK_GUARD): Add empty inline
504         assembly with a clobber list for access registers a0 and a1.
505
506 2008-09-11  Martin Schwidefsky  <schwidefsky@de.ibm.com>
507
508         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Add memory barrier
509         to force runp->refcntr to be read from memory.
510
511 2008-09-08  Richard Guenther  <rguenther@suse.de>
512
513         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_lock,
514         lll_robust_lock, lll_cond_lock, lll_robust_cond_lock,
515         lll_timedlock, lll_robust_timedlock, lll_unlock,
516         lll_robust_unlock): Promote private to int.
517
518 2008-08-15  Ulrich Drepper  <drepper@redhat.com>
519
520         * sysdeps/x86_64/pthreaddef.h: Remove ARCH_MAP_FLAGS and
521         ARCH_RETRY_MMAP definitions.
522         * allocatestack.c: Remove definition of ARCH_MAP_FLAGS.
523         Define MAP_STACK when not defined.
524         (allocate_stack): Use MAP_STACK instead of ARCH_MAP_FLAGS.  Remove
525         handling of ARCH_RETRY_MMAP.
526
527 2008-07-30  Ulrich Drepper  <drepper@redhat.com>
528
529         * tst-align2.c (f): Print message that f is reached.
530
531 2008-04-28  Hiroki Kaminaga  <kaminaga@sm.sony.co.jp>
532
533         [BZ #6740]
534         * sysdeps/powerpc/tcb-offsets.sym (PRIVATE_FUTEX_OFFSET): Guard symbol
535         definition with #ifndef __ASSUME_PRIVATE_FUTEX.
536
537 2008-07-25  Ulrich Drepper  <drepper@redhat.com>
538
539         * sysdeps/unix/sysv/linux/mq_notify.c (init_mq_netlink): Use
540         SOCK_CLOEXEC if possible.
541
542 2008-05-29  Ulrich Drepper  <drepper@redhat.com>
543
544         * Makefile (tests): Add tst-rwlock2a.
545         * tst-rwlock2.c: Use TYPE macro to decide what rwlock type to use.
546         * tst-rwlock2a.c: New file.
547
548 2008-06-12  Ulrich Drepper  <drepper@redhat.com>
549
550         * sysdeps/pthread/pthread.h: Remove inadvertant checkin.
551
552 2008-05-17  Samuel Thibault  <samuel.thibault@ens-lyon.org>
553
554         * sysdeps/pthread/pthread.h: Fix typo in comment.
555
556 2008-05-28  Ulrich Drepper  <drepper@redhat.com>
557
558         * sysdeps/pthread/createthread.c (do_clone): Pass accurate length
559         of CPU set to the kernel.
560
561 2008-05-23  Paul Pluzhnikov  <ppluzhnikov@google.com>
562
563         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Add
564         cfi directives.
565         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
566         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
567         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
568         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
569         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
570         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
571
572 2008-05-22  Paul Pluzhnikov  <ppluzhnikov@google.com>
573
574         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S: Add
575         cfi directives.
576         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
577         Likewise.
578         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
579         Likewise.
580         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
581         Likewise.
582
583 2008-05-26  Ulrich Drepper  <drepper@redhat.com>
584
585         * tst-typesizes.c: Explicitly check __SIZEOF_PTHREAD_* constants.
586
587 2008-05-20  Jakub Jelinek  <jakub@redhat.com>
588
589         David S. Miller  <davem@davemloft.net>
590
591         * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: New file.
592
593 2008-05-10  Ulrich Drepper  <drepper@redhat.com>
594
595         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Access
596         __pshared correctly.
597         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
598         Likewise.
599         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
600         Likewise.
601         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S:
602         Likewise.
603         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S:
604         Likewise.
605         Reported by Clemens Kolbitsch <clemens.kol@gmx.at>.
606
607 2008-04-14  David S. Miller  <davem@davemloft.net>
608
609         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
610         (__old_sem_wait): Fix argument to lll_futex_wait().
611
612 2007-11-26  Daniel Jacobowitz  <dan@codesourcery.com>
613
614         * pthread_create.c: Require pthread_mutex_trylock and
615         pthread_key_delete for libgcc.
616
617 2008-04-08  Jakub Jelinek  <jakub@redhat.com>
618
619         [BZ #6020]
620         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h
621         (lll_futex_wake_unlock): Add private argument to the pre-v9 macro.
622         Patch by Sunil Amitkumar Janki <devel.sjanki@gmail.com>.
623
624 2008-03-27  Ulrich Drepper  <drepper@redhat.com>
625
626         * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine ARG_MAX if
627         <linux/limits.h> has defined it.
628         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise.
629         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise.
630         * sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: Likewise.
631         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise.
632
633 2008-03-18  Jakub Jelinek  <jakub@redhat.com>
634
635         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: Use __ASSEMBLER__ instead
636         of ASSEMBLER.
637         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: Likewise.
638         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Likewise.
639
640 2008-03-14  Ulrich Drepper  <drepper@redhat.com>
641
642         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define
643         HAVE_DL_DISCOVER_OSVERSION.
644         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: Likewise.
645         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: Likewise.
646
647 2008-03-07  Ulrich Drepper  <drepper@redhat.com>
648
649         [BZ #5778]
650         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Change
651         _POSIX_CHOWN_RESTRICTED value to zero.
652
653 2008-01-31  Roland McGrath  <roland@redhat.com>
654
655         * Makefile (omit-deps): Variable removed.
656
657 2008-01-30  Ulrich Drepper  <drepper@redhat.com>
658
659         * sysdeps/unix/sysv/linux/x86_64/sem_post.S (sem_post): Avoid
660         unnecessary addr32 prefix.
661
662 2008-01-29  Roland McGrath  <roland@redhat.com>
663
664         * Makeconfig (ptw-CPPFLAGS, sysd-rules-patterns): New variables.
665
666 2008-01-22  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
667
668         * sysdeps/unix/sysv/linux/sh/sem_post.S: Don't overflow value field.
669
670 2008-01-21  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
671
672         * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h (XADD): Use
673         a scratch register.
674         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
675         (__lll_lock_wait_private): Fix typo.
676         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
677         (pthread_barrier_wait): Likewise.  Adjust XADD use.
678         * sysdeps/unix/sysv/linux/sh/sem_post.S (__new_sem_post):
679         Adjust XADD use.
680         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
681         (pthread_rwlock_timedrdlock): Return correct return value.
682         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
683         (pthread_rwlock_timedwrlock): Likewise.
684
685 2008-01-15  Ulrich Drepper  <drepper@redhat.com>
686
687         * tst-eintr2.c (do_test): make sure that if mutex_lock in main
688         thread returns the program exits with an error code.
689
690 2008-01-10  Ulrich Drepper  <drepper@redhat.com>
691
692         * pthread-errnos.sym: Add EOVERFLOW.
693         * sysdeps/unix/sysv/linux/structsem.sym: Add SEM_VALUE_MAX.
694         * sysdeps/unix/sysv/linux/sem_post.c: Don't overflow value field.
695         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
696         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
697
698 2007-12-14  Ulrich Drepper  <drepper@redhat.com>
699
700         * sysdeps/x86_64/pthreaddef.h (ARCH_RETRY_MMAP): Take additional
701         parameter.  Passed it as permission to mmap.
702         * allocatestack.c (allocate_stack): Pass prot as second parameter
703         to ARCH_RETRY_MMAP.
704
705 2007-12-12  Ulrich Drepper  <drepper@redhat.com>
706
707         * tst-basic7.c: Allocate memory for the stack.
708
709         [BZ #5465]
710         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S [!SHARED]
711         (__pthread_cond_timedwait): Don't use VDSO.
712         Patch by Michal Januszewski.
713
714 2007-12-07  Ulrich Drepper  <drepper@redhat.com>
715
716         [BZ #5455]
717         * sysdeps/pthread/pthread.h [!__EXCEPTIONS] (pthread_cleanup_pop):
718         Allow label before pthread_cleanup_pop.
719         (pthread_cleanup_pop_restore_np): Likewise.
720
721 2007-12-04  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
722
723         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_timedlock_wait):
724         Store 2 before returning ETIMEDOUT.
725
726 2007-11-23  Ulrich Drepper  <drepper@redhat.com>
727
728         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S (__lll_timedlock_wait):
729         Store 2 before returning ETIMEDOUT.
730         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise
731         * sysdeps/unix/sysv/linux/lowlevellock.c: Likewise.
732         (__lll_lock_wait_private): Optimize.
733         (__lll_lock_wait): Likewise.
734
735 2007-11-20  Jakub Jelinek  <jakub@redhat.com>
736
737         * sysdeps/pthread/pthread.h (pthread_cleanup_push,
738         pthread_cleanup_push_defer_np): Add extra (void *) cast to shut up
739         g++ 4.1 and 4.2 -Wstrict-aliasing warnings.
740
741 2007-11-08  Ulrich Drepper  <drepper@redhat.com>
742
743         [BZ #5240]
744         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
745         If we time out, try one last time to lock the futex to avoid
746         losing a wakeup signal.
747         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
748         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
749
750         [BZ #5245]
751         * sysdeps/pthread/createthread.c (do_clone): Translate clone error
752         if necessary.
753
754 2007-11-07  Ulrich Drepper  <drepper@redhat.com>
755
756         [BZ #5245]
757         * allocatestack.c (allocate_stack): Change ENOMEM error in case
758         mmap failed to EAGAIN.
759         * Makefile (tests): Add tst-basic7.
760         * tst-basic7.c: New file.
761
762 2007-11-05  Ulrich Drepper  <drepper@redhat.com>
763
764         * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork):
765         Use __linkin_atfork.
766
767 2007-11-03  Mike Frysinger  <vapier@gentoo.org>
768
769         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (LOAD_FUTEX_WAIT): Add
770         missing line continuations.
771         * sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S (LOAD_FUTEX_WAIT,
772         LOAD_FUTEX_WAKE): Likewise.  Also add missing 3rd parameter.
773
774 2007-10-28  Ulrich Drepper  <drepper@redhat.com>
775
776         [BZ #5220]
777         * sysdeps/unix/sysv/linux/kernel-posix-timers.h: Declare
778         __active_timer_sigev_thread and __active_timer_sigev_thread_lock.
779         (struct timer): Add next element.
780         * sysdeps/unix/sysv/linux/timer_create.c: For SIGEV_THREAD timers,
781         enqueue timer structure into __active_timer_sigev_thread list.
782         * sysdeps/unix/sysv/linux/timer_delete.c: For SIGEV_THREAD timers,
783         remove timer struct from __active_timer_sigev_thread.
784         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
785         Before using timer structure make sure it is still on the
786         __active_timer_sigev_thread list.  Keep lock until done.
787         Define __active_timer_sigev_thread and
788         __active_timer_sigev_thread_lock.
789
790 2007-10-27  Ulrich Drepper  <drepper@redhat.com>
791
792         * sysdeps/pthread/malloc-machine.h: Define ATFORK_MEM.
793         Redefine thread_atfork for use of ATFORK_MEM.
794         * sysdeps/unix/sysv/linux/fork.h: Define __linkin_atfork.
795         * sysdeps/unix/sysv/linux/register-atfork.c (__linkin_atfork): New
796         function.
797         * sysdeps/unix/sysv/linux/unregister-atfork.c (__unregister_atfork):
798         Use atomic operation when removing first element of list.
799
800 2007-10-17  Jakub Jelinek  <jakub@redhat.com>
801
802         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__old_sem_post): New
803         routine instead of an alias to __new_sem_post.
804
805 2007-10-15  Jakub Jelinek  <jakub@redhat.com>
806
807         * init.c (__pthread_initialize_minimal): Initialize word to appease
808         valgrind.
809
810 2007-10-10  Jakub Jelinek  <jakub@redhat.com>
811
812         * sysdeps/pthread/bits/libc-lock.h (__libc_rwlock_init): Inside of
813         libc.so just clear NAME.
814         (__libc_rwlock_fini): Nop inside of libc.so.
815         * tst-initializers1.c (main): Test if PTHREAD_RWLOCK_INITIALIZER is
816         all zeros.
817
818 2007-09-02  Ulrich Drepper  <drepper@redhat.com>
819
820         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
821         (__pthread_cond_wait): Fix unlocking of internal lock after mutex
822         unlocking failed.
823         Patch by Luca Barbieri <luca.barbieri@gmail.com>.
824
825 2007-08-21  Ulrich Drepper  <drepper@redhat.com>
826
827         [BZ #4938]
828         * allocatestack.c (__reclaim_stacks): Clear the TSD in the
829         reclaimed stack if necessary.
830         * Makefile (tests): Add tst-tsd6.
831         * tst-tsd6.c: New file.
832
833 2007-08-21  Jakub Jelinek  <jakub@redhat.com>
834
835         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_robust_dead):
836         Add private argument.
837
838 2007-08-20  Ulrich Drepper  <drepper@redhat.com>
839
840         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
841         (__pthread_cond_timedwait): Use clock_gettime from VDSO if possible.
842
843 2007-08-16  Jakub Jelinek  <jakub@redhat.com>
844
845         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h
846         (__lll_robust_timedlock): Pass private as last argument to
847         __lll_robust_timedlock_wait.
848         (__lll_unlock): Fix a pasto.
849
850 2007-08-15  Jakub Jelinek  <jakub@redhat.com>
851
852         * sysdeps/unix/sysv/linux/sparc/internaltypes.h (sparc_new_sem,
853         sparc_old_sem): New structs.
854         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
855         (__sem_wait_cleanup): New function.
856         (__new_sem_wait): Use sparc_new_sem structure.  Bump and afterwards
857         decrease nwaiters.  Register __sem_wait_cleanup as cleanup handler.
858         Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
859         lll_futex_wait.
860         (__old_sem_wait): New function.
861         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c: Include
862         nptl/sysdeps/unix/sysv/linux/sparc version.
863         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c:
864         Likewise.
865         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c: Likewise.
866         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c
867         (__new_sem_trywait): Use sparc_old_sem structure.
868         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c
869         (sem_timedwait): Use sparc_new_sem structure.  Bump and afterwards
870         decrease nwaiters.  Register __sem_wait_cleanup as cleanup handler.
871         Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
872         lll_futex_timed_wait.
873         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c (__new_sem_post):
874         Use sparc_new_sem structure.  Only wake if nwaiters > 0.  Pass
875         isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
876         lll_futex_wake.
877         (__old_sem_post): New function.
878         * sysdeps/unix/sysv/linux/sparc/sem_wait.c: New file.
879         * sysdeps/unix/sysv/linux/sparc/sem_init.c: New file.
880         * sysdeps/unix/sysv/linux/sparc/sem_timedwait.c: New file.
881         * sysdeps/unix/sysv/linux/sparc/sem_post.c: New file.
882         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c: Remove.
883         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c: Remove.
884
885 2007-08-14  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
886
887         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
888         (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
889         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
890         Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
891         * sysdeps/unix/sysv/linux/shpthread_cond_signal.S
892         (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
893         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
894         Use FUTEX_WAKE_OP.
895         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Include
896         kernel-features.h and tcb-offsets.h.
897         (__pthread_cond_wait, __condvar_w_cleanup): Pass LLL_PRIVATE to
898         lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
899         process private.
900         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Include
901         tcb-offsets.h.
902         (__pthread_cond_timedwait, __condvar_tw_cleanup): Pass LLL_PRIVATE
903         to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
904         process private.
905         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Use #ifdef
906         __ASSUME_PRIVATE_FUTEX instead of #if __ASSUME_PRIVATE_FUTEX.
907         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
908         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
909         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
910         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
911         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
912
913 2007-08-14  Jakub Jelinek  <jakub@redhat.com>
914
915         * sysdeps/unix/sysv/linux/lowlevellock.c: Comment fix.
916         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
917         (__lll_timedwait_tid): Pass LLL_SHARED as 4th argument to
918         lll_futex_timed_wait.
919
920         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (__lll_unlock,
921         __lll_robust_unlock): Rewrite as macros instead of inline functions.
922         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_unlock,
923         __lll_robust_unlock, __lll_wait_tid): Likewise.
924
925 2007-08-13  Jakub Jelinek  <jakub@redhat.com>
926
927         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (__lll_private_flag):
928         Fix a pasto.
929         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
930         (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
931         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
932         Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
933         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
934         (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
935         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
936         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Include
937         kernel-features.h.
938         (__pthread_cond_wait, __condvar_w_cleanup): Pass LLL_PRIVATE to
939         lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
940         process private.  Switch DW_CFA_advance_loc1 and some
941         DW_CFA_advance_loc .eh_frame opcodes to DW_CFA_advance_loc4.
942         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
943         (__pthread_cond_timedwait, __condvar_tw_cleanup): Pass LLL_PRIVATE to
944         lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
945         process private.  Switch DW_CFA_advance_loc{1,2} and some
946         DW_CFA_advance_loc .eh_frame opcodes to DW_CFA_advance_loc4.
947         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Use
948         #ifdef __ASSUME_PRIVATE_FUTEX instead of #if __ASSUME_PRIVATE_FUTEX.
949         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
950         Likewise.
951         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
952         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
953         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
954         Likewise.
955         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
956         (__pthread_cond_broadcast): Compare %r8 instead of
957         dep_mutex-cond_*(%rdi) with $-1.
958         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
959         (__pthread_cond_signal): Xor FUTEX_WAKE_OP with FUTEX_WAKE instead
960         of oring.
961
962 2007-08-13  Ulrich Drepper  <drepper@redhat.com>
963
964         * sysdeps/unix/sysv/linux/i386/i786/Implies: New file.
965
966 2007-08-13  Jakub Jelinek  <jakub@redhat.com>
967
968         * allocatestack.c: Include kernel-features.h.
969         * pthread_create.c: Likewise.
970         * pthread_mutex_init.c: Likewise.
971         * init.c: Likewise.
972         * pthread_cond_timedwait.c: Likewise.
973         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise.
974         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
975         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
976         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
977         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
978         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
979         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
980         Likewise.
981         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
982         Likewise.
983         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
984         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
985         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
986         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
987
988 2007-08-12  Jakub Jelinek  <jakub@redhat.com>
989
990         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
991         [__WORDSIZE=32] (pthread_rwlock_t): Split __flags element into four
992         byte elements.  One of them is the new __shared element.
993         [__WORDSIZE=64] (pthread_rwlock_t): Renamed __pad1 element to __shared,
994         adjust names of other padding elements.
995         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h
996         [__WORDSIZE=32] (pthread_rwlock_t): Split __flags element into four
997         byte elements.  One of them is the new __shared element.
998         [__WORDSIZE=64] (pthread_rwlock_t): Renamed __pad1 element to __shared,
999         adjust names of other padding elements.
1000         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_rwlock_t):
1001         Renamed __pad1 element to __shared, adjust names of other padding
1002         elements.
1003         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
1004         (pthread_rwlock_t): Likewise.
1005         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_lock): Fix a
1006         typo.
1007
1008 2007-08-09  Anton Blanchard  <anton@samba.org>
1009
1010         * sysdeps/unix/sysv/linux/powerpc/pthread_spin_unlock.c: New file.
1011
1012 2007-08-12  Ulrich Drepper  <drepper@redhat.com>
1013
1014         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Include
1015         <kernel-features.h>.
1016         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
1017
1018 2007-08-11  Ulrich Drepper  <drepper@redhat.com>
1019
1020         * pthreadP.h (PTHREAD_ROBUST_MUTEX_PSHARED): Define.
1021         * pthread_mutex_lock.c: Use it instead of PTHREAD_MUTEX_PSHARED when
1022         dealing with robust mutexes.
1023         * pthread_mutex_timedlock.c: Likewise.
1024         * pthread_mutex_trylock.c: Likewise.
1025         * pthread_mutex_unlock.c: Likewise.
1026         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise.
1027
1028 2007-08-06  Jakub Jelinek  <jakub@redhat.com>
1029
1030         * pthreadP.h (PTHREAD_MUTEX_PSHARED_BIT): Define.
1031         (PTHREAD_MUTEX_TYPE): Mask __kind with 127.
1032         (PTHREAD_MUTEX_PSHARED): Define.
1033         * pthread_mutex_init.c (__pthread_mutex_init): Set
1034         PTHREAD_MUTEX_PSHARED_BIT for pshared or robust
1035         mutexes.
1036         * pthread_mutex_lock.c (LLL_MUTEX_LOCK): Take mutex as argument
1037         instead of its __data.__lock field, pass PTHREAD_MUTEX_PSHARED
1038         as second argument to lll_lock.
1039         (LLL_MUTEX_TRYLOCK): Take mutex as argument
1040         instead of its __data.__lock field.
1041         (LLL_ROBUST_MUTEX_LOCK): Take mutex as argument instead of its
1042         __data.__lock field, pass PTHREAD_MUTEX_PSHARED as second argument
1043         to lll_robust_lock.
1044         (__pthread_mutex_lock): Update LLL_MUTEX_LOCK, LLL_MUTEX_TRYLOCK,
1045         LLL_ROBUST_MUTEX_LOCK users, use PTHREAD_MUTEX_TYPE (mutex)
1046         instead of mutex->__data.__kind directly, pass
1047         PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock and lll_futex_wait.
1048         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Use
1049         PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind
1050         directly, pass PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock.
1051         (pthread_mutex_timedlock): Pass PTHREAD_MUTEX_PSHARED (mutex)
1052         to lll_timedlock, lll_robust_timedlock, lll_unlock and
1053         lll_futex_timed_wait.  Use PTHREAD_MUTEX_TYPE (mutex) instead
1054         of mutex->__data.__kind directly.
1055         * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Pass
1056         PTHREAD_MUTEX_PSHARED (mutex) to lll_timedlock,
1057         lll_robust_timedlock, lll_unlock and lll_futex_timed_wait.  Use
1058         PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind directly.
1059         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Pass
1060         PTHREAD_MUTEX_PSHARED (mutex) to lll_unlock, lll_robust_unlock
1061         and lll_futex_wake.
1062         * pthread_mutex_setprioceiling.c (pthread_mutex_setprioceiling): Pass
1063         PTHREAD_MUTEX_PSHARED (mutex) to lll_futex_wait and lll_futex_wake.
1064         Use PTHREAD_MUTEX_TYPE (mutex) instead of mutex->__data.__kind
1065         directly.
1066         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c (LLL_MUTEX_LOCK):
1067         Take mutex as argument instead of its __data.__lock field, pass
1068         PTHREAD_MUTEX_PSHARED as second argument to lll_cond_lock.
1069         (LLL_MUTEX_TRYLOCK): Take mutex as argument instead of its
1070         __data.__lock field.
1071         (LLL_ROBUST_MUTEX_LOCK): Take mutex as argument instead of its
1072         __data.__lock field, pass PTHREAD_MUTEX_PSHARED as second argument
1073         to lll_robust_cond_lock.
1074         * pthread_cond_broadcast.c (__pthread_cond_broadcast): Add pshared
1075         variable, pass it to lll_lock, lll_unlock, lll_futex_requeue and
1076         lll_futex_wake.  Don't use lll_futex_requeue if dependent mutex
1077         has PTHREAD_MUTEX_PSHARED_BIT bit set in its __data.__kind.
1078         * pthread_cond_destroy.c (__pthread_cond_destroy): Add pshared
1079         variable, pass it to lll_lock, lll_unlock, lll_futex_wake and
1080         lll_futex_wait.
1081         * pthread_cond_signal.c (__pthread_cond_signal): Add pshared
1082         variable, pass it to lll_lock, lll_unlock, lll_futex_wake_unlock and
1083         lll_futex_wake.
1084         * pthread_cond_timedwait.c (__pthread_cond_wait): Add
1085         pshared variable, pass it to lll_lock, lll_unlock,
1086         lll_futex_timedwait and lll_futex_wake.
1087         * pthread_cond_wait.c (__condvar_cleanup, __pthread_cond_wait): Add
1088         pshared variable, pass it to lll_lock, lll_unlock, lll_futex_wait
1089         and lll_futex_wake.
1090         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_futex_requeue,
1091         lll_futex_wake_unlock): Add private argument, use __lll_private_flag
1092         macro.
1093         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_requeue,
1094         lll_futex_wake_unlock): Likewise.
1095         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (lll_futex_requeue):
1096         Likewise.
1097         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (lll_futex_requeue,
1098         lll_futex_wake_unlock): Likewise.
1099         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_futex_requeue):
1100         Likewise.
1101         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue,
1102         lll_futex_wake_unlock): Likewise.
1103         (lll_futex_wake): Fix a typo.
1104         * sysdeps/unix/sysv/linux/pthread-pi-defines.sym (PS_BIT): Add.
1105         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
1106         (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
1107         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
1108         Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
1109         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
1110         (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
1111         FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
1112         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
1113         (__pthread_cond_timedwait): Likewise.
1114         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:
1115         (__condvar_cleanup, __pthread_cond_wait): Likewise.
1116
1117 2007-08-05  Jakub Jelinek  <jakub@redhat.com>
1118
1119         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
1120         Don't use CGOTSETUP and CGOTRESTORE macros.
1121         (CGOTSETUP, CGOTRESTORE): Remove.
1122         <IS_IN_rtld> (CENABLE, CDISABLE): Don't use JUMPTARGET, branch to
1123         @local symbol.
1124
1125 2007-08-01  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1126
1127         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Remove
1128         definitions for private futexes.
1129         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Include
1130         kernel-features.h and lowlevellock.h.  Use private futexes if
1131         they are available.
1132         (__lll_lock_wait_private, __lll_unlock_wake_private): New.
1133         (__lll_mutex_lock_wait): Rename to
1134         (__lll_lock_wait): ... this.  Don't compile in for libc.so.
1135         (__lll_mutex_timedlock_wait): Rename to ...
1136         (__lll_timedlock_wait): ... this.  Use __NR_gettimeofday.
1137         Don't compile in for libc.so.
1138         (__lll_mutex_unlock_wake): Rename to ...
1139         (__lll_unlock_wake): ... this.  Don't compile in for libc.so.
1140         (__lll_timedwait_tid): Use __NR_gettimeofday.
1141         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Allow including
1142         the header from assembler.  Renamed all lll_mutex_* resp.
1143         lll_robust_mutex_* macros to lll_* resp. lll_robust_*.
1144         Renamed all LLL_MUTEX_LOCK_* macros to LLL_LOCK_*.
1145         (FUTEX_CMP_REQUEUE, FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE):
1146         Define.
1147         (__lll_lock_wait_private): Add prototype.
1148         (__lll_lock_wait, __lll_timedlock_wait, __lll_robust_lock_wait,
1149         __lll_robust_timedlock_wait, __lll_unlock_wake_private,
1150         __lll_unlock_wake): Likewise.
1151         (lll_lock): Add private argument.  Call __lll_lock_wait_private
1152         if private is constant LLL_PRIVATE.
1153         (lll_robust_lock, lll_cond_lock, lll_robust_cond_lock,
1154         lll_timedlock, lll_robust_timedlock): Add private argument.
1155         (lll_unlock): Add private argument.  Call __lll_unlock_wake_private
1156         if private is constant LLL_PRIVATE.
1157         (lll_robust_unlock, lll_robust_dead): Add private argument.
1158         (lll_lock_t): Remove.
1159         (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake,
1160         __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait,
1161         lll_cond_wake, lll_cond_broadcast): Remove.
1162         * sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S: Include
1163         kernel-features.h and lowlevellock.h.
1164         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove.
1165         (LOAD_FUTEX_WAIT): Define.
1166         (__lll_robust_mutex_lock_wait): Rename to ...
1167         (__lll_robust_lock_wait): ... this.  Add private argument.
1168         Use LOAD_FUTEX_WAIT macro.
1169         (__lll_robust_mutex_timedlock_wait): Rename to ...
1170         (__lll_robust_timedlock_wait): ... this.    Add private argument.
1171         Use __NR_gettimeofday.  Use LOAD_FUTEX_WAIT macro.
1172         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Include
1173         lowlevellock.h.
1174         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove.
1175         (pthread_barrier_wait): Use __lll_{lock,unlock}_* instead of
1176         __lll_mutex_{lock,unlock}_*.
1177         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Include
1178         lowlevellock.h and pthread-errnos.h.
1179         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE,
1180         FUTEX_CMP_REQUEUE, EINVAL): Remove.
1181         (__pthread_cond_broadcast): Use __lll_{lock,unlock}_* instead of
1182         __lll_mutex_{lock,unlock}_*.
1183         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Include
1184         lowlevellock.h and pthread-errnos.h.
1185         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE, EINVAL): Remove.
1186         (__pthread_cond_signal): Use __lll_{lock,unlock}_* instead of
1187         __lll_mutex_{lock,unlock}_*.
1188         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Include
1189         lowlevellock.h.
1190         (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE): Remove.
1191         (__pthread_cond_timedwait): Use __lll_{lock,unlock}_* instead of
1192         __lll_mutex_{lock,unlock}_*.  Use __NR_gettimeofday.
1193         (__condvar_tw_cleanup): Likewise.
1194         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Include
1195         lowlevellock.h.
1196         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Remove.
1197         (__pthread_cond_wait): Use __lll_{lock,unlock}_* instead of
1198         __lll_mutex_{lock,unlock}_*.
1199         ( __condvar_w_cleanup): Likewise.
1200         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Include lowlevellock.h.
1201         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
1202         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Include
1203         lowlevellock.h.
1204         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
1205         (__pthread_rwlock_rdlock): Use __lll_{lock,unlock}_* instead of
1206         __lll_mutex_{lock,unlock}_*.
1207         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Include
1208         lowlevellock.h.
1209         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE,
1210         FUTEX_PRIVATE_FLAG): Remove.
1211         (pthread_rwlock_timedrdlock): Use __lll_{lock,unlock}_* instead of
1212         __lll_mutex_{lock,unlock}_*.  Use __NR_gettimeofday.
1213         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Include
1214         lowlevellock.h.
1215         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE,
1216         FUTEX_PRIVATE_FLAG): Remove.
1217         (pthread_rwlock_timedwrlock): Use __lll_{lock,unlock}_* instead of
1218         __lll_mutex_{lock,unlock}_*.  Use __NR_gettimeofday.
1219         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Include
1220         lowlevellock.h.
1221         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
1222         (__pthread_rwlock_unlock): Use __lll_{lock,unlock}_* instead of
1223         __lll_mutex_{lock,unlock}_*.
1224         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Include
1225         lowlevellock.h.
1226         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
1227         (__pthread_rwlock_wrlock): Use __lll_{lock,unlock}_* instead of
1228         __lll_mutex_{lock,unlock}_*.
1229         * sysdeps/unix/sysv/linux/sh/sem_post.S: Include lowlevellock.h.
1230         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Remove.
1231         (__new_sem_post): Use standard initial exec code sequences.
1232         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Include
1233         lowlevellock.h.
1234         (SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE,
1235         FUTEX_PRIVATE_FLAG): Remove.
1236         (sem_timedwait): Use __NR_gettimeofday.  Use standard initial
1237         exec code sequences.
1238         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Include lowlevellock.h.
1239         (__new_sem_trywait): Use standard initial exec code sequences.
1240         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Include lowlevellock.h.
1241         (__new_sem_wait): Use standard initial exec code sequences.
1242
1243 2007-07-31  Anton Blanchard  <anton@samba.org>
1244
1245         * sysdeps/unix/sysv/linux/powerpc/sem_post.c (__new_sem_post):
1246         Use __asm __volatile (__lll_acq_instr ::: "memory") instead of
1247         atomic_full_barrier.
1248
1249 2007-07-31  Jakub Jelinek  <jakub@redhat.com>
1250
1251         * allocatestack.c (stack_cache_lock): Change type to int.
1252         (get_cached_stack, allocate_stack, __deallocate_stack,
1253         __make_stacks_executable, __find_thread_by_id, __nptl_setxid,
1254         __pthread_init_static_tls, __wait_lookup_done): Add LLL_PRIVATE
1255         as second argument to lll_lock and lll_unlock macros on
1256         stack_cache_lock.
1257         * pthread_create.c (__find_in_stack_list): Likewise.
1258         (start_thread): Similarly with pd->lock.  Use lll_robust_dead
1259         macro instead of lll_robust_mutex_dead, pass LLL_SHARED to it
1260         as second argument.
1261         * descr.h (struct pthread): Change lock and setxid_futex field
1262         type to int.
1263         * old_pthread_cond_broadcast.c (__pthread_cond_broadcast_2_0): Use
1264         LLL_LOCK_INITIALIZER instead of LLL_MUTEX_LOCK_INITIALIZER.
1265         * old_pthread_cond_signal.c (__pthread_cond_signal_2_0): Likewise.
1266         * old_pthread_cond_timedwait.c (__pthread_cond_timedwait_2_0):
1267         Likewise.
1268         * old_pthread_cond_wait.c (__pthread_cond_wait_2_0): Likewise.
1269         * pthread_cond_init.c (__pthread_cond_init): Likewise.
1270         * pthreadP.h (__attr_list_lock): Change type to int.
1271         * pthread_attr_init.c (__attr_list_lock): Likewise.
1272         * pthread_barrier_destroy.c (pthread_barrier_destroy): Pass
1273         ibarrier->private ^ FUTEX_PRIVATE_FLAG as second argument to
1274         lll_{,un}lock.
1275         * pthread_barrier_wait.c (pthread_barrier_wait): Likewise and
1276         also for lll_futex_{wake,wait}.
1277         * pthread_barrier_init.c (pthread_barrier_init): Make iattr
1278         a pointer to const.
1279         * pthread_cond_broadcast.c (__pthread_cond_broadcast): Pass
1280         LLL_SHARED as second argument to lll_{,un}lock.
1281         * pthread_cond_destroy.c (__pthread_cond_destroy): Likewise.
1282         * pthread_cond_signal.c (__pthread_cond_singal): Likewise.
1283         * pthread_cond_timedwait.c (__pthread_cond_timedwait): Likewise.
1284         * pthread_cond_wait.c (__condvar_cleanup, __pthread_cond_wait):
1285         Likewise.
1286         * pthread_getattr_np.c (pthread_getattr_np): Add LLL_PRIVATE
1287         as second argument to lll_{,un}lock macros on pd->lock.
1288         * pthread_getschedparam.c (__pthread_getschedparam): Likewise.
1289         * pthread_setschedparam.c (__pthread_setschedparam): Likewise.
1290         * pthread_setschedprio.c (pthread_setschedprio): Likewise.
1291         * tpp.c (__pthread_tpp_change_priority, __pthread_current_priority):
1292         Likewise.
1293         * sysdeps/pthread/createthread.c (do_clone, create_thread):
1294         Likewise.
1295         * pthread_once.c (once_lock): Change type to int.
1296         (__pthread_once): Pass LLL_PRIVATE as second argument to
1297         lll_{,un}lock macros on once_lock.
1298         * pthread_rwlock_rdlock.c (__pthread_rwlock_rdlock): Use
1299         lll_{,un}lock macros instead of lll_mutex_{,un}lock, pass
1300         rwlock->__data.__shared as second argument to them and similarly
1301         for lll_futex_w*.
1302         * pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock):
1303         Likewise.
1304         * pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock):
1305         Likewise.
1306         * pthread_rwlock_tryrdlock.c (__pthread_rwlock_tryrdlock): Likewise.
1307         * pthread_rwlock_trywrlock.c (__pthread_rwlock_trywrlock): Likewise.
1308         * pthread_rwlock_unlock.c (__pthread_rwlock_unlock): Likewise.
1309         * pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock): Likewise.
1310         * sem_close.c (sem_close): Pass LLL_PRIVATE as second argument
1311         to lll_{,un}lock macros on __sem_mappings_lock.
1312         * sem_open.c (check_add_mapping): Likewise.
1313         (__sem_mappings_lock): Change type to int.
1314         * semaphoreP.h (__sem_mappings_lock): Likewise.
1315         * pthread_mutex_lock.c (LLL_MUTEX_LOCK, LLL_MUTEX_TRYLOCK,
1316         LLL_ROBUST_MUTEX_LOCK): Use lll_{,try,robust_}lock macros
1317         instead of lll_*mutex_*, pass LLL_SHARED as last
1318         argument.
1319         (__pthread_mutex_lock): Use lll_unlock instead of lll_mutex_unlock,
1320         pass LLL_SHARED as last argument.
1321         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c (LLL_MUTEX_LOCK,
1322         LLL_MUTEX_TRYLOCK, LLL_ROBUST_MUTEX_LOCK): Use
1323         lll_{cond_,cond_try,robust_cond}lock macros instead of lll_*mutex_*,
1324         pass LLL_SHARED as last argument.
1325         * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Use
1326         lll_{timed,try,robust_timed,un}lock instead of lll_*mutex*, pass
1327         LLL_SHARED as last argument.
1328         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Similarly.
1329         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt):
1330         Similarly.
1331         * sysdeps/pthread/bits/libc-lock.h (__libc_lock_lock,
1332         __libc_lock_lock_recursive, __libc_lock_unlock,
1333         __libc_lock_unlock_recursive): Pass LLL_PRIVATE as second
1334         argument to lll_{,un}lock.
1335         * sysdeps/pthread/bits/stdio-lock.h (_IO_lock_lock,
1336         _IO_lock_unlock): Likewise.
1337         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Don't use
1338         compound literal.
1339         * sysdeps/unix/sysv/linux/unregister-atfork.c (__unregister_atfork):
1340         Pass LLL_PRIVATE as second argument to lll_{,un}lock macros on
1341         __fork_lock.
1342         * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork,
1343         free_mem): Likewise.
1344         (__fork_lock): Change type to int.
1345         * sysdeps/unix/sysv/linux/fork.h (__fork_lock): Likewise.
1346         * sysdeps/unix/sysv/linux/sem_post.c (__new_sem_post): Pass
1347         isem->private ^ FUTEX_PRIVATE_FLAG as second argument to
1348         lll_futex_wake.
1349         * sysdeps/unix/sysv/linux/sem_timedwait.c (sem_timedwait): Likewise.
1350         * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Likewise.
1351         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait_private):
1352         New function.
1353         (__lll_lock_wait, __lll_timedlock_wait): Add private argument and
1354         pass it through to lll_futex_*wait, only compile in when
1355         IS_IN_libpthread.
1356         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c
1357         (__lll_robust_lock_wait, __lll_robust_timedlock_wait): Add private
1358         argument and pass it through to lll_futex_*wait.
1359         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Renamed all
1360         lll_mutex_* resp. lll_robust_mutex_* macros to lll_* resp.
1361         lll_robust_*.  Renamed all __lll_mutex_* resp. __lll_robust_mutex_*
1362         inline functions to __lll_* resp. __lll_robust_*.
1363         (LLL_MUTEX_LOCK_INITIALIZER): Remove.
1364         (lll_mutex_dead): Add private argument.
1365         (__lll_lock_wait_private): New prototype.
1366         (__lll_lock_wait, __lll_robust_lock_wait, __lll_lock_timedwait,
1367         __lll_robust_lock_timedwait): Add private argument to prototypes.
1368         (__lll_lock): Add private argument, if it is constant LLL_PRIVATE,
1369         call __lll_lock_wait_private, otherwise pass private to
1370         __lll_lock_wait.
1371         (__lll_robust_lock, __lll_cond_lock, __lll_timedlock,
1372         __lll_robust_timedlock): Add private argument, pass it to
1373         __lll_*wait functions.
1374         (__lll_unlock): Add private argument, if it is constant LLL_PRIVATE,
1375         call __lll_unlock_wake_private, otherwise pass private to
1376         __lll_unlock_wake.
1377         (__lll_robust_unlock): Add private argument, pass it to
1378         __lll_robust_unlock_wake.
1379         (lll_lock, lll_robust_lock, lll_cond_lock, lll_timedlock,
1380         lll_robust_timedlock, lll_unlock, lll_robust_unlock): Add private
1381         argument, pass it through to __lll_* inline function.
1382         (__lll_mutex_unlock_force, lll_mutex_unlock_force): Remove.
1383         (lll_lock_t): Remove.
1384         (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake,
1385         __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait,
1386         lll_cond_wake, lll_cond_broadcast): Remove.
1387         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
1388         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
1389         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
1390         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
1391         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Allow including
1392         the header from assembler.  Renamed all lll_mutex_* resp.
1393         lll_robust_mutex_* macros to lll_* resp. lll_robust_*.
1394         (LOCK, FUTEX_CMP_REQUEUE, FUTEX_WAKE_OP,
1395         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
1396         (LLL_MUTEX_LOCK_INITIALIZER, LLL_MUTEX_LOCK_INITIALIZER_LOCKED,
1397         LLL_MUTEX_LOCK_INITIALIZER_WAITERS): Remove.
1398         (__lll_mutex_lock_wait, __lll_mutex_timedlock_wait,
1399         __lll_mutex_unlock_wake, __lll_lock_wait, __lll_unlock_wake):
1400         Remove prototype.
1401         (__lll_trylock_asm, __lll_lock_asm_start, __lll_unlock_asm): Define.
1402         (lll_robust_trylock, lll_cond_trylock): Use LLL_LOCK_INITIALIZER*
1403         rather than LLL_MUTEX_LOCK_INITIALIZER* macros.
1404         (lll_trylock): Likewise, use __lll_trylock_asm, pass
1405         MULTIPLE_THREADS_OFFSET as another asm operand.
1406         (lll_lock): Add private argument, use __lll_lock_asm_start, pass
1407         MULTIPLE_THREADS_OFFSET as last asm operand, call
1408         __lll_lock_wait_private if private is constant LLL_PRIVATE,
1409         otherwise pass private as another argument to __lll_lock_wait.
1410         (lll_robust_lock, lll_cond_lock, lll_robust_cond_lock,
1411         lll_timedlock, lll_robust_timedlock): Add private argument, pass
1412         private as another argument to __lll_*lock_wait call.
1413         (lll_unlock): Add private argument, use __lll_unlock_asm, pass
1414         MULTIPLE_THREADS_OFFSET as another asm operand, call
1415         __lll_unlock_wake_private if private is constant LLL_PRIVATE,
1416         otherwise pass private as another argument to __lll_unlock_wake.
1417         (lll_robust_unlock): Add private argument, pass private as another
1418         argument to __lll_unlock_wake.
1419         (lll_robust_dead): Add private argument, use __lll_private_flag
1420         macro.
1421         (lll_islocked): Use LLL_LOCK_INITIALIZER instead of
1422         LLL_MUTEX_LOCK_INITIALIZER.
1423         (lll_lock_t): Remove.
1424         (LLL_LOCK_INITIALIZER_WAITERS): Define.
1425         (__lll_cond_wait, __lll_cond_timedwait, __lll_cond_wake,
1426         __lll_cond_broadcast, lll_cond_wait, lll_cond_timedwait,
1427         lll_cond_wake, lll_cond_broadcast): Remove.
1428         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
1429         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Revert
1430         2007-05-2{3,9} changes.
1431         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Include
1432         kernel-features.h and lowlevellock.h.
1433         (LOAD_PRIVATE_FUTEX_WAIT): Define.
1434         (LOAD_FUTEX_WAIT): Rewritten.
1435         (LOCK, SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't
1436         define.
1437         (__lll_lock_wait_private, __lll_unlock_wake_private): New functions.
1438         (__lll_mutex_lock_wait): Rename to ...
1439         (__lll_lock_wait): ... this.  Take futex addr from %edx instead of
1440         %ecx, %ecx is now private argument.  Don't compile in for libc.so.
1441         (__lll_mutex_timedlock_wait): Rename to ...
1442         (__lll_timedlock_wait): ... this.  Use __NR_gettimeofday.  %esi
1443         contains private argument.  Don't compile in for libc.so.
1444         (__lll_mutex_unlock_wake): Rename to ...
1445         (__lll_unlock_wake): ... this.  %ecx contains private argument.
1446         Don't compile in for libc.so.
1447         (__lll_timedwait_tid): Use __NR_gettimeofday.
1448         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: Include
1449         kernel-features.h and lowlevellock.h.
1450         (LOAD_FUTEX_WAIT): Define.
1451         (LOCK, SYS_gettimeofday, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't
1452         define.
1453         (__lll_robust_mutex_lock_wait): Rename to ...
1454         (__lll_robust_lock_wait): ... this.  Futex addr is now in %edx
1455         argument, %ecx argument contains private.  Use LOAD_FUTEX_WAIT
1456         macro.
1457         (__lll_robust_mutex_timedlock_wait): Rename to ...
1458         (__lll_robust_timedlock_wait): ... this.  Use __NR_gettimeofday.
1459         %esi argument contains private, use LOAD_FUTEX_WAIT macro.
1460         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Include
1461         lowlevellock.h.
1462         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
1463         (pthread_barrier_wait): Rename __lll_mutex_* to __lll_*, pass
1464         PRIVATE(%ebx) ^ LLL_SHARED as private argument in %ecx to
1465         __lll_lock_wait and __lll_unlock_wake, pass MUTEX(%ebx) address
1466         to __lll_lock_wait in %edx.
1467         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S:
1468         Include lowlevellock.h and pthread-errnos.h.
1469         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE,
1470         FUTEX_CMP_REQUEUE, EINVAL, LOCK): Don't define.
1471         (__pthread_cond_broadcast): Rename __lll_mutex_* to __lll_*, pass
1472         cond_lock address in %edx rather than %ecx to __lll_lock_wait,
1473         pass LLL_SHARED in %ecx to both __lll_lock_wait and
1474         __lll_unlock_wake.
1475         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S:
1476         Include lowlevellock.h and pthread-errnos.h.
1477         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_WAKE_OP,
1478         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE, EINVAL, LOCK): Don't define.
1479         (__pthread_cond_signal): Rename __lll_mutex_* to __lll_*, pass
1480         cond_lock address in %edx rather than %ecx to __lll_lock_wait,
1481         pass LLL_SHARED in %ecx to both __lll_lock_wait and
1482         __lll_unlock_wake.
1483         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
1484         Include lowlevellock.h.
1485         (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE, LOCK):
1486         Don't define.
1487         (__pthread_cond_timedwait): Rename __lll_mutex_* to __lll_*, pass
1488         cond_lock address in %edx rather than %ecx to __lll_lock_wait,
1489         pass LLL_SHARED in %ecx to both __lll_lock_wait and
1490         __lll_unlock_wake.  Use __NR_gettimeofday.
1491         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
1492         Include lowlevellock.h.
1493         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
1494         (__pthread_cond_wait, __condvar_w_cleanup): Rename __lll_mutex_*
1495         to __lll_*, pass cond_lock address in %edx rather than %ecx to
1496         __lll_lock_wait, pass LLL_SHARED in %ecx to both __lll_lock_wait
1497         and __lll_unlock_wake.
1498         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S:
1499         Include lowlevellock.h.
1500         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
1501         (__pthread_rwlock_rdlock): Rename __lll_mutex_* to __lll_*, pass
1502         MUTEX(%ebx) address in %edx rather than %ecx to
1503         __lll_lock_wait, pass PSHARED(%ebx) in %ecx to both __lll_lock_wait
1504         and __lll_unlock_wake.  Move return value from %ecx to %edx
1505         register.
1506         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
1507         Include lowlevellock.h.
1508         (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE, LOCK):
1509         Don't define.
1510         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*, pass
1511         MUTEX(%ebp) address in %edx rather than %ecx to
1512         __lll_lock_wait, pass PSHARED(%ebp) in %ecx to both __lll_lock_wait
1513         and __lll_unlock_wake.  Move return value from %ecx to %edx
1514         register.  Use __NR_gettimeofday.
1515         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
1516         Include lowlevellock.h.
1517         (SYS_futex, SYS_gettimeofday, FUTEX_WAIT, FUTEX_WAKE, LOCK):
1518         Don't define.
1519         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*, pass
1520         MUTEX(%ebp) address in %edx rather than %ecx to
1521         __lll_lock_wait, pass PSHARED(%ebp) in %ecx to both __lll_lock_wait
1522         and __lll_unlock_wake.  Move return value from %ecx to %edx
1523         register.  Use __NR_gettimeofday.
1524         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S:
1525         Include lowlevellock.h.
1526         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
1527         (__pthread_rwlock_unlock): Rename __lll_mutex_* to __lll_*, pass
1528         MUTEX(%edi) address in %edx rather than %ecx to
1529         __lll_lock_wait, pass PSHARED(%edi) in %ecx to both __lll_lock_wait
1530         and __lll_unlock_wake.
1531         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S:
1532         Include lowlevellock.h.
1533         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
1534         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*, pass
1535         MUTEX(%ebx) address in %edx rather than %ecx to
1536         __lll_lock_wait, pass PSHARED(%ebx) in %ecx to both __lll_lock_wait
1537         and __lll_unlock_wake.  Move return value from %ecx to %edx
1538         register.
1539         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Include
1540         lowlevellock.h.
1541         (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Don't
1542         define.
1543         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Include lowlevellock.h.
1544         (LOCK, SYS_futex, FUTEX_WAKE): Don't define.
1545         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Include
1546         lowlevellock.h.
1547         (LOCK, SYS_futex, SYS_gettimeofday, FUTEX_WAIT): Don't define.
1548         (sem_timedwait): Use __NR_gettimeofday.
1549         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Include
1550         lowlevellock.h.
1551         (LOCK): Don't define.
1552         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Include
1553         lowlevellock.h.
1554         (LOCK, SYS_futex, FUTEX_WAIT): Don't define.
1555         * sysdeps/unix/sysv/linux/powerpc/sem_post.c: Wake only when there
1556         are waiters.
1557         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: Revert
1558         2007-05-2{3,9} changes.
1559         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Include
1560         kernel-features.h and lowlevellock.h.
1561         (LOAD_PRIVATE_FUTEX_WAIT): Define.
1562         (LOAD_FUTEX_WAIT): Rewritten.
1563         (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't define.
1564         (__lll_lock_wait_private, __lll_unlock_wake_private): New functions.
1565         (__lll_mutex_lock_wait): Rename to ...
1566         (__lll_lock_wait): ... this.  %esi is now private argument.
1567         Don't compile in for libc.so.
1568         (__lll_mutex_timedlock_wait): Rename to ...
1569         (__lll_timedlock_wait): ... this.  %esi contains private argument.
1570         Don't compile in for libc.so.
1571         (__lll_mutex_unlock_wake): Rename to ...
1572         (__lll_unlock_wake): ... this.  %esi contains private argument.
1573         Don't compile in for libc.so.
1574         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: Include
1575         kernel-features.h and lowlevellock.h.
1576         (LOAD_FUTEX_WAIT): Define.
1577         (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE): Don't define.
1578         (__lll_robust_mutex_lock_wait): Rename to ...
1579         (__lll_robust_lock_wait): ... this.  %esi argument contains private.
1580         Use LOAD_FUTEX_WAIT macro.
1581         (__lll_robust_mutex_timedlock_wait): Rename to ...
1582         (__lll_robust_timedlock_wait): ... this. %esi argument contains
1583         private, use LOAD_FUTEX_WAIT macro.
1584         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Include
1585         lowlevellock.h.
1586         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
1587         (pthread_barrier_wait): Rename __lll_mutex_* to __lll_*, pass
1588         PRIVATE(%rdi) ^ LLL_SHARED as private argument in %esi to
1589         __lll_lock_wait and __lll_unlock_wake.
1590         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S:
1591         Include lowlevellock.h and pthread-errnos.h.
1592         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_REQUEUE,
1593         FUTEX_CMP_REQUEUE, EINVAL, LOCK): Don't define.
1594         (__pthread_cond_broadcast): Rename __lll_mutex_* to __lll_*,
1595         pass LLL_SHARED in %esi to both __lll_lock_wait and
1596         __lll_unlock_wake.
1597         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S:
1598         Include lowlevellock.h and pthread-errnos.h.
1599         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_WAKE_OP,
1600         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE, EINVAL, LOCK): Don't define.
1601         (__pthread_cond_signal): Rename __lll_mutex_* to __lll_*,
1602         pass LLL_SHARED in %esi to both __lll_lock_wait and
1603         __lll_unlock_wake.
1604         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:
1605         Include lowlevellock.h.
1606         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
1607         (__pthread_cond_timedwait): Rename __lll_mutex_* to __lll_*,
1608         pass LLL_SHARED in %esi to both __lll_lock_wait and
1609         __lll_unlock_wake.
1610         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:
1611         Include lowlevellock.h.
1612         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, LOCK): Don't define.
1613         (__pthread_cond_wait, __condvar_cleanup): Rename __lll_mutex_*
1614         to __lll_*, pass LLL_SHARED in %esi to both __lll_lock_wait
1615         and __lll_unlock_wake.
1616         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S:
1617         Include lowlevellock.h.
1618         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK):
1619         Don't define.
1620         (__pthread_rwlock_rdlock): Rename __lll_mutex_* to __lll_*,
1621         pass PSHARED(%rdi) in %esi to both __lll_lock_wait
1622         and __lll_unlock_wake.
1623         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
1624         Include lowlevellock.h.
1625         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK):
1626         Don't define.
1627         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*,
1628         pass PSHARED(%rdi) in %esi to both __lll_lock_wait
1629         and __lll_unlock_wake.
1630         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
1631         Include lowlevellock.h.
1632         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK):
1633         Don't define.
1634         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*,
1635         pass PSHARED(%rdi) in %esi to both __lll_lock_wait
1636         and __lll_unlock_wake.
1637         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S:
1638         Include lowlevellock.h.
1639         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK):
1640         Don't define.
1641         (__pthread_rwlock_unlock): Rename __lll_mutex_* to __lll_*,
1642         pass PSHARED(%rdi) in %esi to both __lll_lock_wait
1643         and __lll_unlock_wake.
1644         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S:
1645         Include lowlevellock.h.
1646         (SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG, LOCK):
1647         Don't define.
1648         (__pthread_rwlock_wrlock): Rename __lll_mutex_* to __lll_*,
1649         pass PSHARED(%rdi) in %ecx to both __lll_lock_wait
1650         and __lll_unlock_wake.
1651         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Include
1652         lowlevellock.h.
1653         (LOCK, SYS_futex, FUTEX_WAIT, FUTEX_WAKE, FUTEX_PRIVATE_FLAG): Don't
1654         define.
1655         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Include lowlevellock.h.
1656         (LOCK, SYS_futex, FUTEX_WAKE): Don't define.
1657         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Include
1658         lowlevellock.h.
1659         (LOCK, SYS_futex, FUTEX_WAIT): Don't define.
1660         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Include
1661         lowlevellock.h.
1662         (LOCK): Don't define.
1663         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Include
1664         lowlevellock.h.
1665         (LOCK, SYS_futex, FUTEX_WAIT): Don't define.
1666         * sysdeps/unix/sysv/linux/sparc/internaltypes.h: New file.
1667         * sysdeps/unix/sysv/linux/sparc/pthread_barrier_destroy.c: New file.
1668         * sysdeps/unix/sysv/linux/sparc/pthread_barrier_init.c: New file.
1669         * sysdeps/unix/sysv/linux/sparc/pthread_barrier_wait.c: New file.
1670         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
1671         (__lll_lock_wait_private): New function.
1672         (__lll_lock_wait, __lll_timedlock_wait): Add private argument, pass
1673         it to lll_futex_*wait.  Don't compile in for libc.so.
1674         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_init.c:
1675         Remove.
1676         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c
1677         (struct sparc_pthread_barrier): Remove.
1678         (pthread_barrier_wait): Use union sparc_pthread_barrier instead of
1679         struct sparc_pthread_barrier.  Pass
1680         ibarrier->s.pshared ? LLL_SHARED : LLL_PRIVATE to lll_{,un}lock
1681         and lll_futex_wait macros.
1682         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_init.c:
1683         Remove.
1684         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c:
1685         Include sparc pthread_barrier_wait.c instead of generic one.
1686
1687 2007-07-30  Jakub Jelinek  <jakub@redhat.com>
1688
1689         * tst-rwlock14.c (do_test): Avoid warnings on 32-bit arches.
1690
1691         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
1692         (pthread_rwlock_timedrdlock): Copy futex retval to %esi rather than
1693         %ecx.
1694         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
1695         (pthread_rwlock_timedwrlock): Likewise.
1696         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
1697         (__pthread_rwlock_unlock): Fix MUTEX != 0 args to __lll_*.
1698
1699 2007-07-31  Jakub Jelinek  <jakub@redhat.com>
1700
1701         * sysdeps/sparc/tls.h (tcbhead_t): Add private_futex field.
1702
1703 2007-07-26  Jakub Jelinek  <jakub@redhat.com>
1704
1705         * tst-locale2.c (useless): Add return statement.
1706
1707 2007-07-24  Jakub Jelinek  <jakub@redhat.com>
1708
1709         * allocatestack.c (__nptl_setxid, __wait_lookup_done): Replace
1710         lll_private_futex_* (*) with lll_futex_* (*, LLL_PRIVATE).
1711         * pthread_create.c (start_thread): Likewise.
1712         * init.c (sighandler_setxid): Likewise.
1713         * sysdeps/alpha/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
1714         * sysdeps/ia64/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
1715         * sysdeps/i386/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
1716         * sysdeps/s390/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
1717         * sysdeps/powerpc/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
1718         * sysdeps/x86_64/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
1719         * sysdeps/sparc/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
1720         * sysdeps/sh/tls.h (THREAD_GSCOPE_RESET_FLAG): Likewise.
1721         * sysdeps/pthread/aio_misc.h (AIO_MISC_NOTIFY, AIO_MISC_WAIT):
1722         Likewise.
1723         * sysdeps/pthread/gai_misc.h (GAI_MISC_NOTIFY, GAI_MISC_WAIT):
1724         Likewise.
1725         * sysdeps/unix/sysv/linux/unregister-atfork.c (__unregister_atfork):
1726         Likewise.
1727         * sysdeps/unix/sysv/linux/rtld-lowlevel.h (__rtld_waitzero,
1728         __rtld_notify): Likewise.
1729         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Likewise.
1730         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (clear_once_control,
1731         __pthread_once): Likewise.
1732         * sysdeps/unix/sysv/linux/alpha/pthread_once.c (clear_once_control,
1733         __pthread_once): Add LLL_PRIVATE as last argument to lll_futex_*.
1734         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (FUTEX_PRIVATE_FLAG,
1735         LLL_PRIVATE, LLL_SHARED, __lll_private_flag): Define.
1736         (lll_futex_wait): Add private argument, define as wrapper around
1737         lll_futex_timed_wait.
1738         (lll_futex_timed_wait, lll_futex_wake): Add private argument,
1739         use __lll_private_flag macro.
1740         (lll_robust_mutex_dead, __lll_mutex_unlock, __lll_robust_mutex_unlock,
1741         __lll_mutex_unlock_force): Pass LLL_SHARED as last arg to lll_futex_*.
1742         * sysdeps/unix/sysv/linux/ia64/pthread_once.c (clear_once_control,
1743         __pthread_once): Add LLL_PRIVATE as last argument to lll_futex_*.
1744         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (FUTEX_PRIVATE_FLAG,
1745         LLL_PRIVATE, LLL_SHARED, __lll_private_flag): Define.
1746         (lll_futex_wait): Add private argument, define as wrapper around
1747         lll_futex_timed_wait.
1748         (lll_futex_timed_wait, lll_futex_wake): Add private argument,
1749         use __lll_private_flag macro.
1750         (__lll_mutex_unlock, __lll_robust_mutex_unlock, lll_wait_tid,
1751         __lll_mutex_unlock_force): Pass LLL_SHARED as last arg to lll_futex_*.
1752         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (__lll_private_flag):
1753         Define.
1754         (lll_futex_timed_wait, lll_futex_wake): Use it.
1755         (lll_private_futex_wait, lll_private_futex_timed_wait,
1756         lll_private_futex_wake): Removed.
1757         * sysdeps/unix/sysv/linux/s390/pthread_once.c (clear_once_control,
1758         __pthread_once): Add LLL_PRIVATE as last argument to lll_futex_*.
1759         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_PRIVATE_FLAG,
1760         LLL_PRIVATE, LLL_SHARED, __lll_private_flag): Define.
1761         (lll_futex_wait): Add private argument, define as wrapper around
1762         lll_futex_timed_wait.
1763         (lll_futex_timed_wait, lll_futex_wake): Add private argument,
1764         use __lll_private_flag macro.
1765         (lll_robust_mutex_dead, __lll_mutex_unlock, __lll_robust_mutex_unlock,
1766         lll_wait_tid, __lll_mutex_unlock_force): Pass LLL_SHARED as last arg
1767         to lll_futex_*.
1768         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
1769         (lll_private_futex_wait, lll_private_futex_timed_wait,
1770         lll_private_futex_wake): Removed.
1771         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (__lll_private_flag):
1772         Fix !__ASSUME_PRIVATE_FUTEX non-constant private case.
1773         (lll_private_futex_wait, lll_private_futex_timed_wait,
1774         lll_private_futex_wake): Removed.
1775         * sysdeps/unix/sysv/linux/sparc/pthread_once.c (clear_once_control,
1776         __pthread_once): Add LLL_PRIVATE as last argument to lll_futex_*.
1777         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (FUTEX_PRIVATE_FLAG,
1778         LLL_PRIVATE, LLL_SHARED, __lll_private_flag): Define.
1779         (lll_futex_wait): Add private argument, define as wrapper around
1780         lll_futex_timed_wait.
1781         (lll_futex_timed_wait, lll_futex_wake): Add private argument,
1782         use __lll_private_flag macro.
1783         (lll_robust_mutex_dead, __lll_mutex_unlock, __lll_robust_mutex_unlock,
1784         lll_wait_tid, __lll_mutex_unlock_force): Pass LLL_SHARED as last arg
1785         to lll_futex_*.
1786         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (__lll_private_flag):
1787         Define.
1788         (lll_futex_timed_wait, lll_futex_wake): Use it.
1789         (lll_private_futex_wait, lll_private_futex_timed_wait,
1790         lll_private_futex_wake): Removed.
1791
1792 2007-07-27  Jakub Jelinek  <jakub@redhat.com>
1793
1794         * sysdeps/sparc/tls.h (tcbhead_t): Move gscope_flag to the end
1795         of the structure for sparc32.
1796
1797 2007-07-26  Aurelien Jarno  <aurelien@aurel32.net>
1798
1799         * sysdeps/sparc/tls.h (tcbhead_t): Add gscope_flag.
1800
1801 2007-07-23  Ulrich Drepper  <drepper@redhat.com>
1802
1803         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: Fix
1804         code used when private futexes are assumed.
1805         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
1806         Likewise.
1807
1808 2007-07-23  Jakub Jelinek  <jakub@redhat.com>
1809
1810         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
1811         (__lll_private_flag): Define.
1812         (lll_futex_wait): Define as a wrapper around lll_futex_timed_wait.
1813         (lll_futex_timed_wait, lll_futex_wake, lll_futex_wake_unlock): Use
1814         __lll_private_flag.
1815         (lll_private_futex_wait, lll_private_futex_timedwait,
1816         lll_private_futex_wake): Define as wrapper around non-_private
1817         macros.
1818         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
1819         (__lll_private_flag): Define.
1820         (lll_futex_timed_wait, lll_futex_wake): Use __lll_private_flag.
1821         (lll_private_futex_wait, lll_private_futex_timedwait,
1822         lll_private_futex_wake): Define as wrapper around non-_private
1823         macros.
1824
1825 2007-07-10  Steven Munroe  <sjmunroe@us.ibm.com>
1826
1827         * pthread_rwlock_rdlock.c (__pthread_rwlock_rdlock): Add LLL_SHARED
1828         parameter to lll_futex_wait call.
1829         * pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock): Likewise.
1830
1831         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
1832         Replace lll_futex_wait with lll_private_futex_wait.
1833         * sysdeps/unix/sysv/linux/powerpc/sem_post.c (__new_sem_post):
1834         Add LLL_SHARED parameter to lll_futex_wake().
1835
1836         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Define LLL_PRIVATE
1837         LLL_SHARED, lll_private_futex_wait, lll_private_futex_timed_wait and
1838         lll_private_futex_wake.
1839         (lll_futex_wait): Add private parameter. Adjust FUTEX_PRIVATE_FLAG
1840         bit from private parm before syscall.
1841         (lll_futex_timed_wait): Likewise.
1842         (lll_futex_wake): Likewise.
1843         (lll_futex_wake_unlock): Likewise.
1844         (lll_mutex_unlock): Add LLL_SHARED parm to lll_futex_wake call.
1845         (lll_robust_mutex_unlock): Likewise.
1846         (lll_mutex_unlock_force): Likewise.
1847         (lll_wait_tid): Add LLL_SHARED parm to lll_futex_wait call.
1848
1849 2007-07-23  Ulrich Drepper  <drepper@redhat.com>
1850
1851         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: Fix
1852         compilation when unconditionally using private futexes.
1853         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
1854         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
1855         Likewise.
1856         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Likewise.
1857         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
1858
1859 2007-07-17  Jakub Jelinek  <jakub@redhat.com>
1860
1861         * sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock_clear_flags2):
1862         Define.
1863
1864 2007-07-06  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1865
1866         * sysdeps/sh/tls.h: Include stdlib.h, list.h, sysdep.h and
1867         kernel-features.h.
1868
1869 2007-05-16  Roland McGrath  <roland@redhat.com>
1870
1871         * init.c (__nptl_initial_report_events): New variable.
1872         (__pthread_initialize_minimal_internal): Initialize pd->report_events
1873         to that.
1874
1875 2007-06-22  Jakub Jelinek  <jakub@redhat.com>
1876
1877         * pthread_getattr_np.c (pthread_getattr_np): Clear cpuset and
1878         cpusetsize if pthread_getaffinity_np failed with ENOSYS.
1879
1880 2007-06-19  Ulrich Drepper  <drepper@redhat.com>
1881
1882         * sysdeps/unix/sysv/linux/rtld-lowlevel.h: Remove mrlock
1883         implementation.
1884
1885 2007-06-18  Ulrich Drepper  <drepper@redhat.com>
1886
1887         * pthreadP.h: Define PTHREAD_MUTEX_TYPE.
1888         * phtread_mutex_lock.c: Use PTHREAD_MUTEX_TYPE.
1889         * pthread_mutex_timedlock.c: Likewise.
1890         * pthread_mutex_trylock.c: Likewise.
1891         * pthread_mutex_unlock.c: Likewise.
1892
1893 2007-06-17  Andreas Schwab  <schwab@suse.de>
1894
1895         * sysdeps/pthread/pt-initfini.c: Tell gcc about the nonstandard
1896         sections.
1897
1898 2007-06-17  Ulrich Drepper  <drepper@redhat.com>
1899
1900         * allocatestack.c (allocate_stack): Make code compile if
1901         __ASSUME_PRIVATE_FUTEX is set.
1902
1903 2007-06-17  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1904
1905         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S:
1906         (__pthread_rwlock_rdlock): Don't use non SH-3/4 instruction.
1907         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S:
1908         (__pthread_rwlock_wrlock): Likewise.
1909         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S:
1910         (pthread_rwlock_timedrdlock): Likewise.
1911         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S:
1912         (pthread_rwlock_timedwrlock): Likewise.
1913         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S:
1914         (__pthread_rwlock_unlock): Likewise.
1915
1916 2007-06-10  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1917
1918         * sysdeps/sh/tcb-offsets.sym: Add PRIVATE_FUTEX.
1919         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Include endian.h.
1920         Split __flags into __flags, __shared, __pad1 and __pad2.
1921         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Use private
1922         futexes if they are available.
1923         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Adjust so that change
1924         in libc-lowlevellock.S allow using private futexes.
1925         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Define
1926         FUTEX_PRIVATE_FLAG.  Add additional parameter to lll_futex_wait,
1927         lll_futex_timed_wait and lll_futex_wake.  Change lll_futex_wait
1928         to call lll_futex_timed_wait.  Add lll_private_futex_wait,
1929         lll_private_futex_timed_wait and lll_private_futex_wake.
1930         (lll_robust_mutex_unlock): Fix typo.
1931         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Use private
1932         field in futex command setup.
1933         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Use
1934         COND_NWAITERS_SHIFT instead of COND_CLOCK_BITS.
1935         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
1936         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Use private futexes
1937         if they are available.  Remove clear_once_control.
1938         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Use private
1939         futexes if they are available.
1940         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
1941         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
1942         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
1943         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
1944         * sysdeps/unix/sysv/linux/sh/sem_post.S: Add private futex support.
1945         Wake only when there are waiters.
1946         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Add private futex
1947         support.  Indicate that there are waiters.  Remove unnecessary
1948         extra cancellation test.
1949         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.  Removed
1950         left-over duplication of __sem_wait_cleanup.
1951
1952 2007-06-07  Ulrich Drepper  <drepper@redhat.com>
1953
1954         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Add additional
1955         parameter to lll_futex_wait, lll_futex_timed_wait, and
1956         lll_futex_wake.  Change lll_futex_wait to call lll_futex_timed_wait.
1957         Add lll_private_futex_wait, lll_private_futex_timed_wait, and
1958         lll_private_futex_wake.
1959         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
1960         * allocatestack.c: Adjust use of lll_futex_* macros.
1961         * init.c: Likewise.
1962         * lowlevellock.h: Likewise.
1963         * pthread_barrier_wait.c: Likewise.
1964         * pthread_cond_broadcast.c: Likewise.
1965         * pthread_cond_destroy.c: Likewise.
1966         * pthread_cond_signal.c: Likewise.
1967         * pthread_cond_timedwait.c: Likewise.
1968         * pthread_cond_wait.c: Likewise.
1969         * pthread_create.c: Likewise.
1970         * pthread_mutex_lock.c: Likewise.
1971         * pthread_mutex_setprioceiling.c: Likewise.
1972         * pthread_mutex_timedlock.c: Likewise.
1973         * pthread_mutex_unlock.c: Likewise.
1974         * pthread_rwlock_timedrdlock.c: Likewise.
1975         * pthread_rwlock_timedwrlock.c: Likewise.
1976         * pthread_rwlock_unlock.c: Likewise.
1977         * sysdeps/alpha/tls.h: Likewise.
1978         * sysdeps/i386/tls.h: Likewise.
1979         * sysdeps/ia64/tls.h: Likewise.
1980         * sysdeps/powerpc/tls.h: Likewise.
1981         * sysdeps/pthread/aio_misc.h: Likewise.
1982         * sysdeps/pthread/gai_misc.h: Likewise.
1983         * sysdeps/s390/tls.h: Likewise.
1984         * sysdeps/sh/tls.h: Likewise.
1985         * sysdeps/sparc/tls.h: Likewise.
1986         * sysdeps/unix/sysv/linux/fork.c: Likewise.
1987         * sysdeps/unix/sysv/linux/lowlevellock.c: Likewise.
1988         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c: Likewise.
1989         * sysdeps/unix/sysv/linux/rtld-lowlevel.h: Likewise.
1990         * sysdeps/unix/sysv/linux/sem_post.c: Likewise.
1991         * sysdeps/unix/sysv/linux/sem_timedwait.c: Likewise.
1992         * sysdeps/unix/sysv/linux/sem_wait.c: Likewise.
1993         * sysdeps/unix/sysv/linux/unregister-atfork.c: Likewise.
1994         * sysdeps/unix/sysv/linux/sparc/pthread_once.c: Likewise.
1995         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c:
1996         Likewise.
1997         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c: Likewise.
1998         * sysdeps/x86_64/tls.h: Likewise.
1999
2000 2007-05-29  Ulrich Drepper  <drepper@redhat.com>
2001
2002         * pthread_getattr_np.c: No need to install a cancellation handler,
2003         this is no cancellation point.
2004         * pthread_getschedparam.c: Likewise.
2005         * pthread_setschedparam.c: Likewise.
2006         * pthread_setschedprio.c: Likewise.
2007         * sysdeps/unix/sysv/linux/lowlevellock.c: Remove all traces of
2008         lll_unlock_wake_cb.
2009         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise.
2010         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
2011         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
2012         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
2013         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
2014         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
2015         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
2016         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
2017         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
2018         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c: Likewise.
2019         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
2020         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
2021
2022         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Checking
2023         whether there are more than one thread makes no sense here since
2024         we only call the slow path if the locks are taken.
2025         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: Likewise.
2026
2027         * sysdeps/unix/sysv/linux/internaltypes.h: Introduce
2028         COND_NWAITERS_SHIFT.
2029         * pthread_cond_destroy.c: Use COND_NWAITERS_SHIFT instead of
2030         COND_CLOCK_BITS.
2031         * pthread_cond_init.c: Likewise.
2032         * pthread_cond_timedwait.c: Likewise.
2033         * pthread_cond_wait.c: Likewise.
2034         * pthread_condattr_getclock.c: Likewise.
2035         * pthread_condattr_setclock.c: Likewise.
2036         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Likewise.
2037         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
2038         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
2039         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
2040         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
2041
2042 2007-05-28  Jakub Jelinek  <jakub@redhat.com>
2043
2044         * sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c: Include
2045         unistd.h.
2046
2047         * sysdeps/i386/tls.h (THREAD_GSCOPE_RESET_FLAG): Use explicit
2048         insn suffix.
2049         (THREAD_GSCOPE_GET_FLAG): Remove.
2050         * sysdeps/x86_64/tls.h (THREAD_GSCOPE_GET_FLAG): Remove.
2051         * allocatestack.c (__wait_lookup_done): Revert 2007-05-24
2052         changes.
2053         * sysdeps/powerpc/tls.h (tcbhead_t): Remove gscope_flag.
2054         (THREAD_GSCOPE_GET_FLAG): Remove.
2055         (THREAD_GSCOPE_RESET_FLAG): Use THREAD_SELF->header.gscope_flag
2056         instead of THREAD_GSCOPE_GET_FLAG.
2057         (THREAD_GSCOPE_SET_FLAG): Likewise.  Add atomic_write_barrier after
2058         it.
2059         * sysdeps/s390/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
2060         THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
2061         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
2062         THREAD_GSCOPE_WAIT): Define.
2063         * sysdeps/sparc/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
2064         THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
2065         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
2066         THREAD_GSCOPE_WAIT): Define.
2067         * sysdeps/sh/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
2068         THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
2069         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
2070         THREAD_GSCOPE_WAIT): Define.
2071         * sysdeps/ia64/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
2072         THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
2073         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
2074         THREAD_GSCOPE_WAIT): Define.
2075
2076 2007-05-24  Richard Henderson  <rth@redhat.com>
2077
2078         * descr.h (struct pthread): Add header.gscope_flag.
2079         * sysdeps/alpha/tls.h (THREAD_GSCOPE_FLAG_UNUSED,
2080         THREAD_GSCOPE_FLAG_USED, THREAD_GSCOPE_FLAG_WAIT,
2081         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_SET_FLAG,
2082         THREAD_GSCOPE_WAIT): Define.
2083
2084 2007-05-27  Ulrich Drepper  <drepper@redhat.com>
2085
2086         * init.c: Make it compile with older kernel headers.
2087
2088         * tst-initializers1.c: Show through exit code which test failed.
2089
2090         * pthread_rwlock_init.c: Also initialize __shared field.
2091         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Split __flags
2092         element in rwlock structure into four byte elements.  One of them is
2093         the new __shared element.
2094         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h [__WORDSIZE=32]:
2095         Likewise.
2096         [__WORDSIZE=64]: Renamed __pad1 element int rwlock structure to
2097         __shared, adjust names of other padding elements.
2098         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
2099         * sysdeps/pthread/pthread.h: Adjust rwlock initializers.
2100         * sysdeps/unix/sysv/linux/lowlevelrwlock.sym: Add PSHARED.
2101         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Define
2102         FUTEX_PRIVATE_FLAG.
2103         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Change main
2104         futex to use private operations if possible.
2105         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
2106         Likewise.
2107         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
2108         Likewise.
2109         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Likewise.
2110         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
2111         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
2112         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
2113         Likewise.
2114         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
2115         Likewise.
2116         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
2117         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
2118
2119 2007-05-26  Ulrich Drepper  <drepper@redhat.com>
2120
2121         * pthreadP.h (PTHREAD_RWLOCK_PREFER_READER_P): Define.
2122         * pthread_rwlock_rdlock.c: Use PTHREAD_RWLOCK_PREFER_READER_P.
2123         * pthread_rwlock_timedrdlock.c: Likewise.
2124         * pthread_rwlock_tryrdlock.c: Likewise.
2125
2126         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S (sem_trywait): Tiny
2127         optimization.
2128
2129         * sysdeps/unix/sysv/linux/sem_wait.c: Add missing break.
2130         * sysdeps/unix/sysv/linux/sem_timedwait.c: Removed left-over
2131         duplication of __sem_wait_cleanup.
2132
2133         * allocatestack.c: Revert last change.
2134         * init.c: Likewise.
2135         * sysdeps/i386/tls.h: Likewise.
2136         * sysdeps/x86_64/tls.h: Likewise.
2137         * descr.h [TLS_DTV_AT_TP] (struct pthread): Add private_futex field to
2138         header structure.
2139         * sysdeps/powerpc/tcb-offsets.sym: Add PRIVATE_FUTEX_OFFSET.
2140
2141         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_barrier):
2142         Add private field.
2143         * sysdeps/unix/sysv/linux/lowlevelbarrier.sym: Add PRIVATE definition.
2144         * pthread_barrier_init.c: Set private flag if pshared and private
2145         futexes are supported.
2146         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Use
2147         private field in futex command setup.
2148         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Likewise.
2149
2150 2007-05-25  Ulrich Drepper  <drepper@redhat.com>
2151
2152         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Add private futex
2153         support.
2154         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
2155         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
2156         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
2157         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
2158         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
2159
2160         * semaphoreP.h: Declare __old_sem_init and __old_sem_wait.
2161         * sem_init.c (__new_sem_init): Rewrite to initialize all three
2162         fields in the structure.
2163         (__old_sem_init): New function.
2164         * sem_open.c: Initialize all fields of the structure.
2165         * sem_getvalue.c: Adjust for renamed element.
2166         * sysdeps/unix/sysv/linux/Makefile [subdir=nptl]
2167         (gen-as-const-headers): Add structsem.sym.
2168         * sysdeps/unix/sysv/linux/structsem.sym: New file.
2169         * sysdeps/unix/sysv/linux/internaltypes.h: Rename struct sem to
2170         struct new_sem.  Add struct old_sem.
2171         * sysdeps/unix/sysv/linux/sem_post.c: Wake only when there are waiters.
2172         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
2173         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
2174         * sysdeps/unix/sysv/linux/sem_wait.c: Indicate that there are waiters.
2175         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
2176         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
2177         * sysdeps/unix/sysv/linux/sem_timedwait.c: Likewise.
2178         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
2179         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
2180         * Makefile (tests): Add tst-sem10, tst-sem11, tst-sem12.
2181         * tst-sem10.c: New file.
2182         * tst-sem11.c: New file.
2183         * tst-sem12.c: New file.
2184         * tst-typesizes.c: Test struct new_sem and struct old_sem instead
2185         of struct sem.
2186
2187 2007-05-25  Ulrich Drepper  <drepper@redhat.com>
2188             Jakub Jelinek  <jakub@redhat.com>
2189
2190         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
2191         Move __pthread_enable_asynccancel right before futex syscall.
2192         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
2193         Likewise.
2194
2195 2007-05-24  Jakub Jelinek  <jakub@redhat.com>
2196
2197         * sysdeps/i386/tls.h (THREAD_SET_PRIVATE_FUTEX,
2198         THREAD_COPY_PRIVATE_FUTEX): Define.
2199         * sysdeps/x86_64/tls.h (THREAD_SET_PRIVATE_FUTEX,
2200         THREAD_COPY_PRIVATE_FUTEX): Define.
2201         * allocatestack.c (allocate_stack): Use THREAD_COPY_PRIVATE_FUTEX.
2202         * init.c (__pthread_initialize_minimal_internal): Use
2203         THREAD_SET_PRIVATE_FUTEX.
2204
2205         * sysdeps/powerpc/tls.h (tcbhead_t): Add gscope_flag.
2206         (THREAD_GSCOPE_FLAG_UNUSED, THREAD_GSCOPE_FLAG_USED,
2207         THREAD_GSCOPE_FLAG_WAIT): Define.
2208         (THREAD_GSCOPE_GET_FLAG, THREAD_GSCOPE_SET_FLAG,
2209         THREAD_GSCOPE_RESET_FLAG, THREAD_GSCOPE_WAIT): Define.
2210         * sysdeps/i386/tls.h (THREAD_GSCOPE_WAIT): Don't use
2211         PTR_DEMANGLE.
2212         (THREAD_GSCOPE_GET_FLAG): Define.
2213         * sysdeps/x86_64/tls.h (THREAD_GSCOPE_GET_FLAG): Define.
2214         * allocatestack.c (__wait_lookup_done): Use THREAD_GSCOPE_GET_FLAG
2215         instead of ->header.gscope_flag directly.
2216
2217 2007-05-23  Ulrich Drepper  <drepper@redhat.com>
2218
2219         * init.c (__pthread_initialize_minimal_internal): Check whether
2220         private futexes are available.
2221         * allocatestack.c (allocate_stack): Copy private_futex field from
2222         current thread into the new stack.
2223         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: Use private
2224         futexes if they are available.
2225         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise
2226         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Adjust so that change
2227         in libc-lowlevellock.S allow using private futexes.
2228         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
2229         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Define
2230         FUTEX_PRIVATE_FLAG.
2231         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
2232         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Use private futexes
2233         if they are available.
2234         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise.
2235         * sysdeps/x86_64/tcb-offsets.sym: Add PRIVATE_FUTEX.
2236         * sysdeps/i386/tcb-offsets.sym: Likewise.
2237         * sysdeps/x86_64/tls.h (tcbhead_t): Add private_futex field.
2238         * sysdeps/i386/tls.h (tcbhead_t): Likewise.
2239
2240 2007-05-21  Ulrich Drepper  <drepper@redhat.com>
2241
2242         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
2243         Remove ptr_wait_lookup_done again.
2244         * init.c (pthread_functions): Don't add .ptr_wait_lookup_done here.
2245         (__pthread_initialize_minimal_internal): Initialize
2246         _dl_wait_lookup_done pointer in _rtld_global directly.
2247         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
2248         Remove code to code _dl_wait_lookup_done.
2249         * sysdeps/x86_64/tls.h (THREAD_GSCOPE_WAIT): The pointer is not
2250         encrypted for now.
2251
2252 2007-05-21  Jakub Jelinek  <jakub@redhat.com>
2253
2254         * tst-robust9.c (do_test): Don't fail if ENABLE_PI and
2255         pthread_mutex_init failed with ENOTSUP.
2256
2257 2007-05-19  Ulrich Drepper  <drepper@redhat.com>
2258
2259         * allocatestack.c (__wait_lookup_done): New function.
2260         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
2261         Add ptr_wait_lookup_done.
2262         * init.c (pthread_functions): Initialize .ptr_wait_lookup_done.
2263         * pthreadP.h: Declare __wait_lookup_done.
2264         * sysdeps/i386/tls.h (tcbhead_t): Add gscope_flag.
2265         Define macros to implement reference handling of global scope.
2266         * sysdeps/x86_64/tls.h: Likewise.
2267         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
2268         Initialize GL(dl_wait_lookup_done).
2269
2270 2007-05-17  Ulrich Drepper  <drepper@redhat.com>
2271
2272         [BZ #4512]
2273         * pthread_mutex_lock.c: Preserve FUTEX_WAITERS bit when dead owner
2274         is detected.
2275         * pthread_mutex_timedlock.c: Likewise.
2276         * pthread_mutex_trylock.c: Likewise.
2277         Patch in part by Atsushi Nemoto <anemo@mba.ocn.ne.jp>.
2278
2279         * Makefile (tests): Add tst-robust9 and tst-robustpi9.
2280         * tst-robust9.c: New file.
2281         * tst-robustpi9.c: New file.
2282
2283         * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Remove
2284         unnecessary extra cancellation test.
2285
2286 2007-05-14  Ulrich Drepper  <drepper@redhat.com>
2287
2288         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Remove unnecessary
2289         extra cancellation test.
2290         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
2291
2292 2007-05-10  Ulrich Drepper  <drepper@redhat.com>
2293
2294         * descr.h (struct pthread): Rearrange members to fill hole in
2295         64-bit layout.
2296
2297         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
2298         (__pthread_setaffinity_new): If syscall was successful and
2299         RESET_VGETCPU_CACHE is defined, use it before returning.
2300         * sysdeps/unix/sysv/linux/x86_64/pthread_setaffinity.c: New file.
2301
2302 2007-05-10  Jakub Jelinek  <jakub@redhat.com>
2303
2304         [BZ #4455]
2305         * tst-align2.c: Include stackinfo.h.
2306         * tst-getpid1.c: Likewise.
2307
2308 2007-05-02  Carlos O'Donell  <carlos@systemhalted.org>
2309
2310         [BZ #4455]
2311         * tst-align2.c (do_test): Add _STACK_GROWS_UP case.
2312         * tst-getpid1.c (do_test): Likewise.
2313
2314         [BZ #4456]
2315         * allocatestack.c (change_stack_perm): Add _STACK_GROWS_UP case.
2316         (allocate_stack): Likewise.
2317
2318 2007-05-07  Ulrich Drepper  <drepper@redhat.com>
2319
2320         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c
2321         (__lll_robust_lock_wait): Fix race caused by reloading of futex value.
2322         (__lll_robust_timedlock_wait): Likewise.
2323         Reported by Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>.
2324
2325 2007-05-06  Mike Frysinger  <vapier@gentoo.org>
2326
2327         [BZ #4465]
2328         * tst-cancel-wrappers.sh: Set C["fdatasync"] to 1.
2329         * tst-cancel4.c (tf_fdatasync): New test.
2330
2331 2007-04-27  Ulrich Drepper  <drepper@redhat.com>
2332
2333         [BZ #4392]
2334         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Treat error
2335         check mutexes like normal mutexes.
2336
2337         [BZ #4306]
2338         * sysdeps/unix/sysv/linux/timer_create.c (timer_create):
2339         Initialize the whole sigevent structure to appease valgrind.
2340
2341 2007-04-25  Ulrich Drepper  <drepper@redhat.com>
2342
2343         * sysdeps/x86_64/tls.h (tcbhead_t): Add vgetcpu_cache.
2344         * sysdeps/x86_64/tcb-offsets.sym: Add VGETCPU_CACHE_OFFSET.
2345
2346 2007-04-06  Ulrich Drepper  <drepper@redhat.com>
2347
2348         * tst-locale1.c: Avoid warnings.
2349         * tst-locale2.c: Likewise.
2350
2351 2007-03-19  Steven Munroe  <sjmunroe@us.ibm.com>
2352
2353         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
2354         (__lll_robust_trylock): Add MUTEX_HINT_ACQ to lwarx instruction.
2355
2356 2007-03-16  Jakub Jelinek  <jakub@redhat.com>
2357
2358         * sysdeps/pthread/bits/libc-lock.h: Use __extern_inline and
2359         __extern_always_inline where appropriate.
2360         * sysdeps/pthread/pthread.h: Likewise.
2361
2362 2007-03-13  Richard Henderson  <rth@redhat.com>
2363
2364         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (PSEUDO): Use two
2365         separate cfi regions for the two subsections.
2366
2367 2007-02-25  Ulrich Drepper  <drepper@redhat.com>
2368
2369         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Reset refcntr in
2370         new thread, don't just decrement it.
2371         Patch by Suzuki K P <suzuki@in.ibm.com>.
2372
2373 2007-02-21  Ulrich Drepper  <drepper@redhat.com>
2374
2375         * sysdeps/pthread/pthread-functions.h: Correct last patch, correct
2376         PTHFCT_CALL definition.
2377
2378 2007-02-18  Ulrich Drepper  <drepper@redhat.com>
2379
2380         * sysdeps/pthread/pthread-functions.h: If PTR_DEMANGLE is not
2381         available, don't use it.
2382
2383 2007-02-09  Jakub Jelinek  <jakub@redhat.com>
2384
2385         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
2386         (__lll_mutex_timedlock_wait): Use correct pointer when we don't
2387         call into the kernel to delay.
2388
2389 2007-01-18  Ulrich Drepper  <drepper@redhat.com>
2390
2391         * tst-initializers1.c: We want to test the initializers as seen
2392         outside of libc, so undefined _LIBC.
2393
2394         * pthread_join.c (cleanup): Avoid warning.
2395
2396 2007-01-17  Ulrich Drepper  <drepper@redhat.com>
2397
2398         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
2399         (__lll_timedwait_tid): Add unwind info.
2400
2401         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Don't just copy the
2402         function table, mangle the pointers.
2403         * sysdeps/pthread/pthread-functions.h: Define PTHFCT_CALL.
2404         * forward.c: Use PTHFCT_CALL and __libc_pthread_functions_init.
2405         * sysdeps/pthread/bits/libc-lock.h: When using __libc_pthread_functions
2406         demangle pointers before use.
2407         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Use PTHFCT_CALL to
2408         demangle pointer.
2409         * sysdeps/unix/sysv/linux/jmp-unwind.c: Likewise.
2410         * sysdeps/pthread/setxid.h: Likewise.
2411
2412 2007-01-12  Ulrich Drepper  <drepper@redhat.com>
2413
2414         * tst-rwlock7.c: Show some more information in case of correct
2415         behavior.
2416
2417 2007-01-11  Ulrich Drepper  <drepper@redhat.com>
2418
2419         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
2420         (lll_futex_timed_wait): Undo part of last change, don't negate
2421         return value.
2422
2423 2007-01-10  Ulrich Drepper  <drepper@redhat.com>
2424
2425         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Cleanups.  Define
2426         FUTEX_CMP_REQUEUE and lll_futex_requeue.
2427
2428 2006-12-28  David S. Miller  <davem@davemloft.net>
2429
2430         * shlib-versions: Fix sparc64 linux target specification.
2431
2432 2007-01-10  Jakub Jelinek  <jakub@redhat.com>
2433
2434         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c:
2435         Adjust include path for pthread_barrier_wait.c move.
2436
2437 2006-12-21  Jakub Jelinek  <jakub@redhat.com>
2438
2439         * sysdeps/unix/sysv/linux/pthread_kill.c (pthread_kill): Make sure
2440         tid isn't reread from pd->tid in between ESRCH test and the syscall.
2441
2442 2006-12-06  Jakub Jelinek  <jakub@redhat.com>
2443
2444         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO): Handle
2445         6 argument cancellable syscalls.
2446         (STM_6, LM_6, LR7_0, LR7_1, LR7_2, LR7_3, LR7_4, LR7_5, LR7_6): Define.
2447         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO): Handle
2448         6 argument cancellable syscalls.
2449         (STM_6, LM_6, LR7_0, LR7_1, LR7_2, LR7_3, LR7_4, LR7_5, LR7_6): Define.
2450
2451 2006-12-09  Ulrich Drepper  <drepper@redhat.com>
2452
2453         * sysdeps/unix/sysv/linux/rtld-lowlevel.h
2454         (__rtld_mrlock_initialize): Add missing closing parenthesis.
2455
2456 2006-10-30  Jakub Jelinek  <jakub@redhat.com>
2457
2458         * sysdeps/ia64/pthread_spin_unlock.c (pthread_spin_unlock): Use
2459         __sync_lock_release instead of __sync_lock_release_si.
2460
2461 2006-10-29  Jakub Jelinek  <jakub@redhat.com>
2462
2463         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (RTLD_SINGLE_THREAD_P):
2464         Define.
2465         (SINGLE_THREAD_P): Define to 1 if IS_IN_rtld.
2466         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Likewise.
2467         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
2468         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
2469         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
2470         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
2471         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
2472         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
2473         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
2474         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
2475         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
2476
2477 2006-10-27  Ulrich Drepper  <drepper@redhat.com>
2478
2479         * sysdeps/pthread/pthread_barrier_wait.c: Move to...
2480         * pthread_barrier_wait.c: ...here.
2481         * sysdeps/pthread/pthread_cond_broadcast.c: Move to...
2482         * pthread_cond_broadcast.c: ...here.
2483         * sysdeps/pthread/pthread_cond_signal.c: Move to...
2484         * pthread_cond_signal.c: ...here.
2485         * sysdeps/pthread/pthread_cond_timedwait.c: Move to...
2486         * pthread_cond_timedwait.c: ...here.
2487         * sysdeps/pthread/pthread_cond_wait.c: Move to...
2488         * pthread_cond_wait.c: ...here.
2489         * sysdeps/pthread/pthread_once.c: Move to...
2490         * pthread_once.c: ...here.
2491         * sysdeps/pthread/pthread_rwlock_rdlock.c: Move to...
2492         * pthread_rwlock_rdlock.c: ...here.
2493         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Move to...
2494         * pthread_rwlock_timedrdlock.c: ...here.
2495         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Move to...
2496         * pthread_rwlock_timedwrlock.c: ...here.
2497         * sysdeps/pthread/pthread_rwlock_unlock.c: Move to...
2498         * pthread_rwlock_unlock.c: ...here.
2499         * sysdeps/pthread/pthread_rwlock_wrlock.c: Move to...
2500         * pthread_rwlock_wrlock.c: ...here.
2501         * sysdeps/pthread/pthread_spin_destroy.c: Move to...
2502         * pthread_spin_destroy.c: ...here.
2503         * sysdeps/pthread/pthread_spin_init.c: Move to...
2504         * pthread_spin_init.c: ...here.
2505         * sysdeps/pthread/pthread_spin_unlock.c: Move to...
2506         * pthread_spin_unlock.c: ...here.
2507         * sysdeps/pthread/pthread_getcpuclockid.c: Move to...
2508         * pthread_getcpuclockid.c: ...here.
2509
2510         * init.c: USE_TLS support is now always enabled.
2511         * tst-tls5.h: Likewise.
2512         * sysdeps/alpha/tls.h: Likewise.
2513         * sysdeps/i386/tls.h: Likewise.
2514         * sysdeps/ia64/tls.h: Likewise.
2515         * sysdeps/powerpc/tls.h: Likewise.
2516         * sysdeps/s390/tls.h: Likewise.
2517         * sysdeps/sh/tls.h: Likewise.
2518         * sysdeps/sparc/tls.h: Likewise.
2519         * sysdeps/x86_64/tls.h: Likewise.
2520
2521 2006-10-27  Jakub Jelinek  <jakub@redhat.com>
2522
2523         * sysdeps/unix/sysv/linux/rtld-lowlevel.h (__rtld_mrlock_lock,
2524         __rtld_mrlock_change): Update oldval if atomic compare and exchange
2525         failed.
2526
2527         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (SINGLE_THREAD_P):
2528         Define to THREAD_SELF->header.multiple_threads.
2529         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (SINGLE_THREAD_P):
2530         Likewise.
2531         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (SINGLE_THREAD_P):
2532         Likewise.
2533         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
2534         (SINGLE_THREAD_P): Likewise.
2535         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
2536         (SINGLE_THREAD_P): Likewise.
2537         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
2538         (SINGLE_THREAD_P): Likewise.
2539         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
2540         (SINGLE_THREAD_P): Likewise.
2541         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (SINGLE_THREAD_P):
2542         Likewise.
2543         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
2544         (SINGLE_THREAD_P): Likewise.
2545         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
2546         (SINGLE_THREAD_P): Likewise.
2547         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (SINGLE_THREAD_P):
2548         Likewise.
2549
2550 2006-10-26  Jakub Jelinek  <jakub@redhat.com>
2551
2552         * pthread_attr_setstacksize.c (NEW_VERNUM): Define to GLIBC_2_3_3
2553         by default rather than 2_3_3.
2554
2555 2006-10-17  Jakub Jelinek  <jakub@redhat.com>
2556
2557         * sysdeps/unix/sysv/linux/rtld-lowlevel.h (__rtld_mrlock_lock,
2558         __rtld_mrlock_unlock, __rtld_mrlock_change, __rtld_mrlock_done): Use
2559         atomic_* instead of catomic_* macros.
2560
2561 2006-10-12  Ulrich Drepper  <drepper@redhat.com>
2562
2563         [BZ #3285]
2564         * sysdeps/unix/sysv/linux/bits/local_lim.h: Add SEM_VALUE_MAX.
2565         * sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: Likewise.
2566         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise.
2567         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise.
2568         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise.
2569         * sysdeps/unix/sysv/linux/i386/bits/semaphore.h: Remove SEM_VALUE_MAX.
2570         * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: Likewise.
2571         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
2572         * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: Likewise.
2573         * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h: Likewise.
2574         * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: Likewise.
2575         * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: Likewise.
2576         * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: Likewise.
2577
2578 2006-10-11  Ulrich Drepper  <drepper@redhat.com>
2579
2580         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Add support for
2581         cancelable syscalls with six parameters.
2582
2583         * sysdeps/unix/sysv/linux/rtld-lowlevel.h: Use catomic_*
2584         operations instead of atomic_*.
2585
2586 2006-10-09  Ulrich Drepper  <drepper@redhat.com>
2587
2588         * sysdeps/unix/sysv/linux/rtld-lowlevel.h: New file..
2589
2590 2006-10-07  Ulrich Drepper  <drepper@redhat.com>
2591
2592         * sysdeps/unix/sysv/linux/powerpc/bits/local_lim.h: New file.
2593         * sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstack.c: New file.
2594         * sysdeps/unix/sysv/linux/powerpc/pthread_attr_setstacksize.c:
2595         New file.
2596         * pthread_attr_setstack.c: Allow overwriting the version number of the
2597         new symbol.
2598         * pthread_attr_setstacksize.c: Likewise.
2599         (__old_pthread_attr_setstacksize): If STACKSIZE_ADJUST is defined use
2600         it.
2601         * sysdeps/unix/sysv/linux/powerpc/Versions (libpthread): Add
2602         pthread_attr_setstack and pthread_attr_setstacksize to GLIBC_2.6.
2603
2604 2006-09-24  Ulrich Drepper  <drepper@redhat.com>
2605
2606         [BZ #3251]
2607         * descr.h (ENQUEUE_MUTEX_BOTH): Add cast to avoid warning.
2608         Patch by Petr Baudis.
2609
2610 2006-09-18  Jakub Jelinek  <jakub@redhat.com>
2611
2612         * tst-kill4.c (do_test): Explicitly set tf thread's stack size.
2613
2614         * tst-cancel2.c (tf): Loop as long as something was written.
2615
2616 2006-09-12  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2617
2618         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: For PI
2619         mutexes wake all mutexes.
2620         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Don't increment
2621         WAKEUP_SEQ if this would increase the value beyond TOTAL_SEQ.
2622         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
2623
2624 2006-09-12  Ulrich Drepper  <drepper@redhat.com>
2625
2626         * tst-cond22.c (tf): Slight changes to the pthread_cond_wait use
2627         to guarantee the thread is always canceled.
2628
2629 2006-09-08  Jakub Jelinek  <jakub@redhat.com>
2630
2631         * tst-cond22.c: Include pthread.h instead of pthreadP.h.
2632         Include stdlib.h.
2633         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Only
2634         increase FUTEX if increasing WAKEUP_SEQ.  Fix comment typo.
2635         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
2636         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
2637         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
2638
2639 2006-09-08  Ulrich Drepper  <drepper@redhat.com>
2640
2641         [BZ #3123]
2642         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Don't
2643         increment WAKEUP_SEQ if this would increase the value beyond TOTAL_SEQ.
2644         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
2645         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
2646         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
2647         * Makefile (tests): Add tst-cond22.
2648         * tst-cond22.c: New file.
2649
2650 2006-09-05  Ulrich Drepper  <drepper@redhat.com>
2651
2652         [BZ #3124]
2653         * descr.h (struct pthread): Add parent_cancelhandling.
2654         * sysdeps/pthread/createthread.c (create_thread): Pass parent
2655         cancelhandling value to child.
2656         * pthread_create.c (start_thread): If parent thread was canceled
2657         reset the SIGCANCEL mask.
2658         * Makefile (tests): Add tst-cancel25.
2659         * tst-cancel25.c: New file.
2660
2661 2006-09-05  Jakub Jelinek  <jakub@redhat.com>
2662             Ulrich Drepper  <drepper@redhat.com>
2663
2664         * sysdeps/pthread/gai_misc.h (GAI_MISC_NOTIFY): Don't decrement
2665         counterp if it is already zero.
2666         * sysdeps/pthread/aio_misc.h (AIO_MISC_NOTIFY): Likewise..
2667
2668 2006-03-04  Jakub Jelinek  <jakub@redhat.com>
2669             Roland McGrath  <roland@redhat.com>
2670
2671         * sysdeps/unix/sysv/linux/i386/lowlevellock.h
2672         (LLL_STUB_UNWIND_INFO_START, LLL_STUB_UNWIND_INFO_END,
2673         LLL_STUB_UNWIND_INFO_3, LLL_STUB_UNWIND_INFO_4): Define.
2674         (lll_mutex_lock, lll_robust_mutex_lock, lll_mutex_cond_lock,
2675         lll_robust_mutex_cond_lock, lll_mutex_timedlock,
2676         lll_robust_mutex_timedlock, lll_mutex_unlock,
2677         lll_robust_mutex_unlock, lll_lock, lll_unlock): Use them.
2678         Add _L_*_ symbols around the subsection.
2679         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Add unwind info.
2680         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: Likewise.
2681
2682 2006-03-03  Jakub Jelinek  <jakub@redhat.com>
2683             Roland McGrath  <roland@redhat.com>
2684
2685         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
2686         (LLL_STUB_UNWIND_INFO_START, LLL_STUB_UNWIND_INFO_END,
2687         LLL_STUB_UNWIND_INFO_5, LLL_STUB_UNWIND_INFO_6): Define.
2688         (lll_mutex_lock, lll_robust_mutex_lock, lll_mutex_cond_lock,
2689         lll_robust_mutex_cond_lock, lll_mutex_timedlock,
2690         lll_robust_mutex_timedlock, lll_mutex_unlock,
2691         lll_robust_mutex_unlock, lll_lock, lll_unlock): Use them.
2692         Add _L_*_ symbols around the subsection.
2693         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Add unwind info.
2694         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: Likewise.
2695
2696 2006-08-31  Ulrich Drepper  <drepper@redhat.com>
2697
2698         * pthread_rwlock_trywrlock.c (__pthread_rwlock_trywrlock): Undo last
2699         change because it can disturb too much existing code.  If real hard
2700         reader preference is needed we'll introduce another type.
2701         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
2702         (pthread_rwlock_timedwrlock): Likewise.
2703         * sysdeps/pthread/pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock):
2704         Likewise.
2705
2706 2006-08-30  Ulrich Drepper  <drepper@redhat.com>
2707
2708         * pthread_rwlock_trywrlock.c (__pthread_rwlock_trywrlock): Respect
2709         reader preference.
2710         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
2711         (pthread_rwlock_timedwrlock): Likewise.
2712         * sysdeps/pthread/pthread_rwlock_wrlock.c (__pthread_rwlock_wrlock):
2713         Likewise.
2714
2715 2006-08-25  Jakub Jelinek  <jakub@redhat.com>
2716
2717         * sysdeps/unix/sysv/linux/libc_pthread_init.c (freeres_libpthread):
2718         Only define ifdef SHARED.
2719
2720 2006-08-23  Ulrich Drepper  <drepper@redhat.com>
2721
2722         * allocatestack.c (queue_stack): Move freeing of surplus stacks to...
2723         (free_stacks): ...here.
2724         (__free_stack_cache): New function.
2725         * pthreadP.h: Declare __free_stack_cache.
2726         * sysdeps/pthread/pthread-functions.h (pthread_functions): Add
2727         ptr_freeres.
2728         * init.c (pthread_functions): Initialize ptr_freeres.
2729         * sysdeps/unix/sysv/linux/libc_pthread_init.c (freeres_libptread):
2730         New freeres function.
2731
2732 2006-07-30  Joseph S. Myers  <joseph@codesourcery.com>
2733
2734         [BZ #3018]
2735         * Makefile (extra-objs): Add modules to extra-test-objs instead.
2736
2737 2006-08-20  Ulrich Drepper  <drepper@redhat.com>
2738
2739         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
2740         _XOPEN_REALTIME_THREADS.
2741
2742 2006-08-15  Jakub Jelinek  <jakub@redhat.com>
2743
2744         * sysdeps/unix/sysv/linux/clock_settime.c (INTERNAL_VSYSCALL): Use
2745         HAVE_CLOCK_GETRES_VSYSCALL as guard macro rather than
2746         HAVE_CLOCK_GETTIME_VSYSCALL.
2747         (maybe_syscall_settime_cpu): Use plain INTERNAL_VSYSCALL here.
2748
2749 2006-08-14  Jakub Jelinek  <jakub@redhat.com>
2750
2751         * sysdeps/unix/sysv/linux/bits/posix_opt.h
2752         (_POSIX_THREAD_PRIO_PROTECT): Define to 200112L.
2753         * descr.h (struct priority_protection_data): New type.
2754         (struct pthread): Add tpp field.
2755         * pthreadP.h (PTHREAD_MUTEX_PP_NORMAL_NP,
2756         PTHREAD_MUTEX_PP_RECURSIVE_NP, PTHREAD_MUTEX_PP_ERRORCHECK_NP,
2757         PTHREAD_MUTEX_PP_ADAPTIVE_NP): New enum values.
2758         * pthread_mutex_init.c (__pthread_mutex_init): Handle non-robust
2759         TPP mutexes.
2760         * pthread_mutex_lock.c (__pthread_mutex_lock): Handle TPP mutexes.
2761         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Likewise.
2762         * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Likewise.
2763         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Likewise.
2764         * tpp.c: New file.
2765         * pthread_setschedparam.c (__pthread_setschedparam): Handle priority
2766         boosted by TPP.
2767         * pthread_setschedprio.c (pthread_setschedprio): Likewise.
2768         * pthread_mutexattr_getprioceiling.c
2769         (pthread_mutexattr_getprioceiling): If ceiling is 0, ensure it is
2770         in the SCHED_FIFO priority range.
2771         * pthread_mutexattr_setprioceiling.c
2772         (pthread_mutexattr_setprioceiling): Fix prioceiling validation.
2773         * pthread_mutex_getprioceiling.c (pthread_mutex_getprioceiling): Fail
2774         if mutex is not TPP.  Ceiling is now in __data.__lock.
2775         * pthread_mutex_setprioceiling.c: Include stdbool.h.
2776         (pthread_mutex_setprioceiling): Fix prioceiling validation.  Ceiling
2777         is now in __data.__lock.  Add locking.
2778         * pthread_create.c (__free_tcb): Free pd->tpp structure.
2779         * Makefile (libpthread-routines): Add tpp.
2780         (xtests): Add tst-mutexpp1, tst-mutexpp6 and tst-mutexpp10.
2781         * tst-tpp.h: New file.
2782         * tst-mutexpp1.c: New file.
2783         * tst-mutexpp6.c: New file.
2784         * tst-mutexpp10.c: New file.
2785         * tst-mutex1.c (TEST_FUNCTION): Don't redefine if already defined.
2786         * tst-mutex6.c (TEST_FUNCTION): Likewise.
2787
2788 2006-08-12  Ulrich Drepper  <drepper@redhat.com>
2789
2790         [BZ #2843]
2791         * pthread_join.c (pthread_join): Account for self being canceled
2792         when checking for deadlocks.
2793         * tst-join5.c: Cleanups.  Allow to be used in tst-join6.
2794         (tf1): Don't print anything after pthread_join returns, this would be
2795         another cancellation point.
2796         (tf2): Likewise.
2797         * tst-join6.c: New file.
2798         * Makefile (tests): Add tst-join6.
2799
2800 2006-08-03  Ulrich Drepper  <drepper@redhat.com>
2801
2802         [BZ #2892]
2803         * pthread_setspecific.c (__pthread_setspecific): Check
2804         out-of-range index before checking for unused key.
2805
2806         * sysdeps/pthread/gai_misc.h: New file.
2807
2808 2006-08-01  Ulrich Drepper  <drepper@redhat.com>
2809
2810         * sysdeps/unix/sysv/linux/i386/smp.h: New file.  Old Linux-specific
2811         file.  Don't use sysctl.
2812         * sysdeps/unix/sysv/linux/smp.h: Always assume SMP.  Archs can
2813         overwrite the file if this is likely not true.
2814
2815 2006-07-31  Daniel Jacobowitz  <dan@codesourcery.com>
2816
2817         * allocatestack.c (__reclaim_stacks): Reset the PID on cached stacks.
2818         * Makefile (tests): Add tst-getpid3.
2819         * tst-getpid3.c: New file.
2820
2821 2006-07-30  Roland McGrath  <roland@redhat.com>
2822
2823         * Makefile (libpthread-routines): Add ptw-sigsuspend.
2824
2825         * sysdeps/unix/sysv/linux/i386/not-cancel.h
2826         (pause_not_cancel): New macro.
2827         (nanosleep_not_cancel): New macro.
2828         (sigsuspend_not_cancel): New macro.
2829         * pthread_mutex_timedlock.c (pthread_mutex_timedlock): Use
2830         nanosleep_not_cancel macro from <not-cancel.h>.
2831         * pthread_mutex_lock.c (__pthread_mutex_lock): Use pause_not_cancel
2832         macro from <not-cancel.h>.
2833
2834 2006-07-28  Ulrich Drepper  <drepper@redhat.com>
2835             Jakub Jelinek  <jakub@redhat.com>
2836
2837         * descr.h: Change ENQUEUE_MUTEX and DEQUEUE_MUTEX for bit 0
2838         notification of PI mutex.  Add ENQUEUE_MUTEX_PI.
2839         * pthreadP.h: Define PTHREAD_MUTEX_PI_* macros for PI mutex types.
2840         * pthread_mutex_setprioceilining.c: Adjust for mutex type name change.
2841         * pthread_mutex_init.c: Add support for priority inheritance mutex.
2842         * pthread_mutex_lock.c: Likewise.
2843         * pthread_mutex_timedlock.c: Likewise.
2844         * pthread_mutex_trylock.c: Likewise.
2845         * pthread_mutex_unlock.c: Likewise.
2846         * sysdeps/pthread/pthread_cond_broadcast.c: For PI mutexes wake
2847         all mutexes.
2848         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.c: Likewise.
2849         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.c: Likewise.
2850         * sysdeps/unix/sysv/linux/pthread-pi-defines.sym: New file.
2851         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-header): Add
2852         pthread-pi-defines.sym.
2853         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define FUTEX_LOCK_PI,
2854         FUTEX_UNLOCK_PI, and FUTEX_TRYLOCK_PI.
2855         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
2856         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise.
2857         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
2858         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
2859         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
2860         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
2861         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
2862         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
2863         _POSIX_THREAD_PRIO_INHERIT to 200112L.
2864         * tst-mutex1.c: Adjust to allow use in PI mutex test.
2865         * tst-mutex2.c: Likewise.
2866         * tst-mutex3.c: Likewise.
2867         * tst-mutex4.c: Likewise.
2868         * tst-mutex5.c: Likewise.
2869         * tst-mutex6.c: Likewise.
2870         * tst-mutex7.c: Likewise.
2871         * tst-mutex7a.c: Likewise.
2872         * tst-mutex8.c: Likewise.
2873         * tst-mutex9.c: Likewise.
2874         * tst-robust1.c: Likewise.
2875         * tst-robust7.c: Likewise.
2876         * tst-robust8.c: Likewise.
2877         * tst-mutexpi1.c: New file.
2878         * tst-mutexpi2.c: New file.
2879         * tst-mutexpi3.c: New file.
2880         * tst-mutexpi4.c: New file.
2881         * tst-mutexpi5.c: New file.
2882         * tst-mutexpi6.c: New file.
2883         * tst-mutexpi7.c: New file.
2884         * tst-mutexpi7a.c: New file.
2885         * tst-mutexpi8.c: New file.
2886         * tst-mutexpi9.c: New file.
2887         * tst-robust1.c: New file.
2888         * tst-robust2.c: New file.
2889         * tst-robust3.c: New file.
2890         * tst-robust4.c: New file.
2891         * tst-robust5.c: New file.
2892         * tst-robust6.c: New file.
2893         * tst-robust7.c: New file.
2894         * tst-robust8.c: New file.
2895         * Makefile (tests): Add the new tests.
2896
2897         * pthread_create.c (start_thread): Add some casts to avoid warnings.
2898         * pthread_mutex_destroy.c: Remove unneeded label.
2899
2900 2006-07-01  Ulrich Drepper  <drepper@redhat.com>
2901
2902         * pthread_mutex_init.c (__pthread_mutex_init): Move some
2903         computations to compile time.
2904
2905 2006-06-04  Ulrich Drepper  <drepper@redhat.com>
2906
2907         * sysdeps/pthread/pthread.h: Add pthread_equal inline version.
2908
2909 2006-05-15  Ulrich Drepper  <drepper@redhat.com>
2910
2911         * sysdeps/unix/sysv/linux/fork.h: Mark __fork_handlers as hidden.
2912
2913 2006-05-11  Ulrich Drepper  <drepper@redhat.com>
2914
2915         * pthread_key_create.c (__pthread_key_create): Do away with
2916         __pthread_keys_lock.
2917
2918         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
2919         (__kernel_cpumask_size): Mark as hidden.
2920         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c: Likewise.
2921
2922         * sem_open.c (__sem_mappings_lock): Mark as hidden.
2923         * semaphoreP.h (__sem_mappings_lock): Likewise.
2924
2925 2006-05-10  Ulrich Drepper  <drepper@redhat.com>
2926
2927         * pthread_atfork.c: Mark __dso_handle as hidden.
2928
2929 2006-05-09  Ulrich Drepper  <drepper@redhat.com>
2930
2931         [BZ #2644]
2932         * sysdeps/pthread/unwind-forcedunwind.c: Different solution for
2933         the reload problem.  Change the one path in pthread_cancel_init
2934         which causes the problem.  Force gcc to reload.  Simplify callers.
2935         * sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c
2936         (_Unwind_GetBSP): Undo last patch.
2937
2938 2006-05-07  Ulrich Drepper  <drepper@redhat.com>
2939
2940         * sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c: Make sure the
2941         function pointer is reloaded after pthread_cancel_init calls.
2942
2943         [BZ #2644]
2944         * sysdeps/pthread/unwind-forcedunwind.c: Make sure functions
2945         pointers are reloaded after pthread_cancel_init calls.
2946
2947 2006-05-01  Ulrich Drepper  <drepper@redhat.com>
2948
2949         * sysdeps/pthread/allocalim.h (__libc_use_alloca): Mark with
2950         __always_inline.
2951
2952 2006-04-27  Ulrich Drepper  <drepper@redhat.com>
2953
2954         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
2955         Allocate new object which is passed to timer_sigev_thread so that
2956         the timer can be deleted before the new thread is scheduled.
2957
2958 2006-04-26  Roland McGrath  <roland@redhat.com>
2959
2960         * sysdeps/x86_64/tls.h: Include <asm/prctl.h> inside [! __ASSEMBLER__].
2961
2962 2006-04-08  Ulrich Drepper  <drepper@redhat.com>
2963
2964         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove branch predicion
2965         suffix for conditional jumps.
2966         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
2967         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
2968         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
2969         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Likewise.
2970         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
2971         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
2972
2973         * init.c (sigcancel_handler): Compare with correct PID even if the
2974         thread is in the middle of a fork call.
2975         (sighandler_setxid): Likewise.
2976         Reported by Suzuki K P <suzuki@in.ibm.com> .
2977
2978 2006-04-07  Jakub Jelinek  <jakub@redhat.com>
2979
2980         * pthreadP.h (FUTEX_TID_MASK): Sync with kernel.
2981
2982 2006-04-06  Ulrich Drepper  <drepper@redhat.com>
2983
2984         * pthread_getattr_np.c (pthread_getattr_np): Close fp if getrlimit
2985         fails [Coverity CID 105].
2986
2987 2006-04-05  Ulrich Drepper  <drepper@redhat.com>
2988
2989         * sysdeps/pthread/pthread.h: Add nonnull attributes.
2990
2991 2006-04-03  Steven Munroe  <sjmunroe@us.ibm.com>
2992
2993         [BZ #2505]
2994         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h [_ARCH_PWR4]:
2995         Define __lll_rel_instr using lwsync.
2996
2997 2006-03-27  Ulrich Drepper  <drepper@redhat.com>
2998
2999         * allocatestack.c (allocate_stack): Always initialize robust_head.
3000         * descr.h: Define struct robust_list_head.
3001         (struct pthread): Use robust_list_head in robust mutex list definition.
3002         Adjust ENQUEUE_MUTEX and DEQUEUE_MUTEX.
3003         * init.c [!__ASSUME_SET_ROBUST_LIST] (__set_robust_list_avail): Define.
3004         (__pthread_initialize_minimal_internal): Register robust_list with
3005         the kernel.
3006         * pthreadP.h: Remove PRIVATE_ from PTHREAD_MUTEX_ROBUST_* names.
3007         Declare __set_robust_list_avail.
3008         * pthread_create.c (start_thread): Register robust_list of new thread.
3009         [!__ASSUME_SET_ROBUST_LIST]: If robust_list is not empty wake up
3010         waiters.
3011         * pthread_mutex_destroy.c: For robust mutexes don't look at the
3012         number of users, it's unreliable.
3013         * pthread_mutex_init.c: Allow use of pshared robust mutexes if
3014         set_robust_list syscall is available.
3015         * pthread_mutex_consistent.c: Adjust for PTHREAD_MUTEX_ROBUST_* rename.
3016         * pthread_mutex_lock.c: Simplify robust mutex code a bit.
3017         Set robust_head.list_op_pending before trying to lock a robust mutex.
3018         * pthread_mutex_timedlock.c: Likewise.
3019         * pthread_mutex_trylock.c: Likewise.
3020         * pthread_mutex_unlock.c: Likewise for unlocking.
3021         * Makefile (tests): Add tst-robust8.
3022         * tst-robust8.c: New file.
3023
3024 2006-03-08  Andreas Schwab  <schwab@suse.de>
3025
3026         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h
3027         (DL_SYSINFO_IMPLEMENTATION): Add missing newline.
3028
3029 2006-03-05  Roland McGrath  <roland@redhat.com>
3030
3031         * configure (libc_add_on): Disable add-on when $add_ons_automatic = yes
3032         and $config_os doesn't match *linux*.
3033
3034 2006-03-05  David S. Miller  <davem@sunset.davemloft.net>
3035
3036         * sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S:
3037         Use __syscall_error.
3038         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
3039         * sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: Likewise.
3040         * sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S: Likewise.
3041         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
3042         * sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: Likewise.
3043         * sysdeps/unix/sysv/linux/sparc/Makefile: New file.
3044
3045 2006-03-02  Ulrich Drepper  <drepper@redhat.com>
3046
3047         * sysdeps/unix/sysv/linux/aio_misc.h: Various cleanups.
3048
3049 2006-03-01  Ulrich Drepper  <drepper@redhat.com>
3050
3051         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
3052         (__lll_robust_lock_wait): Also set FUTEX_WAITERS bit if we got the
3053         mutex.
3054         (__lll_robust_timedlock_wait): Likewise.
3055         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S
3056         (__lll_robust_lock_wait): Likewise.
3057         (__lll_robust_timedlock_wait): Likewise.
3058         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c
3059         (__lll_robust_lock_wait): Likewise.
3060         (__lll_robust_timedlock_wait): Likewise.
3061
3062 2006-03-01  Jakub Jelinek  <jakub@redhat.com>
3063
3064         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (lll_robust_mutex_dead,
3065         lll_robust_mutex_trylock, lll_robust_mutex_lock,
3066         lll_robust_mutex_cond_lock, lll_robust_mutex_timedlock,
3067         lll_robust_mutex_unlock): Define.
3068         (__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes.
3069
3070 2006-02-28  H.J. Lu  <hongjiu.lu@intel.com>
3071
3072         * sysdeps/unix/sysv/linux/ia64/clone2.S: Include <clone2.S>
3073         instead of <clone.S>.
3074
3075 2006-02-27  Jakub Jelinek  <jakub@redhat.com>
3076
3077         * Makefile (libpthread-routines): Add
3078         pthread_mutexattr_[sg]etprotocol, pthread_mutexattr_[sg]etprioceiling
3079         and pthread_mutex_[sg]etprioceiling.
3080         * Versions (GLIBC_2.4): Export pthread_mutexattr_getprotocol,
3081         pthread_mutexattr_setprotocol, pthread_mutexattr_getprioceiling,
3082         pthread_mutexattr_setprioceiling, pthread_mutex_getprioceiling and
3083         pthread_mutex_setprioceiling.
3084         * sysdeps/pthread/pthread.h (PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT,
3085         PTHREAD_PRIO_PROTECT): New enum values.
3086         (pthread_mutexattr_getprotocol, pthread_mutexattr_setprotocol,
3087         pthread_mutexattr_getprioceiling, pthread_mutexattr_setprioceiling,
3088         pthread_mutex_getprioceiling, pthread_mutex_setprioceiling): New
3089         prototypes.
3090         * pthreadP.h (PTHREAD_MUTEX_PRIO_INHERIT_PRIVATE_NP,
3091         PTHREAD_MUTEX_PRIO_PROTECT_PRIVATE_NP): New enum values.
3092         (PTHREAD_MUTEX_PRIO_CEILING_SHIFT, PTHREAD_MUTEX_PRIO_CEILING_MASK):
3093         Define.
3094         (PTHREAD_MUTEXATTR_PROTOCOL_SHIFT, PTHREAD_MUTEXATTR_PROTOCOL_MASK,
3095         PTHREAD_MUTEXATTR_PRIO_CEILING_SHIFT,
3096         PTHREAD_MUTEXATTR_PRIO_CEILING_MASK): Define.
3097         (PTHREAD_MUTEXATTR_FLAG_BITS): Or in PTHREAD_MUTEXATTR_PROTOCOL_MASK
3098         and PTHREAD_MUTEXATTR_PRIO_CEILING_MASK.
3099         * pthread_mutex_init.c (__pthread_mutex_init): For the time being
3100         return ENOTSUP for PTHREAD_PRIO_INHERIT or PTHREAD_PRIO_PROTECT
3101         protocol mutexes.
3102         * pthread_mutex_getprioceiling.c: New file.
3103         * pthread_mutex_setprioceiling.c: New file.
3104         * pthread_mutexattr_getprioceiling.c: New file.
3105         * pthread_mutexattr_setprioceiling.c: New file.
3106         * pthread_mutexattr_getprotocol.c: New file.
3107         * pthread_mutexattr_setprotocol.c: New file.
3108
3109 2006-02-27  Daniel Jacobowitz  <dan@codesourcery.com>
3110
3111         * sysdeps/unix/sysv/linux/aio_misc.h: Include <limits.h>.
3112
3113 2006-02-27  Roland McGrath  <roland@redhat.com>
3114
3115         * sysdeps/pthread/Subdirs: List nptl here too.
3116         * configure (libc_add_on_canonical): New variable.
3117
3118         * sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h: Use #include_next.
3119
3120         * sysdeps/unix/sysv/linux/sleep.c: Use #include_next after #include of
3121         self to get main source tree's file.
3122         * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
3123         * sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
3124         * sysdeps/unix/sysv/linux/i386/vfork.S: Likewise.
3125         * sysdeps/unix/sysv/linux/ia64/clone2.S: Likewise.
3126         * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Likewise.
3127         * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Likewise.
3128         * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Likewise.
3129         * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise.
3130         * sysdeps/unix/sysv/linux/sh/clone.S: Likewise.
3131         * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: Likewise.
3132         * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise.
3133         * sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
3134         * sysdeps/unix/sysv/linux/x86_64/vfork.S: Likewise.
3135
3136         * Makefile: Use $(sysdirs) in vpath directive.
3137
3138         * sysdeps/pthread/Makefile (CFLAGS-libc-start.c): Variable removed.
3139         (CPPFLAGS-timer_routines.c): Likewise.
3140
3141         * Makeconfig (includes): Variable removed.
3142
3143 2006-02-26  Roland McGrath  <roland@redhat.com>
3144
3145         * sysdeps/generic/pt-raise.c: Moved to ...
3146         * pt-raise.c: ... here.
3147         * sysdeps/generic/lowlevellock.h: Moved to ...
3148         * lowlevellock.h: ... here.
3149
3150 2006-02-23  Roland McGrath  <roland@redhat.com>
3151
3152         * descr.h (struct pthread): Add final member `end_padding'.
3153         (PTHREAD_STRUCT_END_PADDING): Use it.
3154
3155 2006-02-20  Roland McGrath  <roland@redhat.com>
3156
3157         * sysdeps/mips: Directory removed, saved in ports repository.
3158         * sysdeps/unix/sysv/linux/mips: Likewise.
3159
3160 2006-02-18  Ulrich Drepper  <drepper@redhat.com>
3161
3162         * tst-robust1.c: Add second mutex to check that the mutex list is
3163         handled correctly.
3164
3165 2006-02-17  Jakub Jelinek  <jakub@redhat.com>
3166
3167         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_robust_mutex_dead,
3168         lll_robust_mutex_trylock, lll_robust_mutex_lock,
3169         lll_robust_mutex_cond_lock, lll_robust_mutex_timedlock,
3170         lll_robust_mutex_unlock): New macros.
3171         (__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes.
3172         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
3173         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
3174         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
3175         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c: New file.
3176
3177 2006-02-17  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3178
3179         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Add lll_robust_mutex_*
3180         definitions.
3181         * sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S: New file.
3182
3183 2006-02-17  Ulrich Drepper  <drepper@redhat.com>
3184
3185         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
3186         (lll_robust_mutex_unlock): Avoid unnecessary wakeups.
3187         * sysdeps/unix/sysv/linux/i386/lowlevellock.h
3188         (lll_robust_mutex_unlock): Likewise.
3189
3190 2006-02-13  Jakub Jelinek  <jakub@redhat.com>
3191
3192         * descr.h [!__PTHREAD_MUTEX_HAVE_PREV] (DEQUEUE_MUTEX):
3193         Set robust_list.__next rather than robust_list.
3194         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
3195         (__pthread_list_t): New typedef.
3196         (pthread_mutex_t): Replace __next and __prev fields with __list.
3197         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h
3198         (__pthread_list_t): New typedef.
3199         (pthread_mutex_t): Replace __next and __prev fields with __list.
3200         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
3201         (__pthread_list_t, __pthread_slist_t): New typedefs.
3202         (pthread_mutex_t): Replace __next and __prev fields with __list.
3203         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h
3204         (__pthread_list_t, __pthread_slist_t): New typedefs.
3205         (pthread_mutex_t): Replace __next and __prev fields with __list.
3206         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
3207         (__pthread_list_t, __pthread_slist_t): New typedefs.
3208         (pthread_mutex_t): Replace __next and __prev fields with __list.
3209         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h
3210         (__pthread_slist_t): New typedef.
3211         (pthread_mutex_t): Replace __next field with __list.
3212
3213 2006-02-15  Ulrich Drepper  <drepper@redhat.com>
3214
3215         * pthreadP.h: Define PTHREAD_MUTEX_INCONSISTENT instead of
3216         PTHREAD_MUTEX_OWNERDEAD.
3217         (PTHREAD_MUTEX_ROBUST_PRIVATE_NP): Define as 16, not 256.
3218         Define FUTEX_WAITERS, FUTEX_OWNER_DIED, FUTEX_TID_MASK.
3219         * Makefile (libpthread-routines): Add lowlevelrobustlock.
3220         * pthread_create.c (start_thread): Very much simplify robust_list loop.
3221         * pthread_mutex_consistent.c: Inconsistent mutex have __owner now set
3222         to PTHREAD_MUTEX_INCONSISTENT.
3223         * pthread_mutex_destroy.c: Allow destroying of inconsistent mutexes.
3224         * pthread_mutex_lock.c: Reimplement robust mutex handling.
3225         * pthread_mutex_trylock.c: Likewise.
3226         * pthread_mutex_timedlock.c: Likewise.
3227         * pthread_mutex_unlock.c: Likewise.
3228         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise.
3229         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
3230         lowlevelrobustlock.sym.
3231         * sysdeps/unix/sysv/linux/lowlevelrobustlock.sym: New file.
3232         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Add lll_robust_mutex_*
3233         definitions.
3234         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
3235         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: New file.
3236         * sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S: New file.
3237         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S: New file.
3238         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: New file.
3239
3240 2006-02-12  Ulrich Drepper  <drepper@redhat.com>
3241
3242         * allocatestack.c (allocate_stack): Initialize robust_list.
3243         * init.c (__pthread_initialize_minimal_internal): Likewise.
3244         * descr.h (struct xid_command): Pretty printing.
3245         (struct pthread): Use __pthread_list_t or __pthread_slist_t for
3246         robust_list.  Adjust macros.
3247         * pthread_create.c (start_thread): Adjust robust_list handling.
3248         * phtread_mutex_unlock.c: Don't allow unlocking from any thread
3249         but the owner for all robust mutex types.
3250         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Define
3251         __pthread_list_t and __pthread_slist_t.  Use them in pthread_mutex_t.
3252         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3253         * sysdeps/pthread/pthread.h: Adjust mutex initializers.
3254
3255         * sysdeps/unix/sysv/linux/i386/not-cancel.h: Define openat_not_cancel,
3256         openat_not_cancel_3, openat64_not_cancel, and openat64_not_cancel_3.
3257
3258 2006-02-08  Jakub Jelinek  <jakub@redhat.com>
3259
3260         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait,
3261         lll_futex_timedwait, lll_wait_tid): Add "memory" clobber.
3262
3263 2006-01-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3264
3265         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_futex_wait):
3266         Return status.
3267         (lll_futex_timed_wait): Define.
3268
3269 2006-01-19  Ulrich Drepper  <drepper@redhat.com>
3270
3271         * tst-cancel4.c: Test ppoll.
3272
3273 2006-01-18  Andreas Jaeger  <aj@suse.de>
3274
3275         [BZ #2167]
3276         * sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h
3277         (pthread_mutex_t): Follow changes for other archs.  Based on patch
3278         by Jim Gifford <patches@jg555.com>.
3279
3280 2006-01-13  Richard Henderson  <rth@redhat.com>
3281
3282         * sysdeps/alpha/tls.h (tcbhead_t): Rename member to __private.
3283
3284 2006-01-10  Roland McGrath  <roland@redhat.com>
3285
3286         * sysdeps/alpha/jmpbuf-unwind.h: File moved to main source tree.
3287         * sysdeps/i386/jmpbuf-unwind.h: Likewise.
3288         * sysdeps/mips/jmpbuf-unwind.h: Likewise.
3289         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
3290         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
3291         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
3292         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
3293         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Likewise.
3294         * sysdeps/x86_64/jmpbuf-unwind.h: Likewise.
3295         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
3296
3297 2006-01-09  Roland McGrath  <roland@redhat.com>
3298
3299         * tst-initializers1-c89.c: New file.
3300         * tst-initializers1-c99.c: New file.
3301         * tst-initializers1-gnu89.c: New file.
3302         * tst-initializers1-gnu99.c: New file.
3303         * Makefile (tests): Add them.
3304         (CFLAGS-tst-initializers1-c89.c): New variable.
3305         (CFLAGS-tst-initializers1-c99.c): New variable.
3306         (CFLAGS-tst-initializers1-gnu89.c): New variable.
3307         (CFLAGS-tst-initializers1-gnu99.c): New variable.
3308
3309         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
3310         Use __extension__ on anonymous union definition.
3311         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3312         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
3313         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3314         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3315         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
3316
3317 2006-01-08  Jakub Jelinek  <jakub@redhat.com>
3318
3319         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_mutex_t):
3320         Don't give the union a name because it changes the mangled name.
3321         Instead name the struct for __data.
3322         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_mutex_t):
3323         Likewise.
3324         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_mutex_t):
3325         Likewise.
3326
3327 2006-01-09  Jakub Jelinek  <jakub@redhat.com>
3328
3329         * sysdeps/sparc/sparc64/jmpbuf-unwind.h (_JMPBUF_UNWINDS_ADJ): Add
3330         stack bias to mc_ftp field.
3331
3332 2006-01-07  Ulrich Drepper  <drepper@redhat.com>
3333
3334         * sysdeps/pthread/aio_misc.h (AIO_MISC_WAIT): Work around gcc
3335         being too clever and reloading the futex value where it shouldn't.
3336
3337 2006-01-06  Ulrich Drepper  <drepper@redhat.com>
3338
3339         * descr.h [!__PTHREAD_MUTEX_HAVE_PREV] (DEQUEUE_MUTEX): Use
3340         correct type.
3341
3342 2006-01-06  Jakub Jelinek  <jakub@redhat.com>
3343
3344         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h (PSEUDO):
3345         Add cfi directives.
3346
3347 2006-01-06  Ulrich Drepper  <drepper@redhat.com>
3348
3349         * sysdeps/ia64/tls.h (tcbhead_t): Rename private member to __private.
3350         * sysdeps/ia64/tcb-offsets.sym: Adjust for private->__private
3351         rename in tcbhead_t.
3352
3353         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
3354         Don't give the union a name because it changes the mangled name.
3355         Instead name the struct for __data.
3356         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
3357         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3358         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3359         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3360         * pthread_create.c (start_thread): Adjust robust mutex free loop.
3361         * descr.h (ENQUEUE_MUTEX, DEQUEUE_MUTEX): Adjust.
3362
3363 2006-01-05  Ulrich Drepper  <drepper@redhat.com>
3364
3365         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
3366         Return status.
3367         (lll_futex_timed_wait): Define.
3368         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
3369         * sysdeps/pthread/aio_misc.h: New file.
3370
3371 2006-01-03  Joseph S. Myers  <joseph@codesourcery.com>
3372
3373         * Makefile ($(objpfx)$(multidir)): Use mkdir -p.
3374
3375 2006-01-03  Steven Munroe  <sjmunroe@us.ibm.com>
3376
3377         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
3378         (PSEUDO): Remove redundant cfi_startproc and cfi_endproc directives.
3379         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
3380
3381 2006-01-04  Ulrich Drepper  <drepper@redhat.com>
3382
3383         * tst-cancel24.cc: Use C headers instead of C++ headers.
3384
3385 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
3386
3387         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Remove #error for
3388         sparc-linux configured glibc.
3389         (lll_futex_wake_unlock): Define to 1 for sparc-linux configured glibc.
3390         (__lll_mutex_trylock, __lll_mutex_cond_trylock, __lll_mutex_lock,
3391         __lll_mutex_cond_lock, __lll_mutex_timedlock): Use
3392         atomic_compare_and_exchange_val_24_acq instead of
3393         atomic_compare_and_exchange_val_acq.
3394         (lll_mutex_unlock, lll_mutex_unlock_force): Use atomic_exchange_24_rel
3395         instead of atomic_exchange_rel.
3396         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c: New file.
3397         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_init.c: New
3398         file.
3399         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c: New
3400         file.
3401         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c: New file.
3402         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c: New file.
3403         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c: New file.
3404         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c: New file.
3405         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c: New file.
3406         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_init.c:
3407         New file.
3408         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c:
3409         New file.
3410         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c: New file.
3411         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c: New file.
3412         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c: New
3413         file.
3414         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_trywait.c: New
3415         file.
3416         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c: New file.
3417
3418 2006-01-03  Ulrich Drepper  <drepper@redhat.com>
3419
3420         * sysdeps/pthread/pthread.h [__WORDSIZE==64]: Don't use cast in
3421         mutex initializers.
3422
3423 2006-01-02  Jakub Jelinek  <jakub@redhat.com>
3424
3425         * sysdeps/sparc/tls.h (tcbhead_t): Add pointer_guard field.
3426         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
3427         THREAD_COPY_POINTER_GUARD): Define.
3428         * sysdeps/sparc/tcb-offsets.sym (POINTER_GUARD): Define.
3429         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Revert 2005-12-27 changes.
3430
3431 2006-01-01  Ulrich Drepper  <drepper@redhat.com>
3432
3433         * version.c: Update copyright year.
3434
3435 2005-12-29  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3436
3437         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Remove explicit
3438         .eh_frame section, use cfi_* directives.
3439         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Add cfi instrumentation.
3440
3441 2005-12-30  Ulrich Drepper  <drepper@redhat.com>
3442
3443         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Undo last change for
3444         now.
3445
3446 2005-12-29  Ulrich Drepper  <drepper@redhat.com>
3447
3448         * sysdeps/pthread/sigaction.c: Removed.
3449         * sigaction.c: New file.
3450         * sysdeps/unix/sysv/linux/Makefile: Define CFLAGS-sigaction.c.
3451
3452 2005-12-28  Ulrich Drepper  <drepper@redhat.com>
3453
3454         * Makefile (tests): Add tst-signal7.
3455         * tst-signal7.c: New file.
3456
3457 2005-12-27  Roland McGrath  <roland@redhat.com>
3458
3459         * sysdeps/x86_64/jmpbuf-unwind.h (_jmpbuf_sp): New inline function.
3460         (_JMPBUF_UNWINDS_ADJ): Use it, to PTR_DEMANGLE before comparison.
3461         * sysdeps/alpha/jmpbuf-unwind.h: Likewise.
3462         * sysdeps/i386/jmpbuf-unwind.h: Likewise.
3463         * sysdeps/mips/jmpbuf-unwind.h: Likewise.
3464         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
3465         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
3466         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
3467         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
3468         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Likewise.
3469         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
3470
3471 2005-12-27  Jakub Jelinek  <jakub@redhat.com>
3472
3473         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Add __next
3474         and __prev field to pthread_mutex_t.
3475         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
3476         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3477         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3478         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
3479         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Add __next field
3480         to pthread_mutex_t.
3481
3482 2005-12-26  Ulrich Drepper  <drepper@redhat.com>
3483
3484         * pthreadP.h: Define PTHREAD_MUTEX_ROBUST_PRIVATE_NP,
3485         PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP,
3486         PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP,
3487         PTHREAD_MUTEX_ROBUST_PRIVATE_ADAPTIVE_NP,
3488         PTHREAD_MUTEXATTR_FLAG_ROBUST, PTHREAD_MUTEXATTR_FLAG_PSHARED,
3489         and PTHREAD_MUTEXATTR_FLAG_BITS.
3490         * descr.h (struct pthread): Add robust_list field and define
3491         ENQUEUE_MUTEX and DEQUEUE_MUTEX macros.
3492         * pthread_mutexattr_getrobust.c: New file.
3493         * pthread_mutexattr_setrobust.c: New file.
3494         * pthread_mutex_consistent.c: New file.
3495         * sysdeps/pthread/pthread.h: Declare pthread_mutexattr_getrobust,
3496         pthread_mutexattr_setrobust, and pthread_mutex_consistent.
3497         Define PTHREAD_MUTEX_STALLED_NP and PTHREAD_MUTEX_ROBUST_NP.
3498         Adjust pthread_mutex_t initializers.
3499         * nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Add __next
3500         field to pthread_mutex_t.
3501         * nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Add __next
3502         and __prev field to pthread_mutex_t.
3503         * Versions [GLIBC_2.4]: Export pthread_mutexattr_getrobust_np,
3504         pthread_mutexattr_setrobust_np, and pthread_mutex_consistent_np.
3505         * pthread_mutexattr_getpshared.c: Use PTHREAD_MUTEXATTR_FLAG_PSHARED
3506         and PTHREAD_MUTEXATTR_FLAG_BITS macros instead of magic numbers.
3507         * pthread_mutexattr_gettype.c: Likewise.
3508         * pthread_mutexattr_setpshared.c: Likewise.
3509         * pthread_mutexattr_settype.c: Likewise.
3510         * pthread_mutex_init.c: Reject robust+pshared attribute for now.
3511         Initialize mutex kind according to robust flag.
3512         * pthread_mutex_lock.c: Implement local robust mutex.
3513         * pthread_mutex_timedlock.c: Likewise.
3514         * pthread_mutex_trylock.c: Likewise.
3515         * pthread_mutex_unlock.c: Likewise.
3516         * pthread_create.c (start_thread): Mark robust mutexes which remained
3517         locked as dead.
3518         * tst-robust1.c: New file.
3519         * tst-robust2.c: New file.
3520         * tst-robust3.c: New file.
3521         * tst-robust4.c: New file.
3522         * tst-robust5.c: New file.
3523         * tst-robust6.c: New file.
3524         * tst-robust7.c: New file.
3525         * Makefile (libpthread-routines): Add pthread_mutexattr_getrobust,
3526         pthread_mutexattr_setrobust, and pthread_mutex_consistent.
3527         (tests): Add tst-robust1, tst-robust2, tst-robust3, tst-robust4,
3528         tst-robust5, tst-robust6, and tst-robust7.
3529
3530         * tst-typesizes.c: New file.
3531         * Makefile (tests): Add tst-typesizes.
3532
3533         * tst-once3.c: More debug output.
3534
3535 2005-12-24  Ulrich Drepper  <drepper@redhat.com>
3536
3537         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Add break
3538         missing after last change.
3539
3540         * version.c: Update copyright year.
3541
3542 2005-12-23  Ulrich Drepper  <drepper@redhat.com>
3543
3544         * pthread_mutex_destroy.c: Set mutex type to an invalid value.
3545         * pthread_mutex_lock.c: Return EINVAL for invalid mutex type.
3546         * pthread_mutex_trylock.c: Likewise.
3547         * pthread_mutex_timedlock.c: Likewise.
3548         * pthread_mutex_unlock.c: Likewise.
3549
3550 2005-12-22  Roland McGrath  <roland@redhat.com>
3551
3552         * sysdeps/pthread/sigaction.c: Use "" instead of <> to include self,
3553         so that #include_next's search location is not reset to the -I..
3554         directory where <nptl/...> can be found.
3555
3556 2005-12-22  Ulrich Drepper  <drepper@redhat.com>
3557
3558         [BZ #1913]
3559         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
3560         Fix unwind info.  Remove useless branch prediction prefix.
3561         * tst-cancel24.cc: New file.
3562         * Makefile: Add rules to build and run tst-cancel24.
3563
3564 2005-12-21  Roland McGrath  <roland@redhat.com>
3565
3566         * libc-cancellation.c: Use <> rather than "" #includes.
3567         * pt-cleanup.c: Likewise.
3568         * pthread_create.c: Likewise.
3569         * pthread_join.c: Likewise.
3570         * pthread_timedjoin.c: Likewise.
3571         * pthread_tryjoin.c: Likewise.
3572         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Likewise.
3573         * sysdeps/unix/sysv/linux/register-atfork.c: Likewise.
3574         * sysdeps/unix/sysv/linux/unregister-atfork.c: Likewise.
3575         * unwind.c: Likewise.
3576
3577 2005-12-19  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3578
3579         * sysdeps/sh/tcb-offsets.sym: Add POINTER_GUARD.
3580         * sysdeps/sh/tls.h (tcbhead_t): Remove private and add pointer_guard.
3581         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
3582         THREAD_COPY_POINTER_GUARD): Define.
3583
3584 2005-12-19  Jakub Jelinek  <jakub@redhat.com>
3585
3586         * sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): Make room for 2 uintptr_t's
3587         rather than one.
3588         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
3589         THREAD_COPY_POINTER_GUARD): Define.
3590         * sysdeps/powerpc/tcb-offsets.sym (POINTER_GUARD): Add.
3591         * sysdeps/powerpc/tls.h (tcbhead_t): Add pointer_guard field.
3592         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
3593         THREAD_COPY_POINTER_GUARD): Define.
3594         * sysdeps/s390/tcb-offsets.sym (STACK_GUARD): Add.
3595         * sysdeps/s390/tls.h (THREAD_GET_POINTER_GUARD,
3596         THREAD_SET_POINTER_GUARD, THREAD_COPY_POINTER_GUARD): Define.
3597         * sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S (__ia64_longjmp):
3598         Use PTR_DEMANGLE for B0 if defined.
3599
3600 2005-12-17  Ulrich Drepper  <drepper@redhat.com>
3601
3602         * pthread_create.c (__pthread_create_2_1): Use
3603         THREAD_COPY_POINTER_GUARD if available.
3604         * sysdeps/i386/tcb-offsets.sym: Add POINTER_GUARD.
3605         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
3606         * sysdeps/i386/tls.h (tcbhead_t): Add pointer_guard.
3607         Define THREAD_SET_POINTER_GUARD and THREAD_COPY_POINTER_GUARD.
3608         * sysdeps/x86_64/tls.h: Likewise.
3609
3610 2005-12-15  Roland McGrath  <roland@redhat.com>
3611
3612         * sysdeps/unix/sysv/linux/mq_notify.c: Don't use sysdeps/generic.
3613
3614 2005-12-13  Ulrich Drepper  <drepper@redhat.com>
3615
3616         * sysdeps/pthread/sigfillset.c: Adjust for files moved out of
3617         sysdeps/generic.
3618         * errno-loc.c: New file.
3619
3620 2005-12-12  Roland McGrath  <roland@redhat.com>
3621
3622         * init.c (__pthread_initialize_minimal_internal): Do __static_tls_size
3623         adjustments before choosing stack size.  Update minimum stack size
3624         calculation to match allocate_stack change.
3625
3626 2005-12-12  Ulrich Drepper  <drepper@redhat.com>
3627
3628         * allocatestack.c (allocate_stack): Don't demand that there is an
3629         additional full page available on the stack beside guard, TLS, the
3630         minimum stack.
3631
3632 2005-11-24  Ulrich Drepper  <drepper@redhat.com>
3633
3634         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
3635         (__cleanup_fct_attribute): Use __regparm__ not regparm.
3636
3637         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: When
3638         compiling 32-bit code we must define __cleanup_fct_attribute.
3639
3640 005-11-24  Jakub Jelinek  <jakub@redhat.com>
3641
3642         [BZ #1920]
3643         * sysdeps/pthread/pthread.h (__pthread_unwind_next): Use
3644         __attribute__ instead of __attribute.
3645         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
3646         (__cleanup_fct_attribute): Likewise.
3647
3648 2005-11-17  Jakub Jelinek  <jakub@redhat.com>
3649
3650         * sysdeps/pthread/unwind-forcedunwind.c (pthread_cancel_init): Put
3651         a write barrier before writing libgcc_s_getcfa.
3652
3653 2005-11-06  Ulrich Drepper  <drepper@redhat.com>
3654
3655         * sysdeps/unix/sysv/linux/configure: Removed.
3656
3657 2005-11-05  Ulrich Drepper  <drepper@redhat.com>
3658
3659         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Remove trace of
3660         optional init_array/fini_array support.
3661
3662 2005-10-24  Roland McGrath  <roland@redhat.com>
3663
3664         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Remove unnecessary
3665         versioned_symbol use.
3666
3667 2005-10-16  Roland McGrath  <roland@redhat.com>
3668
3669         * init.c (__pthread_initialize_minimal_internal): Even when using a
3670         compile-time default stack size, apply the minimum that allocate_stack
3671         will require, and round up to page size.
3672
3673 2005-10-10  Daniel Jacobowitz  <dan@codesourcery.com>
3674
3675         * Makefile ($(test-modules)): Remove static pattern rule.
3676
3677 2005-10-14  Jakub Jelinek  <jakub@redhat.com>
3678             Ulrich Drepper  <drepper@redhat.com>
3679
3680         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Fix stack
3681         alignment in callback function.
3682         * Makefile: Add rules to build and run tst-align3.
3683         * tst-align3.c: New file.
3684
3685 2005-10-03  Jakub Jelinek  <jakub@redhat.com>
3686
3687         * allocatestack.c (setxid_signal_thread): Add
3688         INTERNAL_SYSCALL_DECL (err).
3689
3690 2005-10-02  Jakub Jelinek  <jakub@redhat.com>
3691
3692         * allocatestack.c (setxid_signal_thread): Need to use
3693         atomic_compare_and_exchange_bool_acq.
3694
3695 2005-10-01  Ulrich Drepper  <drepper@redhat.com>
3696             Jakub Jelinek  <jakub@redhat.com>
3697
3698         * descr.h: Define SETXID_BIT and SETXID_BITMASK.  Adjust
3699         CANCEL_RESTMASK.
3700         (struct pthread): Move specific_used field to avoid padding.
3701         Add setxid_futex field.
3702         * init.c (sighandler_setxid): Reset setxid flag and release the
3703         setxid futex.
3704         * allocatestack.c (setxid_signal_thread): New function.  Broken
3705         out of the bodies of the two loops in __nptl_setxid.  For undetached
3706         threads check whether they are exiting and if yes, don't send a signal.
3707         (__nptl_setxid): Simplify loops by using setxid_signal_thread.
3708         * pthread_create.c (start_thread): For undetached threads, check
3709         whether setxid bit is set.  If yes, wait until signal has been
3710         processed.
3711
3712         * allocatestack.c (STACK_VARIABLES): Initialize them.
3713         * pthread_create.c (__pthread_create_2_1): Initialize pd.
3714
3715 2004-09-02  Jakub Jelinek  <jakub@redhat.com>
3716
3717         * pthread_cond_destroy.c (__pthread_cond_destroy): If there are
3718         waiters, awake all waiters on the associated mutex.
3719
3720 2005-09-22  Roland McGrath  <roland@redhat.com>
3721
3722         * perf.c [__x86_64__] (HP_TIMING_NOW): New macro (copied from
3723         ../sysdeps/x86_64/hp-timing.h).
3724
3725 2005-08-29  Jakub Jelinek  <jakub@redhat.com>
3726
3727         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_WAKE_OP,
3728         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
3729         (lll_futex_wake_unlock): Define.
3730         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (FUTEX_WAKE_OP,
3731         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
3732         (lll_futex_wake_unlock): Define.
3733         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (FUTEX_WAKE_OP,
3734         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
3735         (lll_futex_wake_unlock): Define.
3736         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_WAKE_OP,
3737         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
3738         (lll_futex_wake_unlock): Define.
3739         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (FUTEX_WAKE_OP,
3740         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
3741         (lll_futex_wake_unlock): Define.
3742         * sysdeps/pthread/pthread_cond_signal.c (__pthread_cond_signal): Use
3743         lll_futex_wake_unlock.
3744         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
3745         (FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
3746         (__pthread_cond_signal): Use FUTEX_WAKE_OP.
3747         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
3748         (FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
3749         (__pthread_cond_signal): Use FUTEX_WAKE_OP.
3750
3751 2005-09-05  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3752
3753         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_mutex_lock_wait):
3754         Fix typo in register name.
3755
3756 2005-08-23  Ulrich Drepper  <drepper@redhat.com>
3757
3758         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
3759         Use __sigfillset.  Document that sigfillset does the right thing wrt
3760         to SIGSETXID.
3761
3762 2005-07-11  Jakub Jelinek  <jakub@redhat.com>
3763
3764         [BZ #1102]
3765         * sysdeps/pthread/pthread.h (PTHREAD_MUTEX_INITIALIZER,
3766         PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
3767         PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP,
3768         PTHREAD_MUTEX_ADAPTIVE_NP, PTHREAD_RWLOCK_INITIALIZER,
3769         PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
3770         PTHREAD_COND_INITIALIZER): Supply zeros for all fields
3771         in the structure.
3772         * Makefile (tests): Add tst-initializers1.
3773         (CFLAGS-tst-initializers1.c): Set.
3774         * tst-initializers1.c: New test.
3775
3776 2005-07-11  Jakub Jelinek  <jakub@redhat.com>
3777
3778         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_rwlock_t):
3779         Make sure __flags are located at offset 48 from the start of the
3780         structure.
3781
3782 2005-07-02  Roland McGrath  <roland@redhat.com>
3783
3784         * Makeconfig: Comment fix.
3785
3786 2005-07-05  Jakub Jelinek  <jakub@redhat.com>
3787
3788         * descr.h (PTHREAD_STRUCT_END_PADDING): Define.
3789         * sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): If PTHREAD_STRUCT_END_PADDING
3790         is smaller than 8 bytes, increase TLS_PRE_TCB_SIZE by 16 bytes.
3791         (THREAD_SYSINFO, THREAD_SELF, DB_THREAD_SELF): Don't assume
3792         TLS_PRE_TCB_SIZE is sizeof (struct pthread).
3793         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
3794         * sysdeps/ia64/tcb-offsets.sym (PID, TID, MULTIPLE_THREADS_OFFSET):
3795         Use TLS_PRE_TCB_SIZE instead of sizeof (struct pthread).
3796         * sysdeps/unix/sysv/linux/ia64/createthread.c (TLS_VALUE): Don't
3797         assume TLS_PRE_TCB_SIZE is sizeof (struct pthread).
3798
3799 2005-06-25  Jakub Jelinek  <jakub@redhat.com>
3800
3801         * sysdeps/i386/tls.h (tcbhead_t): Add stack_guard field.
3802         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
3803         * sysdeps/x86_64/tls.h (tcbhead_t): Add sysinfo and stack_guard
3804         fields.
3805         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
3806         * sysdeps/s390/tls.h (tcbhead_t): Add stack_guard
3807         field.  Put in sysinfo field unconditionally.
3808         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
3809         * sysdeps/powerpc/tls.h (tcbhead_t): Add stack_guard field.
3810         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
3811         * sysdeps/sparc/tls.h (tcbhead_t): Add sysinfo and stack_guard
3812         fields.
3813         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
3814         * pthread_create.c (__pthread_create_2_1): Use
3815         THREAD_COPY_STACK_GUARD macro.
3816         * Makefile: Add rules to build and run tst-stackguard1{,-static}
3817         tests.
3818         * tst-stackguard1.c: New file.
3819         * tst-stackguard1-static.c: New file.
3820
3821 2005-06-14  Alan Modra  <amodra@bigpond.net.au>
3822
3823         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
3824         Invoke CGOTSETUP and CGOTRESTORE.
3825         (CGOTSETUP, CGOTRESTORE): Define.
3826
3827 2005-05-29  Richard Henderson  <rth@redhat.com>
3828
3829         * tst-cancel4.c (WRITE_BUFFER_SIZE): New.
3830         (tf_write, tf_writev): Use it.
3831         (do_test): Use socketpair instead of pipe.  Set SO_SNDBUF to
3832         the system minimum.
3833
3834 2005-05-23  Jakub Jelinek  <jakub@redhat.com>
3835
3836         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
3837         [IS_IN_librt] (CENABLE, CDISABLE): Use JUMPTARGET instead of
3838         __librt_*_asynccancel@local.
3839
3840 2005-05-17  Alan Modra  <amodra@bigpond.net.au>
3841
3842         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Delete
3843         all occurrences of JUMPTARGET.  Instead append @local to labels.
3844
3845 2005-05-20  Jakub Jelinek  <jakub@redhat.com>
3846
3847         * sysdeps/i386/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN): Define to
3848         size/alignment of struct pthread rather than tcbhead_t.
3849         * sysdeps/x86_64/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
3850         Likewise.
3851         * sysdeps/s390/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
3852         Likewise.
3853         * sysdeps/sparc/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
3854         Likewise.
3855
3856 2005-05-19  Richard Henderson  <rth@redhat.com>
3857
3858         * sysdeps/ia64/pthread_spin_lock.c (pthread_spin_lock): Use
3859         __sync_val_compare_and_swap, not explicit _si variant.
3860         * sysdeps/ia64/pthread_spin_trylock.c (pthread_spin_trylock): Likewise.
3861
3862 2005-05-03  Ulrich Drepper  <drepper@redhat.com>
3863
3864         [BZ #915]
3865         * sysdeps/pthread/pthread.h: Avoid empty initializers.
3866
3867 2005-05-03  Jakub Jelinek  <jakub@redhat.com>
3868
3869         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Remove explicit
3870         .eh_frame section, use cfi_* directives.
3871
3872 2005-04-27  Jakub Jelinek  <jakub@redhat.com>
3873
3874         * sysdeps/unix/sysv/linux/pthread_getcpuclockid.c: Use <> instead
3875         of "" includes.
3876
3877 2005-04-27  Ulrich Drepper  <drepper@redhat.com>
3878
3879         [BZ #1075]
3880         * tst-cancel17.c (do_test): Add arbitrary factor to make sure
3881         aio_write blocks.
3882
3883 2005-04-27  Roland McGrath  <roland@redhat.com>
3884
3885         * Makefile (tests): Remove tst-clock2.
3886
3887         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Handle
3888         CLOCK_PROCESS_CPUTIME_ID and CLOCK_PROCESS_THREAD_ID specially,
3889         translating to the kernel clockid_t for our own process/thread clock.
3890
3891         * sysdeps/unix/sysv/linux/pthread_getcpuclockid.c: New file.
3892
3893 2005-04-15  Jakub Jelinek  <jakub@redhat.com>
3894
3895         * old_pthread_cond_init.c: Include <errno.h>.
3896         (__pthread_cond_init_2_0): Fail with EINVAL if COND_ATTR is
3897         process shared or uses clock other than CLOCK_REALTIME.
3898         * pthread_cond_init.c (__pthread_cond_init): Remove bogus comment.
3899
3900 2005-04-13  David S. Miller  <davem@davemloft.net>
3901
3902         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: New file.
3903         * sysdeps/sparc/sparc64/clone.S: New file.
3904
3905 2005-04-05  Jakub Jelinek  <jakub@redhat.com>
3906
3907         [BZ #1102]
3908         * sysdeps/pthread/pthread.h (__pthread_cleanup_routine): Use
3909         __inline instead of inline.
3910         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_routine): Likewise.
3911
3912 2005-03-31  Jakub Jelinek  <jakub@redhat.com>
3913
3914         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Use
3915         functionally equivalent, but shorter instructions.
3916         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
3917         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
3918         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
3919         Likewise.
3920         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Likewise.
3921         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
3922         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
3923         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
3924         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
3925         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
3926         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
3927         Likewise.
3928         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
3929         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
3930         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
3931         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
3932         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
3933
3934 2005-03-28  Daniel Jacobowitz  <dan@codesourcery.com>
3935
3936         * sysdeps/mips/Makefile: New file.
3937         * sysdeps/mips/nptl-sysdep.S: New file.
3938         * sysdeps/mips/tcb-offsets.sym: New file.
3939         * sysdeps/mips/pthread_spin_lock.S: New file.
3940         * sysdeps/mips/pthread_spin_trylock.S: New file.
3941         * sysdeps/mips/pthreaddef.h: New file.
3942         * sysdeps/mips/tls.h: New file.
3943         * sysdeps/mips/jmpbuf-unwind.h: New file.
3944         * sysdeps/unix/sysv/linux/mips/lowlevellock.h: New file.
3945         * sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h: New file.
3946         * sysdeps/unix/sysv/linux/mips/bits/semaphore.h: New file.
3947         * sysdeps/unix/sysv/linux/mips/pthread_once.c: New file.
3948         * sysdeps/unix/sysv/linux/mips/fork.c: New file.
3949         * sysdeps/unix/sysv/linux/mips/pt-vfork.S: New file.
3950         * sysdeps/unix/sysv/linux/mips/vfork.S: New file.
3951         * sysdeps/unix/sysv/linux/mips/clone.S: New file.
3952         * sysdeps/unix/sysv/linux/mips/createthread.c: New file.
3953         * sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: New file.
3954
3955 2005-03-23  Ulrich Drepper  <drepper@redhat.com>
3956
3957         [BZ #1112]
3958         * pthread_create.c (__pthread_create_2_1): Rename syscall error
3959         variable to scerr.
3960
3961 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
3962
3963         * tst-getpid1.c (do_test): Align stack passed to clone{2,}.
3964
3965 2005-02-25  Roland McGrath  <roland@redhat.com>
3966
3967         * alloca_cutoff.c: Correct license text.
3968         * tst-unload.c: Likewise.
3969         * sysdeps/pthread/allocalim.h: Likewise.
3970         * sysdeps/pthread/pt-initfini.c: Likewise.
3971         * sysdeps/pthread/bits/libc-lock.h: Likewise.
3972         * sysdeps/pthread/bits/sigthread.h: Likewise.
3973         * sysdeps/unix/sysv/linux/bits/local_lim.h: Likewise.
3974         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
3975
3976 2005-02-16  Roland McGrath  <roland@redhat.com>
3977
3978         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
3979         Use unsigned int * for ptr_nthreads.
3980
3981 2005-02-14  Alan Modra  <amodra@bigpond.net.au>
3982
3983         [BZ #721]
3984         * sysdeps/powerpc/tcb-offsets.sym (thread_offsetof): Redefine to suit
3985         gcc4.
3986
3987 2005-02-07  Richard Henderson  <rth@redhat.com>
3988
3989         [BZ #787]
3990         * sysdeps/pthread/pthread.h (__sigsetjmp): Use pointer as first
3991         argument.
3992
3993 2004-11-03  Marcus Brinkmann  <marcus@gnu.org>
3994
3995         * sysdeps/generic/lowlevellock.h (__generic_mutex_unlock): Fix
3996         order of arguments in invocation of atomic_add_zero.
3997
3998 2005-01-26  Jakub Jelinek  <jakub@redhat.com>
3999
4000         [BZ #737]
4001         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S (__new_sem_trywait):
4002         Use direct %gs segment access or, if NO_TLS_DIRECT_SEG_REFS,
4003         at least gotntpoff relocation and addition.
4004         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
4005         Likewise.
4006         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
4007         Likewise.
4008         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
4009         Likewise.
4010
4011 2005-01-06  Ulrich Drepper  <drepper@redhat.com>
4012
4013         * allocatestack.c (init_one_static_tls): Adjust initialization of DTV
4014         entry for static tls deallocation fix.
4015         * sysdeps/alpha/tls.h (dtv_t): Change pointer type to be struct which
4016         also contains information whether the memory pointed to is static
4017         TLS or not.
4018         * sysdeps/i386/tls.h: Likewise.
4019         * sysdeps/ia64/tls.h: Likewise.
4020         * sysdeps/powerpc/tls.h: Likewise.
4021         * sysdeps/s390/tls.h: Likewise.
4022         * sysdeps/sh/tls.h: Likewise.
4023         * sysdeps/sparc/tls.h: Likewise.
4024         * sysdeps/x86_64/tls.h: Likewise.
4025
4026 2004-12-27  Ulrich Drepper  <drepper@redhat.com>
4027
4028         * init.c (__pthread_initialize_minimal_internal): Use __sigemptyset.
4029
4030 2004-12-21  Jakub Jelinek  <jakub@redhat.com>
4031
4032         * sysdeps/i386/tls.h (CALL_THREAD_FCT): Maintain 16 byte alignment of
4033         %esp.
4034         * Makefile (tests): Add tst-align2.
4035         * tst-align2.c: New test.
4036         * sysdeps/i386/Makefile (CFLAGS-tst-align{,2}.c): Add
4037         -mpreferred-stack-boundary=4.
4038
4039 2004-12-18  Roland McGrath  <roland@redhat.com>
4040
4041         * sysdeps/unix/sysv/linux/powerpc/powerpc64/bits/local_lim.h:
4042         New file removed withdrawn for the moment.
4043
4044 2004-12-17  Richard Henderson  <rth@redhat.com>
4045
4046         * sysdeps/unix/sysv/linux/alpha/clone.S: New file.
4047         * sysdeps/alpha/tcb-offsets.sym (TID_OFFSET): New.
4048
4049 2004-12-16  Ulrich Drepper  <drepper@redhat.com>
4050
4051         * sysdeps/unix/sysv/linux/powerpc/powerpc64/bits/local_lim.h: New file.
4052         Increased PTHREAD_STACK_MIN.
4053
4054         * tst-context1.c (stacks): Use bigger stack size.
4055
4056 2004-12-16  Jakub Jelinek  <jakub@redhat.com>
4057
4058         * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: New file.
4059         * sysdeps/sparc/tcb-offsets.sym: Add TID.
4060
4061 2004-12-15  Jakub Jelinek  <jakub@redhat.com>
4062
4063         * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: New file.
4064         * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: New file.
4065         * sysdeps/s390/tcb-offsets.sym (TID): Add.
4066
4067 2004-12-15  Ulrich Drepper  <drepper@redhat.com>
4068
4069         * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: New file.
4070
4071 2004-12-14  Ulrich Drepper  <drepper@redhat.com>
4072
4073         * sysdeps/powerpc/tcb-offsets.sym: Add TID.
4074         * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: New file.
4075
4076         * tst-getpid1.c: If child crashes, report this first.  Print which
4077         signal.
4078
4079 2004-12-09  Ulrich Drepper  <drepper@redhat.com>
4080
4081         * init.c (__pthread_initialize_minimal_internal): Also unblock
4082         SIGSETXID.
4083
4084 2004-12-01  Jakub Jelinek  <jakub@redhat.com>
4085
4086         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_CPUTIME,
4087         _POSIX_THREAD_CPUTIME): Define to 0.
4088         * sysdeps/pthread/timer_create.c (timer_create): Remove unused code
4089         handling CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID.
4090         * sysdeps/pthread/timer_routines.c (__timer_signal_thread_pclk,
4091         __timer_signal_thread_tclk): Remove.
4092         (init_module): Remove their initialization.
4093         (thread_cleanup): Remove their cleanup assertions.
4094         * sysdeps/pthread/posix-timer.h (__timer_signal_thread_pclk,
4095         __timer_signal_thread_tclk): Remove.
4096         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Removed.
4097         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Removed.
4098         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Removed.
4099
4100 2004-12-07  Jakub Jelinek  <jakub@redhat.com>
4101
4102         * sysdeps/ia64/tcb-offsets.sym (TID): Add.
4103         * sysdeps/unix/sysv/linux/ia64/clone2.S: New file.
4104
4105         * Makefile (tests): Add tst-getpid2.
4106         * tst-getpid1.c (TEST_CLONE_FLAGS): Define.
4107         (do_test): Use it.  Use __clone2 instead of clone on ia64.
4108         * tst-getpid2.c: New test.
4109
4110 2004-12-07  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4111
4112         * sysdeps/unix/sysv/linux/sh/clone.S: New file.
4113
4114 2004-12-04  Ulrich Drepper  <drepper@redhat.com>
4115
4116         * Makefile (tests): Add tst-getpid1.
4117         * tst-getpid1.c: New file.
4118         * sysdeps/unix/sysv/linux/i386/clone.S: New file.
4119         * sysdeps/unix/sysv/linux/x86_64/clone.S: New file.
4120
4121 2004-12-02  Roland McGrath  <roland@redhat.com>
4122
4123         * Makefile (libpthread-nonshared): Variable removed.
4124         ($(objpfx)libpthread_nonshared.a): Target removed.
4125         ($(inst_libdir)/libpthread_nonshared.a): Likewise.
4126         These are now handled by generic magic from
4127         libpthread-static-only-routines being set.
4128
4129 2004-11-27  Ulrich Drepper  <drepper@redhat.com>
4130
4131         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_PRIORITIZED_IO,
4132         _POSIX2_CHAR_TERM, _POSIX_THREAD_PRIO_INHERIT,
4133         _POSIX_THREAD_PRIO_PROTECT): Define.
4134         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
4135         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
4136         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
4137
4138 2004-11-26  Jakub Jelinek  <jakub@redhat.com>
4139
4140         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_ADVISORY_INFO,
4141         _POSIX_SPORADIC_SERVER, _POSIX_THREAD_SPORADIC_SERVER, _POSIX_TRACE,
4142         _POSIX_TRACE_EVENT_FILTER, _POSIX_TRACE_INHERIT, _POSIX_TRACE_LOG,
4143         _POSIX_TYPED_MEMORY_OBJECTS, _POSIX_IPV6, _POSIX_RAW_SOCKETS): Define.
4144         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
4145         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
4146         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
4147
4148 2004-11-24  Ulrich Drepper  <drepper@redhat.com>
4149
4150         * sysdeps/x86_64/Makefile [nptl]: Define CFLAGS-pthread_create.c.
4151
4152         * Makefile (libpthread-routines): Add pthread_setschedprio.
4153         * Versions [libpthread, GLIBC_2.3.4]: Add pthread_setschedprio.
4154         * sysdeps/pthread/pthread.h: Declare pthread_setschedprio.
4155         * pthread_setschedprio.c: New file.
4156
4157 2004-11-20  Jakub Jelinek  <jakub@redhat.com>
4158
4159         * pthread_create.c (pthread_cancel): Add PTHREAD_STATIC_FN_REQUIRE.
4160         * pthread_cancel.c (pthread_create): Likewise.
4161
4162         * Makefile (libpthread-routines): Add vars.
4163         * sysdeps/pthread/createthread.c (__pthread_multiple_threads): Remove.
4164         * init.c (__default_stacksize, __is_smp): Remove.
4165         * vars.c: New file.
4166         * pthreadP.h (__find_thread_by_id): If !SHARED, add weak_function
4167         and define a wrapper macro.
4168         (PTHREAD_STATIC_FN_REQUIRE): Define.
4169         * allocatestack.c (__find_thread_by_id): Undefine.
4170         * pthread_create (__pthread_keys): Remove.
4171         (pthread_mutex_lock, pthread_mutex_unlock, pthread_once,
4172         pthread_key_create, pthread_setspecific, pthread_getspecific): Add
4173         PTHREAD_STATIC_FN_REQUIRE.
4174
4175 2004-11-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4176
4177         * sysdeps/sh/tls.h (DB_THREAD_SELF): Set the correct bias
4178         parameter to REGISTER macro.
4179
4180 2004-11-17  Roland McGrath  <roland@redhat.com>
4181
4182         * sysdeps/unix/sysv/linux/timer_routines.c (__start_helper_thread):
4183         Make sure SIGCANCEL is blocked as well.
4184
4185 2004-11-10  Jakub Jelinek  <jakub@redhat.com>
4186
4187         * sysdeps/pthread/setxid.h: New file.
4188         * sysdeps/pthread/pthread-functions.h (HAVE_PTR__NPTL_SETXID): Remove.
4189         (struct xid_command): Add forward decl.
4190         (struct pthread_functions): Change return type of __nptl_setxid hook
4191         to int.
4192         * pthreadP.h (__nptl_setxid): Change return type to int.
4193         * allocatestack.c (__nptl_setxid): Call INTERNAL_SYSCALL_NCS in the
4194         calling thread, return its return value and set errno on failure.
4195         * descr.h (struct xid_command): Change id type to long array.
4196
4197         * Makefile: Add rules to build and test tst-setuid1 and
4198         tst-setuid1-static.
4199         * tst-setuid1.c: New test.
4200         * tst-setuid1-static.c: New test.
4201
4202 2004-11-10  Jakub Jelinek  <jakub@redhat.com>
4203
4204         * Makefile (tests): Add tst-exit3.
4205         * tst-exit3.c: New test.
4206
4207 2004-11-09  Ulrich Drepper  <drepper@redhat.com>
4208
4209         * Makefile (tests): Add tst-exit2.
4210         * tst-exit2.c: New file.
4211
4212 2004-11-09  Roland McGrath  <roland@redhat.com>
4213
4214         [BZ #530]
4215         * sysdeps/pthread/createthread.c (do_clone): Increment __nptl_nthreads
4216         here, before calling clone.
4217         * pthread_create.c (start_thread): Don't do it here.
4218
4219 2004-11-02  Jakub Jelinek  <jakub@redhat.com>
4220
4221         * sysdeps/unix/sysv/linux/smp.h: Include <errno.h>.
4222
4223 2004-10-29  Kaz  Kojima  <kkojima@rr.iij4u.or.jp>
4224
4225         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait):
4226         Set ETIMEDOUT to errno when time is up.  Tweak to avoid
4227         assembler warning.
4228
4229 2004-10-28  Jakub Jelinek  <jakub@redhat.com>
4230
4231         * pthread_create.c (__pthread_create_2_1): Avoid leaking stacks
4232         if sched_priority is not between minprio and maxprio.
4233
4234 2004-10-25  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4235
4236         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
4237         (__pthread_cond_timedwait): Use clock_gettime syscall if exists.
4238
4239         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
4240         (__lll_mutex_timedlock_wait): Fix a bad branch condition.
4241
4242 2004-10-24  Ulrich Drepper  <drepper@redhat.com>
4243
4244         * sysdeps/unix/sysv/linux/smp.h (is_smp_system): Use
4245         not-cancelable I/O functions.
4246
4247 2004-10-21  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4248
4249         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
4250         (__lll_mutex_timedlock_wait): If woken but cannot get the lock,
4251         make sure 2 is stored in the futex and we looked at the old value.
4252         Fix a few other problems to return the correct value.
4253
4254 2004-10-14  Richard Henderson  <rth@redhat.com>
4255
4256         * sysdeps/alpha/tcb-offsets.sym (thread_offsetof): Redefine to
4257         make gcc4 happy.
4258
4259 2004-10-06  Jakub Jelinek  <jakub@redhat.com>
4260
4261         * sysdeps/unix/sysv/linux/jmp-unwind.c: Include pthreadP.h instead
4262         of pthread-functions.h and pthreaddef.h.
4263         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Likewise.
4264
4265         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
4266         Change __data.__nwaiters from int to unsigned int.
4267
4268         * tst-clock2.c (do_test): Don't fail if _POSIX_THREAD_CPUTIME == 0 and
4269         sysconf (_SC_THREAD_CPUTIME) returns negative value.
4270
4271         * allocatestack.c (__find_thread_by_id): Move attribute_hidden
4272         before return type.
4273
4274         * sysdeps/s390/jmpbuf-unwind.h: Include bits/wordsize.h.
4275         (JMPBUF_CFA_UNWINDS_ADJ): Subtract 96 resp. 160 bytes from CFA.
4276
4277 2004-10-06  Ulrich Drepper  <drepper@redhat.com>
4278
4279         * tst-cancel4.c (tf_msgrcv): Check for failure in msgget.  If the
4280         test fails, remove message queue.
4281         (tf_msgsnd): Likewise.
4282
4283 2004-10-05  Jakub Jelinek  <jakub@redhat.com>
4284
4285         * tst-clock1.c: Change #ifdef to #if defined.
4286         * tst-clock2.c: Likewise.
4287         * tst-cond11.c: Likewise.
4288
4289         * sysdeps/pthread/timer_create.c (timer_create): Use
4290         defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 instead of
4291         defined CLOCK_PROCESS_CPUTIME_ID #ifs and similarly for
4292         THREAD_CPUTIME.
4293
4294 2004-10-05  Jakub Jelinek  <jakub@redhat.com>
4295
4296         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h (_POSIX_CPUTIME,
4297         _POSIX_THREAD_CPUTIME): Define to 0.
4298
4299 2004-10-04  Ulrich Drepper  <drepper@redhat.com>
4300
4301         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Define _POSIX_CPUTIME
4302         and _POSIX_THREAD_CPUTIME to zero.
4303         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
4304         * tst-barrier2.c: Fix testing for POSIX feature.
4305         * tst-clock1.c: Likewise.
4306         * tst-clock2.c: Likewise.
4307         * tst-cond11.c: Likewise.
4308         * tst-cond4.c: Likewise.
4309         * tst-cond6.c: Likewise.
4310         * tst-flock2.c: Likewise.
4311         * tst-mutex4.c: Likewise.
4312         * tst-mutex9.c: Likewise.
4313         * tst-rwlock12.c: Likewise.
4314         * tst-rwlock4.c: Likewise.
4315         * tst-signal1.c: Likewise.
4316         * tst-spin2.c: Likewise.
4317         * sysdeps/pthread/posix-timer.h: Likewise.
4318         * sysdeps/pthread/timer_create.c: Likewise.
4319         * sysdeps/pthread/timer_routines.c: Likewise.
4320
4321 2004-10-01  Ulrich Drepper  <drepper@redhat.com>
4322
4323         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
4324         (__lll_mutex_timedlock_wait): Address futex correctly.
4325
4326         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
4327         (__lll_mutex_timedlock_wait): If woken but cannot get the lock,
4328         make sure 2 is stored in the futex and we looked at the old value.
4329         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
4330         (__lll_mutex_timedlock_wait): Likewise.  Fix a few other problems
4331         which might very well made the code not working at all before.
4332         [BZ #417]
4333
4334 2004-09-28  Ulrich Drepper  <drepper@redhat.com>
4335
4336         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): Don't
4337         allow SIGSETXID to be sent.
4338         * sysdeps/pthread/sigaction.c (__sigaction): Don't allow action
4339         for SIGSETXID to be defined.
4340         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Make sure
4341         SIGSETXID cannot be blocked.
4342
4343         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
4344         Add __extension__ to long long types.
4345         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
4346         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
4347         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
4348         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4349         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Likewise.
4350         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
4351         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
4352
4353 2004-09-25  Ulrich Drepper  <drepper@redhat.com>
4354
4355         * descr.h (struct pthread): Add stopped_start field.
4356         * sysdeps/pthread/createthread.c (create_thread): Set
4357         start_stopped flag in descriptor for new thread appropriately.
4358         * pthread_create.c (start_thread): Only take lock to be stopped on
4359         startup if stopped_start flag says so.
4360
4361 2004-09-24  Ulrich Drepper  <drepper@redhat.com>
4362
4363         * pthread_create.c (__pthread_create_2_1): Remember whether thread
4364         is created detached and if yes, do not try to free the stack in case
4365         the thread creation failed.
4366         * sysdeps/pthread/createthread.c (do_clone): Free stack here if clone
4367         call fails.  Don't depend on INTERNAL_SYSCALL_ERRNO return zero in
4368         case there has been no error.  [BZ #405]
4369
4370         * pthread_create.c (start_thread): Don't wait for scheduler data
4371         etc to be set at the beginning of the function.  The cancellation
4372         infrastructure must have been set up.  And enable async
4373         cancellation before potentially going to sleep.  [BZ #401]
4374
4375 2004-09-20  Ulrich Drepper  <drepper@redhat.com>
4376
4377         * Versions: Remove exports for pthread_set*id_np functions.
4378         * sysdeps/pthread/pthread.h: Remove pthread_set*id_np prototypes
4379         for now.
4380         * Makefile: Don't build pthread_set*id code for now.
4381
4382 2004-09-19  Ulrich Drepper  <drepper@redhat.com>
4383
4384         * sysdeps/unix/sysv/linux/allocrtsig.c: Allocate second signal for
4385         internal use.
4386         * allocatestack.c (__nptl_setxid): New function.
4387         * descr.h (struct xid_command): Define type.
4388         * init.c (pthread_functions): Add ptr__nptl_setxid initialization.
4389         (sighandler_setxid): New function.
4390         (__pthread_initialize_minimal): Register sighandler_setxid for
4391         SIGCANCEL.
4392         * pt-allocrtsig.c: Update comment.
4393         * pthreadP.h: Define SIGSETXID.  Declare __xidcmd variable.
4394         Declare __nptl_setxid.
4395         * sysdeps/pthread/pthread-functions.h: Add ptr__nptl_setxid.
4396         * sysdeps/pthread/pthread.h: Declare pthread_setgid_np,
4397         pthread_setuid_np, pthread_setegid_np, pthread_seteuid_np,
4398         pthread_setregid_np, pthread_setreuid_np, pthread_setresgid_np,
4399         and pthread_setresuid_np.
4400         * pthread_setgid_np.c: New file.
4401         * pthread_setuid_np.c: New file.
4402         * pthread_setegid_np.c: New file.
4403         * pthread_seteuid_np.c: New file.
4404         * pthread_setregid_np.c: New file.
4405         * pthread_setreuid_np.c: New file.
4406         * pthread_setresgid_np.c: New file.
4407         * pthread_setresuid_np.c: New file.
4408         * Versions [libpthread, GLIBC_2.3.4]: Add pthread_setgid_np,
4409         pthread_setuid_np, pthread_setegid_np, pthread_seteuid_np,
4410         pthread_setregid_np, pthread_setreuid_np, pthread_setresgid_np,
4411         and pthread_setresuid_np.
4412         * Makefile (libpthread-routines): Add pthread_setuid, pthread_seteuid,
4413         pthread_setreuid, pthread_setresuid, pthread_setgid, pthread_setegid,
4414         pthread_setregid, and pthread_setresgid.
4415
4416 2004-09-18  Ulrich Drepper  <drepper@redhat.com>
4417
4418         * allocatestack.c (allocate_stack): Return EAGAIN instead of
4419         ENOMEM when out of memory.
4420
4421 2004-09-10  Roland McGrath  <roland@redhat.com>
4422
4423         [BZ #379]
4424         * allocatestack.c (allocate_stack): Remove [__ASSUME_CLONE_STOPPED]
4425         code, since we don't try to use the broken CLONE_STOPPED any more.
4426         * pthread_create.c (start_thread): Likewise.
4427
4428 2004-09-15  Richard Henderson  <rth@redhat.com>
4429
4430         * sysdeps/unix/sysv/linux/alpha/vfork.S: Use libc_hidden_def.
4431
4432 2004-09-01  David Mosberger  <davidm@hpl.hp.com>
4433
4434         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h
4435         (__libc_unwind_longjmp): Delete macro and declare as function.
4436         * sysdeps/unix/sysv/linux/ia64/Makefile (sysdep_routines): Mention
4437         __ia64_longjmp, sigstack_longjmp, and __sigstack_longjmp for
4438         nptl directory.
4439         * sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S: New file.
4440         * sysdeps/unix/sysv/linux/ia64/__sigstack_longjmp.c: New file.
4441         * sysdeps/unix/sysv/linux/ia64/unwind_longjmp.c: New file.
4442
4443 2004-09-12  Ulrich Drepper  <drepper@redhat.com>
4444
4445         * sysdeps/pthread/pthread.h: Make rwlock prototypes available also
4446         for __USE_XOPEN2K.
4447         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Define rwlock
4448         types also for __USE_XOPEN2K.
4449         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
4450         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4451         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
4452         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
4453         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
4454         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
4455         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
4456         [BZ #320]
4457
4458 2004-09-08  Ulrich Drepper  <drepper@redhat.com>
4459
4460         * sysdeps/pthread/pthread.h
4461         (PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP): Make safe for C++.
4462         (PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP): Likewise.
4463         (PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP): Likewise.
4464         (PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP): Likewise.
4465         [BZ #375]
4466
4467 2004-09-07  Ulrich Drepper  <drepper@redhat.com>
4468
4469         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Allow
4470         PSEUDO to be used with . prefix.
4471
4472         * sysdeps/unix/sysv/linux/alpha/pthread_once.c (__pthread_once):
4473         Use atomic_increment instead of atomic_exchange_and_add.
4474         * sysdeps/unix/sysv/linux/sparc/pthread_once.c (__pthread_once):
4475         Likewise.
4476         * sysdeps/unix/sysv/linux/ia64/pthread_once.c (__pthread_once):
4477         Likewise.
4478         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
4479         Likewise.
4480
4481         * allocatestack.c (allocate_stack): Use atomic_increment_val
4482         instead of atomic_exchange_and_add.
4483         * sysdeps/unix/sysv/linux/sem_post.c (__new_sem_post): Likewise.
4484         * sysdeps/unix/sysv/linux/powerpc/sem_post.c (__new_sem_post):
4485         Likewise.
4486         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
4487         Likewise.
4488
4489         * sysdeps/pthread/pthread.h (pthread_once): Remove __THROW since
4490         the initialization function might throw.
4491
4492 2005-09-05  Richard Henderson  <rth@redhat.com>
4493
4494         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (SINGLE_THREAD_P):
4495         Move definition inside libpthread, libc, librt check.  Provide
4496         definition for rtld.
4497
4498 2004-09-02  Ulrich Drepper  <drepper@redhat.com>
4499
4500         * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp.
4501         * sysdeps/i386/jmpbuf-unwind.h: Likewise
4502         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
4503         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
4504         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
4505         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
4506         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
4507         * sysdeps/x86_64/jmpbuf-unwind.h: Likewise.
4508         * unwind.c: Use it.
4509
4510         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
4511         Rename __data.__clock to __data.__nwaiters, make it unsigned int.
4512         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
4513         Likewise.
4514         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
4515         Decrement __nwaiters.  If pthread_cond_destroy has been called and
4516         this is the last waiter, signal pthread_cond_destroy caller and
4517         avoid using the pthread_cond_t structure after unlock.
4518         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
4519         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
4520         Read clock type from the least significant bits of __nwaiters instead
4521         of __clock.
4522         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4523         * sysdeps/unix/sysv/linux/internaltypes.h: Define COND_CLOCK_BITS.
4524
4525 2004-08-31  Jakub Jelinek  <jakub@redhat.com>
4526
4527         [BZ #342]
4528         * Makefile (tests): Add tst-cond20 and tst-cond21.
4529         * tst-cond20.c: New test.
4530         * tst-cond21.c: New test.
4531         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
4532         (pthread_cond_t): Rename __data.__clock to __data.__nwaiters, make
4533         it unsigned int.
4534         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
4535         Likewise.
4536         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
4537         (pthread_cond_t): Likewise.
4538         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_cond_t):
4539         Likewise.
4540         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
4541         Likewise.
4542         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_cond_t):
4543         Likewise.
4544         * sysdeps/unix/sysv/linux/lowlevelcond.sym (cond_clock): Remove.
4545         (cond_nwaiters): New.
4546         (clock_bits): New.
4547         * pthread_cond_destroy.c (__pthread_cond_destroy): Return EBUSY
4548         if there are waiters not signalled yet.
4549         Wait until all already signalled waiters wake up.
4550         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Decrement
4551         __nwaiters.  If pthread_cond_destroy has been called and this is the
4552         last waiter, signal pthread_cond_destroy caller and avoid using
4553         the pthread_cond_t structure after unlock.
4554         (__pthread_cond_wait): Increment __nwaiters in the beginning,
4555         decrement it when leaving.  If pthread_cond_destroy has been called
4556         and this is the last waiter, signal pthread_cond_destroy caller.
4557         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
4558         Likewise.  Read clock type from the least significant bits of
4559         __nwaiters instead of __clock.
4560         * pthread_condattr_setclock.c (pthread_condattr_setclock): Check
4561         whether clock ID can be encoded in COND_CLOCK_BITS bits.
4562         * pthread_condattr_getclock.c (pthread_condattr_getclock): Decode
4563         clock type just from the last COND_CLOCK_BITS bits of value.
4564         * pthread_cond_init.c (__pthread_cond_init): Initialize __nwaiters
4565         instead of __clock, just from second bit of condattr's value.
4566
4567 2004-08-30  Jakub Jelinek  <jakub@redhat.com>
4568
4569         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Include
4570         bits/wordsize.h.  Make the header match i386 header when __WORDSIZE
4571         != 64.
4572         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
4573
4574 2004-08-15  Roland McGrath  <roland@frob.com>
4575
4576         * pthread_atfork.c: Update copyright terms including special exception
4577         for these trivial files, which are statically linked into executables
4578         that use dynamic linking for the significant library code.
4579
4580 2004-08-09  Jakub Jelinek  <jakub@redhat.com>
4581
4582         * DESIGN-rwlock.txt: Add decreasing of nr_readers_queued to
4583         pthread_rwlock_rdlock.
4584         * sysdeps/pthread/pthread_rwlock_rdlock (__pthread_rwlock_rdlock):
4585         Decrease __nr_readers_queued after reacquiring lock.
4586         * sysdeps/pthread/pthread_rwlock_timedrdlock
4587         (pthread_rwlock_timedrdlock): Likewise.
4588         Reported by Bob Cook <bobcook47@hotmail.com>.
4589
4590 2004-08-11  Jakub Jelinek  <jakub@redhat.com>
4591
4592         * tst-rwlock14.c (tf): Read main thread handle from *ARG
4593         before pthread_barrier_wait.
4594
4595 2004-08-07  Ulrich Drepper  <drepper@redhat.com>
4596
4597         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
4598         Remove unnecessary exception handling data.
4599
4600 2004-07-23  Jakub Jelinek  <jakub@redhat.com>
4601
4602         [BZ #284]
4603         * sysdeps/pthread/pthread.h (pthread_getcpuclockid): Use __clockid_t
4604         instead of clockid_t.
4605
4606 2004-07-21  Roland McGrath  <roland@redhat.com>
4607
4608         * Makefile ($(objpfx)multidir.mk): Use $(make-target-directory).
4609
4610 2004-07-19  Roland McGrath  <roland@redhat.com>
4611
4612         * tst-cancel4.c (tf_waitid): Use WEXITED flag bit if available.
4613
4614 2004-07-02  Roland McGrath  <roland@redhat.com>
4615
4616         * configure: Don't exit.
4617
4618 2004-07-14  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4619
4620         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
4621         (__pthread_cond_timedwait): Check for invalid nanosecond in
4622         timeout value.
4623
4624 2004-07-07  Ulrich Drepper  <drepper@redhat.com>
4625
4626         * Makefile: Add rules to build and run tst-fini1.
4627         * tst-fini1.c: New file.
4628         * tst-fini1mod.c: New file.
4629
4630 2004-07-05  Ulrich Drepper  <drepper@redhat.com>
4631
4632         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define NO_CANCELLATION
4633         if no cancellation support is needed.
4634         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
4635         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
4636         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
4637         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
4638         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
4639         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
4640         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
4641         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
4642         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
4643
4644         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Define __NR_futex
4645         only if not already defined.
4646
4647 2004-07-05  Jakub Jelinek  <jakub@redhat.com>
4648
4649         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_unlock): Use
4650         constraint "m" instead of "0" for futex.
4651
4652         * shlib-versions: Add powerpc64-.*-linux.*.
4653
4654 2004-07-04  Jakub Jelinek  <jakub@redhat.com>
4655
4656         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
4657         (pthread_rwlock_timedrdlock): Use cmpq instead of cmpl to check
4658         for valid tv_nsec.
4659         * tst-rwlock14.c (do_test): Test for invalid tv_nsec equal to
4660         1 billion and 64-bit tv_nsec which is valid when truncated to 32
4661         bits.
4662
4663 2004-06-29  Roland McGrath  <roland@redhat.com>
4664
4665         * Banner: NPTL no longer has its own version number.
4666         * Makefile (nptl-version): Variable removed.
4667         * sysdeps/pthread/Makefile (CFLAGS-confstr.c): Set LIBPTHREAD_VERSION
4668         using $(version), the glibc version number.
4669
4670 2004-06-29  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4671
4672         * sysdeps/unix/sysv/linux/sh/pthread_once.S (__pthread_once):
4673         Fix branch offset for a PLT entry.
4674         * sysdeps/unix/sysv/linux/sh/sem_post.S (__new_sem_post):
4675         Likewise.
4676         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait):
4677         Likewise.
4678         * sysdeps/unix/sysv/linux/sh/sem_trywait.S (__new_sem_trywait):
4679         Likewise.
4680         * sysdeps/unix/sysv/linux/sh/sem_wait.S (__new_sem_wait):
4681         Likewise.
4682
4683 2004-06-28  Jakub Jelinek  <jakub@redhat.com>
4684
4685         * sysdeps/alpha/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Define
4686         unconditionally.
4687
4688 2004-06-28  Jakub Jelinek  <jakub@redhat.com>
4689
4690         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
4691         (pthread_rwlock_timedwrlock): Return EINVAL if tv_nsec is negative,
4692         instead of tv_sec.
4693         * sysdeps/pthread/pthread_rwlock_timedrdlock.c
4694         (pthread_rwlock_timedrdlock): Likewise.
4695
4696 2004-06-22  Jakub Jelinek  <jakub@redhat.com>
4697
4698         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue):
4699         Set __r7 to val, not mutex.
4700
4701 2004-06-27  Ulrich Drepper  <drepper@redhat.com>
4702
4703         * Makefile: Add rules to build tst-rwlock14.
4704         * tst-rwlock14.c: New file.
4705
4706 2004-06-24  Boris Hu  <boris.hu@intel.com>
4707
4708         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Add timeout validation
4709         check.
4710         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
4711
4712 2004-06-19  Andreas Jaeger  <aj@suse.de>
4713
4714         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Fix
4715         assembler in last patch.
4716
4717 2004-06-17  Ulrich Drepper  <drepper@redhat.com>
4718
4719         * sysdeps/pthread/pthread_cond_timedwait.c
4720         (__pthread_cond_timedwait): Also check for negativ nanoseconds.
4721         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
4722         (__pthread_cond_timedwait): Check for invalid nanosecond in
4723         timeout value.
4724         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4725         * tst-cond19.c: New file.
4726         * Makefile: Add rules to build and run tst-cond19.
4727
4728 2004-06-15  Steven Munroe  <sjmunroe@us.ibm.com>
4729
4730         * tst-context1.c (GUARD_PATTERN): Defined.
4731         (tst_context_t): Define struct containing ucontext_t & guard words.
4732         (ctx): Declare as an array of tst_context_t.
4733         (fct): Verify uc_link & guard words are still valid.
4734         (tf): Initialize guard words in ctx.  Adjust ctx refs for new struct.
4735
4736 2004-06-13  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4737
4738         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
4739         Add __data.__futex field, reshuffle __data.__clock.
4740         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
4741         (__pthread_cond_signal): Increment __futex at the same time as
4742         __wakeup_seq or __total_seq.  Pass address of __futex instead of
4743         address of low 32-bits of __wakeup_seq to futex syscall.
4744         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
4745         (__pthread_cond_wait): Likewise.  Pass __futex value from before
4746         releasing internal lock to FUTEX_WAIT.
4747         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
4748         (__pthread_cond_timedwait): Likewise.
4749         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
4750         (FUTEX_CMP_REQUEUE): Define.
4751         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
4752         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
4753         Pass __futex value from before the unlock and __futex address instead
4754         of address of low 32-bits of __wakeup_seq to futex syscall.
4755         Fallback to FUTEX_WAKE all on any errors.
4756
4757 2004-06-08  Jakub Jelinek  <jakub@redhat.com>
4758
4759         * pthread_mutexattr_getpshared.c (pthread_mutex_getpshared): Fix
4760         comment typo.
4761         * pthread_mutexattr_gettype.c (pthread_mutexattr_gettype): Likewise.
4762         * pthread_mutexattr_init.c (__pthread_mutexattr_init): Likewise.
4763         * pthread_mutexattr_settype.c (__pthread_mutexattr_settype): Likewise.
4764         * pthread_mutexattr_setpshared.c (pthread_mutexattr_setpshared):
4765         Likewise.  Reported by Bob Cook <bobcook47@hotmail.com>.
4766
4767 2004-06-11  Martin Schwidefsky  <schwidefsky@de.ibm.com>
4768
4769         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_compare_and_swap):
4770         Add memory clobber to inline assembly.
4771         (__lll_mutex_trylock): Likewise.
4772         (__lll_mutex_cond_trylock): Likewise.
4773
4774 2004-06-07  Martin Schwidefsky  <schwidefsky@de.ibm.com>
4775
4776         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue):
4777         Pass val argument as 6th system call argument in %r7.
4778
4779 2004-05-21  Jakub Jelinek  <jakub@redhat.com>
4780
4781         * Makefile (tests): Add tst-cond16.
4782         * sysdeps/unix/sysv/linux/lowlevelcond.sym (cond_futex): Add.
4783         * pthread_cond_init.c (__pthread_cond_init): Clear __data.__futex.
4784         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
4785         Add __data.__futex field, reshuffle __data.__clock.
4786         * sysdeps/unix/sysv/linux/i386/pthread_cond_signal.S
4787         (__pthread_cond_signal): Increment __futex at the same time as
4788         __wakeup_seq or __total_seq.  Pass address of __futex instead of
4789         address of low 32-bits of __wakeup_seq to futex syscall.
4790         * sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S
4791         (__pthread_cond_wait): Likewise.  Pass __futex value from before
4792         releasing internal lock to FUTEX_WAIT.
4793         * sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S
4794         (__pthread_cond_timedwait): Likewise.
4795         * sysdeps/unix/sysv/linux/i386/pthread_cond_broadcast.S
4796         (FUTEX_CMP_REQUEUE): Define.
4797         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
4798         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
4799         Pass __futex value from before the unlock and __futex address instead
4800         of address of low 32-bits of __wakeup_seq to futex syscall.
4801         Fallback to FUTEX_WAKE all on any errors.
4802         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (FUTEX_CMP_REQUEUE):
4803         Define.
4804         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
4805         internally.  Return non-zero if error, zero if success.
4806         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_cond_t):
4807         Add __data.__futex field, reshuffle __data.__clock.
4808         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_CMP_REQUEUE):
4809         Define.
4810         (lll_futex_requeue): Add val argument, return 1 unconditionally
4811         for the time being.
4812         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
4813         Add __data.__futex field, reshuffle __data.__clock.
4814         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_CMP_REQUEUE):
4815         Define.
4816         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
4817         internally.  Return non-zero if error, zero if success.
4818         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
4819         (pthread_cond_t): Add __data.__futex field, reshuffle __data.__clock.
4820         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (FUTEX_CMP_REQUEUE):
4821         Define.
4822         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
4823         internally.  Return non-zero if error, zero if success.
4824         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_cond_t):
4825         Add __data.__futex field, reshuffle __data.__clock.
4826         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (FUTEX_CMP_REQUEUE):
4827         Define.
4828         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
4829         internally.  Return non-zero if error, zero if success.
4830         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_cond_t):
4831         Add __data.__futex field, reshuffle __data.__clock.
4832         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
4833         Add __data.__futex field, reshuffle __data.__clock.
4834         * sysdeps/pthread/pthread_cond_signal.c (__pthread_cond_signal):
4835         Increment __futex at the same time as __wakeup_seq or __total_seq.
4836         Pass address of __futex instead of address of low 32-bits of
4837         __wakeup_seq to futex syscall.
4838         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
4839         Pass __futex value from before releasing internal lock
4840         to FUTEX_WAIT.
4841         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
4842         Likewise.  Avoid unnecessary shadowing of variables.
4843         * sysdeps/pthread/pthread_cond_broadcast.c (__pthread_cond_broadcast):
4844         Set __futex to 2 * __total_seq.  Pass __futex value from before the
4845         unlock and __futex address instead of address of low 32-bits of
4846         __wakeup_seq to futex_requeue macro, adjust for new return value
4847         meaning.
4848         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
4849         (__pthread_cond_signal): Increment __futex at the same time as
4850         __wakeup_seq or __total_seq.  Pass address of __futex instead of
4851         address of low 32-bits of __wakeup_seq to futex syscall.
4852         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
4853         (__pthread_cond_wait): Likewise.  Pass __futex value from before
4854         releasing internal lock to FUTEX_WAIT.
4855         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
4856         (__pthread_cond_timedwait): Likewise.
4857         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
4858         (FUTEX_CMP_REQUEUE): Define.
4859         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
4860         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
4861         Pass __futex value from before the unlock and __futex address instead
4862         of address of low 32-bits of __wakeup_seq to futex syscall.
4863         Fallback to FUTEX_WAKE all on any errors.
4864
4865 2004-06-03  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4866
4867         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_mutex_lock):
4868         Add nop to align the end of critical section.
4869         (lll_mutex_cond_lock, lll_mutex_timedlock): Likewise.
4870
4871 2004-06-01  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4872
4873         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
4874         Add __broadcast_seq field.
4875         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Mark
4876         all waiters as woken with woken_seq and bump broadcast counter.
4877         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Use new
4878         __broadcast_seq.  Increment __woken_seq correctly when cleanuped.
4879         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
4880         Comment typo fixes.  Avoid returning -ETIMEDOUT.
4881
4882 2004-06-01  Ulrich Drepper  <drepper@redhat.com>
4883
4884         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
4885         (__condvar_tw_cleanup): Fix access to saved broadcast_seq value.
4886         Reported by Kaz Kojima.
4887
4888 2004-05-25  Jakub Jelinek  <jakub@redhat.com>
4889
4890         * sysdeps/unix/sysv/linux/aio_misc.h: New file.
4891
4892 2004-05-21  Jakub Jelinek  <jakub@redhat.com>
4893
4894         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Compare
4895         __broadcast_seq with bc_seq after acquiring internal lock instead of
4896         before it.
4897
4898 2004-05-18  Jakub Jelinek  <jakub@redhat.com>
4899
4900         * Makefile (.NOTPARALLEL): Only serialize make check/xcheck, not
4901         compilation.
4902         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
4903         (__pthread_cond_timedwait): Avoid returning -ETIMEDOUT.
4904         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
4905         (pthread_cond_t): Add __data.__broadcast_seq field.
4906         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
4907         (FRAME_SIZE): Define.
4908         (__pthread_cond_timedwait): Use it.  Store/check broadcast_seq.
4909         Comment typo fixes.
4910         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (FRAME_SIZE):
4911         Define.
4912         (__pthread_cond_wait): Use it.  Store/check broadcast_seq.  Comment
4913         typo fixes.
4914         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
4915         (__pthread_cond_broadcast): Increment broadcast_seq.  Comment typo
4916         fixes.
4917
4918 2004-05-18  Ulrich Drepper  <drepper@redhat.com>
4919
4920         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add broadcast_seq entry.
4921         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_cond_t):
4922         Add __broadcast_seq field.
4923         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
4924         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
4925         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
4926         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
4927         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4928         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Mark
4929         all waiters as woken with woken_seq and bump broadcast counter.
4930         * sysdeps/pthread/pthread_cond_broadcast.c: Likewise.
4931         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use new
4932         __broadcast_seq field.
4933         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
4934         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
4935         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
4936         * pthread_cond_init.c: Initialize __broadcast_seq field.
4937         * Makefile (tests): Add tst-cond17 and tst-cond18.
4938         Add .NOTPARALLEL goal.
4939         * tst-cond16.c: New file.  From Jakub.
4940         * tst-cond17.c: New file.  From Jakub.
4941         * tst-cond18.c: New file.  From Jakub.
4942
4943 2004-05-16  Ulrich Drepper  <drepper@redhat.com>
4944
4945         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Correct some
4946         unwind info.
4947
4948         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
4949         Parametrize frame size.  Correct some unwind info.
4950         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
4951
4952 2004-05-04  Jakub Jelinek  <jakub@redhat.com>
4953
4954         * tst-stack3.c: Note testing functionality beyond POSIX.
4955
4956 2004-05-04  Jakub Jelinek  <jakub@redhat.com>
4957
4958         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (USE___THREAD):
4959         Change conditional from ifdef to if.
4960
4961 2004-04-23  Jakub Jelinek  <jakub@redhat.com>
4962
4963         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (SYSDEP_CANCEL_ERRNO,
4964         SYSDEP_CANCEL_ERROR): Define.
4965         (PSEUDO): Use it.
4966
4967 2004-05-01  Jakub Jelinek  <jakub@redhat.com>
4968
4969         * Versions (libpthread): Remove __pthread_cleanup_upto@@GLIBC_PRIVATE.
4970
4971 2004-04-20  Jakub Jelinek  <jakub@redhat.com>
4972
4973         * sem_unlink.c (sem_unlink): Change EPERM into EACCES.
4974
4975 2004-04-19  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4976
4977         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Add frame info.
4978         Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
4979         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Remove unneeded frame
4980         info.  Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
4981
4982 2004-04-19  Ulrich Drepper  <drepper@redhat.com>
4983
4984         * sysdeps/unix/sysv/linux/timer_routines.c: Make sure helper
4985         thread has all signals blocked.
4986
4987 2004-04-18  Andreas Jaeger  <aj@suse.de>
4988
4989         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h
4990         (SEM_VALUE_MAX): Add missing brace.
4991
4992 2004-04-17  Jakub Jelinek  <jakub@redhat.com>
4993
4994         * sysdeps/pthread/Makefile (tests): Add tst-mqueue8x
4995         in rt subdir.
4996         (CFLAGS-tst-mqueue8x.c): Add -fexceptions.
4997         * sysdeps/pthread/tst-mqueue8x.c: New test.
4998         * tst-cancel4.c: Update comment about message queues.
4999
5000         * sysdeps/pthread/timer_gettime.c (timer_gettime): For expired timer
5001         return it_value { 0, 0 }.
5002         * sysdeps/pthread/timer_create.c (timer_create): Handle SIGEV_NONE
5003         like SIGEV_SIGNAL.
5004         * sysdeps/pthread/timer_routines.c (thread_expire_timer): Remove
5005         assertion for SIGEV_NONE.
5006         (thread_attr_compare): Compare all attributes, not just a partial
5007         subset.
5008
5009 2004-04-17  Jakub Jelinek  <jakub@redhat.com>
5010
5011         * sysdeps/unix/sysv/linux/mq_notify.c: Include stdlib.h.
5012
5013 2004-04-17  Ulrich Drepper  <drepper@redhat.com>
5014
5015         * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h (SEM_VALUE_MAX):
5016         Just use a plain number.
5017         * sysdeps/unix/sysv/linux/i386/bits/semaphore.h: Likewise.
5018         * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: Likewise.
5019         * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: Likewise.
5020         * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: Likewise.
5021         * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: Likewise.
5022         * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: Likewise.
5023         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
5024
5025 2004-04-16  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5026
5027         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Remove unneeded
5028         frame info.
5029         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
5030
5031 2004-04-15  Jakub Jelinek  <jakub@redhat.com>
5032
5033         * sysdeps/unix/sysv/linux/timer_routines.c: Include errno.h.
5034         (timer_helper_thread): Use inline rt_sigtimedwait syscall instead
5035         of calling sigwaitinfo.
5036
5037 2004-04-16  Ulrich Drepper  <drepper@redhat.com>
5038
5039         * allocatestack.c (allocate_stack): Set reported_guardsize
5040         unconditionally.
5041         * pthread_getattr_np.c (pthread_getattr_np): Use
5042         reported_guardsize instead of guardsize.
5043         * descr.h (struct pthread): Add reported_guardsize field.
5044
5045 2004-04-13  Jakub Jelinek  <jakub@redhat.com>
5046
5047         * sysdeps/unix/sysv/linux/mq_notify.c: Shut up GCC warning.
5048
5049 2004-04-12  Ulrich Drepper  <drepper@redhat.com>
5050
5051         * sysdeps/unix/sysv/linux/mq-notify.c: New file.
5052
5053 2004-04-08  Jakub Jelinek  <jakub@redhat.com>
5054
5055         * sysdeps/unix/sysv/linux/bits/local_lim.h (MQ_PRIO_MAX): Define.
5056         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h (MQ_PRIO_MAX): Define.
5057         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h (MQ_PRIO_MAX): Define.
5058         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h (MQ_PRIO_MAX): Define.
5059         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_MESSAGE_PASSING):
5060         Define.
5061         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h
5062         (_POSIX_MESSAGE_PASSING): Define.
5063         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h
5064         (_POSIX_MESSAGE_PASSING): Define.
5065         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h
5066         (_POSIX_MESSAGE_PASSING): Define.
5067
5068 2004-04-04  Ulrich Drepper  <drepper@redhat.com>
5069
5070         * tst-context1.c (fct): Check whether correct stack is used.
5071
5072 2004-04-03  Ulrich Drepper  <drepper@redhat.com>
5073
5074         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Never use
5075         matching constraints for asm mem parameters.
5076
5077         * tst-clock2.c (tf): Don't define unless needed.
5078
5079 2004-03-30  H.J. Lu  <hongjiu.lu@intel.com>
5080
5081         * Makefile (link-libc-static): Use $(static-gnulib) instead of
5082         $(gnulib).
5083
5084 2004-03-30  Ulrich Drepper  <drepper@redhat.com>
5085
5086         * sysdeps/pthread/pthread-functions.h: Add ptr__nptl_deallocate_tsd.
5087         * init.c (pthread_functions): Add ptr__nptl_deallocate_tsd.
5088         * pthreadP.h: Declare __nptl_deallocate_tsd.
5089         * pthread_create.c (deallocate_tsd): Remove to __nptl_deallocate_tsd.
5090         Adjust caller.
5091
5092         * Makefile (tests): Add tst-tsd5.
5093         * tst-tsd5.c: New file.
5094
5095 2004-03-29  Ulrich Drepper  <drepper@redhat.com>
5096
5097         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
5098         (__pthread_attr_setaffinity_old): Prepend GLIBC_ to version names
5099         is SHLIB_COMPAT check.
5100         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
5101         (__pthread_attr_getaffinity_old): Likewise.
5102         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
5103         (__pthread_getaffinity_old): Likewise.
5104         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
5105         (__pthread_setaffinity_old): Likewise.
5106
5107 2004-03-26  Ulrich Drepper  <drepper@redhat.com>
5108
5109         * allocatestack.c (_make_stacks_executable): Call
5110         _dl_make_stack_executable first.
5111
5112 2004-03-24  Roland McGrath  <roland@redhat.com>
5113
5114         * sysdeps/i386/pthread_spin_lock.c (pthread_spin_lock): Use "m"
5115         constraint instead of "0".
5116
5117 2004-03-24  Ulrich Drepper  <drepper@redhat.com>
5118
5119         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
5120         (lll_mutex_cond_trylock): Define as wrapper around __lll_cond_trylock.
5121
5122         * sysdeps/unix/sysv/linux/getpid.c (really_getpid): Reorganize
5123         code to avoid warning.
5124
5125 2004-03-24  Andreas Jaeger  <aj@suse.de>
5126
5127         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
5128         (__pthread_attr_setaffinity_old): Remove const.
5129
5130 2004-03-23  Ulrich Drepper  <drepper@redhat.com>
5131
5132         * sysdeps/unix/sysv/linux/smp.h: New file.
5133         * sysdeps/unix/sysv/linux/sh/smp.h: New file.
5134         * init.c: Define __is_smp.
5135         (__pthread_initialize_minimal_internal): Call is_smp_system to
5136         initialize __is_smp.
5137         * pthreadP.h: Declare __is_smp.
5138         Define MAX_ADAPTIVE_COUNT is necessary.
5139         * pthread_mutex_init.c: Add comment regarding __spins field.
5140         * pthread_mutex_lock.c: Implement adaptive mutex type.
5141         * pthread_mutex_timedlock.c: Likewise.
5142         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise.
5143         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_mutex_t):
5144         Add __spins field.
5145         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
5146         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
5147         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
5148         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
5149         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
5150         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
5151         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
5152         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Define
5153         lll_mutex_cond_trylock.
5154         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
5155         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
5156         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
5157         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
5158         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
5159         Define BUSY_WAIT_NOP.
5160         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
5161         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
5162
5163         * tst-mutex5.c: Add support for testing adaptive mutexes.
5164         * tst-mutex7.c: Likewise.
5165         * tst-mutex5a.c: New file.
5166         * tst-mutex7a.c: New file.
5167         * Makefile (tests): Add tst-mutex5a and tst-mutex7a.
5168
5169         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
5170         (__lll_mutex_timedlock_wait): Preserve r8 and r9 since the
5171         vgettimeofday call might destroy the content.
5172
5173         * sysdeps/ia64/pthread_spin_lock.c (pthread_spin_lock): Use hint
5174         @pause in the loop.
5175
5176         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_mutex_trylock):
5177         No need to restrict type of ret.  Make it int.  Add comment.
5178
5179         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_mutex_trylock):
5180         Remove unnecessary setne instruction.
5181
5182 2004-03-22  Jakub Jelinek  <jakub@redhat.com>
5183
5184         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
5185         (__pthread_getaffinity_new): Use INT_MAX instead of UINT_MAX.
5186         * pthread_getattr_np.c (pthread_getattr_np): Double size every cycle.
5187         If realloc fails, break out of the loop.
5188
5189 2004-03-20  Andreas Jaeger  <aj@suse.de>
5190
5191         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
5192         (__pthread_setaffinity_old): Fix interface.
5193         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
5194         (__pthread_getaffinity_old): Likewise.
5195
5196         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
5197         (__pthread_setaffinity_new): Remove duplicate declaration.
5198
5199 2004-03-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5200
5201         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (CENABLE): Save
5202         the return value to a safe register.
5203         (CDISABLE): Set the function argument correctly.
5204
5205 2004-03-17  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5206
5207         * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h (XCHG): Define.
5208         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_mutex_lock_wait):
5209         Rewrite so that only one locked memory operation per round is needed.
5210         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
5211         (pthread_barrier_wait): After wakeup, release lock only when the
5212         last thread stopped using the barrier object.
5213         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
5214         (__pthread_cond_wait): Don't store mutex address if the current
5215         value is ~0l.  Add correct cleanup support and unwind info.
5216         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
5217         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
5218         (__pthread_cond_broadcast): Don't use requeue for pshared condvars.
5219         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Update comment.
5220         * sysdeps/unix/sysv/linux/sh/pthread_once.S (__pthread_once):
5221         Add correct cleanup support and unwind info.
5222         * sysdeps/unix/sysv/linux/sh/sem_wait.S (__new_sem_wait): Likewise.
5223         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Add unwind
5224         information for syscall wrappers.
5225
5226 2004-03-18  Ulrich Drepper  <drepper@redhat.com>
5227
5228         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_attr): Add
5229         cpusetsize field, remove next.
5230         * sysdeps/pthread/pthread.h (pthread_getaffinity_np): Add new second
5231         parameter for size of the CPU set.
5232         (pthread_setaffinity_np): Likewise.
5233         (pthread_attr_getaffinity_np): Likewise.
5234         (pthread_attr_setaffinity_np): Likewise.
5235         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c: Implement
5236         interface change, keep compatibility code.
5237         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c: Likewise.
5238         * sysdeps/unix/sysv/linux/pthread_getaffinity.c: Likewise.
5239         * sysdeps/unix/sysv/linux/pthread_setaffinity.c: Likewise.
5240         * pthreadP.h: Remove hidden_proto for pthread_getaffinity_np.  Declare
5241         __pthread_getaffinity_np.
5242         * Versions: Add version for changed interfaces.
5243         * tst-attr3.c: Adjust test for interface change.
5244         * pthread_getattr_np.c: Query the kernel about the affinity mask with
5245         increasing buffer sizes.
5246         * pthread_attr_destroy.c: Remove unused list handling.
5247         * pthread_attr_init.c: Likewise.
5248
5249 2004-03-17  Roland McGrath  <roland@redhat.com>
5250
5251         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Pass missing
5252         first argument to clock_getres so we ever enable kernel timers.
5253
5254 2004-03-15  Ulrich Weigand  <uweigand@de.ibm.com>
5255
5256         * init.c (nptl_version): Add __attribute_used__ to nptl_version.
5257
5258 2004-03-12  Richard Henderson  <rth@redhat.com>
5259
5260         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Propagate
5261         oldvalue from CENABLE to CDISABLE.
5262
5263 2004-03-12  Ulrich Drepper  <drepper@redhat.com>
5264
5265         * sysdeps/unix/sysv/linux/bits/local_lim.h: Define HOST_NAME_MAX.
5266         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise.
5267         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise.
5268         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise.
5269
5270 2004-03-11  Richard Henderson  <rth@redhat.com>
5271
5272         * sysdeps/alpha/tcb-offsets.sym (PID_OFFSET): New.
5273         * sysdeps/unix/sysv/linux/alpha/pt-vfork.S: Save/restore PID.
5274         * sysdeps/unix/sysv/linux/alpha/vfork.S: New file.
5275
5276 2004-03-11  Jakub Jelinek  <jakub@redhat.com>
5277
5278         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S (__vfork): Use jgnl
5279         instead of jnl instruction to jump to SYSCALL_ERROR_LABEL.
5280         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S (__vfork): Likewise.
5281
5282 2004-03-11  Jakub Jelinek  <jakub@redhat.com>
5283
5284         * forward.c (__pthread_cond_broadcast_2_0,
5285         __pthread_cond_destroy_2_0, __pthread_cond_init_2_0,
5286         __pthread_cond_signal_2_0, __pthread_cond_wait_2_0,
5287         __pthread_cond_timedwait_2_0): Use return 0 as defaction instead of 0.
5288
5289 2004-03-11  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5290
5291         * sysdeps/sh/tcb-offsets.sym: Add PID.
5292         * sysdeps/unix/sysv/linux/sh/pt-vfork.S: Properly handle PID cache.
5293         * sysdeps/unix/sysv/linux/sh/vfork.S: New file.
5294
5295 2004-03-10  Ulrich Drepper  <drepper@redhat.com>
5296
5297         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: No need to
5298         include <sysdep-cancel.h>, vfork is no cancellation point.
5299         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: Likewise.
5300         * sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S: Likewise.
5301         * sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S: Likewise.
5302
5303 2004-03-10  Jakub Jelinek  <jakub@redhat.com>
5304
5305         * sysdeps/unix/sysv/linux/s390/s390-32/vfork.S (__vfork): Add
5306         libc_hidden_def.
5307         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S (__vfork): Likewise.
5308         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S (__vfork):
5309         Likewise.
5310         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S (__vfork):
5311         Likewise.
5312         * sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S (__vfork): Likewise.
5313         * sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S (__vfork): Likewise.
5314         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Include tcb-offsets.h.
5315         * sysdeps/unix/sysv/linux/ia64/vfork.S (__vfork): Use DO_CALL instead
5316         of DO_CALL_VIA_BREAK.  Work around a gas problem.
5317
5318         * sysdeps/unix/sysv/linux/powerpc/pt-vfork.S: Remove.
5319         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: New file.
5320         * sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S: New file.
5321         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: New file.
5322         * sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S: New file.
5323         * sysdeps/powerpc/tcb-offsets.sym: Add PID.
5324
5325         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S (__vfork): Don't use
5326         a local register for saving old PID.  Negate PID in parent upon exit.
5327
5328         * sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: Include
5329         tcb-offsets.h.
5330         (__vfork): Negate PID if non-zero and set to INT_MIN if zero
5331         before syscall, set to the old value in the parent afterwards.
5332         * sysdeps/unix/sysv/linux/s390/s390-32/vfork.S: New file.
5333         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S: Include
5334         tcb-offsets.h.
5335         (__vfork): Negate PID if non-zero and set to INT_MIN if zero
5336         before syscall, set to the old value in the parent afterwards.
5337         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S: New file.
5338         * sysdeps/s390/tcb-offsets.sym: Add PID.
5339
5340         * sysdeps/unix/sysv/linux/sparc/pt-vfork.S: Remove.
5341         * sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: New file.
5342         * sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S: New file.
5343         * sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: New file.
5344         * sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S: New file.
5345         * sysdeps/sparc/tcb-offsets.sym: Add PID.
5346
5347 2004-03-10  Andreas Schwab  <schwab@suse.de>
5348
5349         * sysdeps/ia64/tcb-offsets.sym: Add PID.
5350         * sysdeps/unix/sysv/linux/ia64/vfork.S: New file.
5351         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Properly handle PID cache.
5352
5353 2004-03-09  Jakub Jelinek  <jakub@redhat.com>
5354
5355         * tst-cancel20.c (do_one_test): Clear in_sh_body first.
5356         * tst-cancel21.c (do_one_test): Likewise.
5357         Reported by Gordon Jin <gordon.jin@intel.com>.
5358
5359 2004-02-09  Jakub Jelinek  <jakub@redhat.com>
5360
5361         * sysdeps/unix/sysv/linux/i386/vfork.S (SAVE_PID): Negate PID
5362         if non-zero and set to INT_MIN if zero.
5363         * sysdeps/unix/sysv/linux/x86_64/vfork.S (SAVE_PID): Likewise.
5364         * sysdeps/unix/sysv/linux/i386/pt-vfork.S: Include tcb-offsets.h.
5365         (SAVE_PID, RESTORE_PID): Define.
5366         (__vfork): Use it.
5367         * sysdeps/unix/sysv/linux/x86_64/pt-vfork.S: Include tcb-offsets.h.
5368         Use relative path to avoid including NPTL i386/vfork.S.
5369         (SAVE_PID, RESTORE_PID): Define.
5370         * sysdeps/unix/sysv/linux/raise.c: Include limits.h.
5371         (raise): Handle THREAD_SELF->pid INT_MIN the same as 0.
5372         * Makefile (tests): Add tst-vfork1, tst-vfork2, tst-vfork1x and
5373         tst-vfork2x.
5374         (tests-reverse): Add tst-vfork1x and tst-vfork2x.
5375         * tst-vfork1.c: New test.
5376         * tst-vfork2.c: New test.
5377         * tst-vfork1x.c: New test.
5378         * tst-vfork2x.c: New test.
5379
5380 2004-03-08  Ulrich Drepper  <drepper@redhat.com>
5381
5382         * sysdeps/i386/tcb-offsets.sym: Add PID.
5383         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
5384         * sysdeps/unix/sysv/linux/i386/vfork.S: New file.
5385         * sysdeps/unix/sysv/linux/x86_64/vfork.S: New file.
5386
5387 2004-03-08  Steven Munroe  <sjmunroe@us.ibm.com>
5388
5389         * sysdeps/unix/sysv/linux/powerpc/Versions: Remove leading tabs.
5390
5391 2004-03-08  H.J. Lu  <hongjiu.lu@intel.com>
5392
5393         * sysdeps/s390/tls.h (INIT_SYSINFO): _dl_sysinfo is now in
5394         _rtld_global_ro.
5395
5396 2004-03-07  Ulrich Drepper  <drepper@redhat.com>
5397
5398         * sysdeps/ia64/tls.h (INIT_SYSINFO): _dl_sysinfo is now in
5399         _rtld_global_ro.
5400
5401         * tst-once4.c: Remove unnecessary macro definition.
5402
5403         * tst-mutex7.c (do_test): Limit thread stack size.
5404         * tst-once2.c (do_test): Likewise.
5405         * tst-tls3.c (do_test): Likewise.
5406         * tst-tls1.c (do_test): Likewise.
5407         * tst-signal3.c (do_test): Likewise.
5408         * tst-kill6.c (do_test): Likewise.
5409         * tst-key4.c (do_test): Likewise.
5410         * tst-join4.c (do_test): Likewise.
5411         * tst-fork1.c (do_test): Likewise.
5412         * tst-context1.c (do_test): Likewise.
5413         * tst-cond2.c (do_test): Likewise.
5414         * tst-cond10.c (do_test): Likewise.
5415         * tst-clock2.c (do_test): Likewise.
5416         * tst-cancel10.c (do_test): Likewise.
5417         * tst-basic2.c (do_test): Likewise.
5418         * tst-barrier4.c (do_test): Likewise.
5419
5420 2004-03-05  Ulrich Drepper  <drepper@redhat.com>
5421
5422         * sysdeps/i386/tls.h: Use GLRO instead of GL where appropriate.
5423
5424 2004-03-01  Ulrich Drepper  <drepper@redhat.com>
5425
5426         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5427         (__pthread_cond_timedwait): Optimize wakeup test.
5428         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
5429         (__pthread_cond_wait): Likewise.
5430         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
5431         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
5432         Likewise.
5433
5434 2004-02-29  Ulrich Drepper  <drepper@redhat.com>
5435
5436         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
5437         (__lll_mutex_lock_wait): Optimize a bit more.  Just one copy of
5438         the atomic instruction needed.
5439         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
5440         (__lll_mutex_lock_wait): Likewise.
5441
5442 2004-02-28  Ulrich Drepper  <drepper@redhat.com>
5443
5444         * Makefile (tests): Add tst-cond14 and tst-cond15.
5445         * tst-cond14.c: New file.
5446         * tst-cond15.c: New file.
5447
5448 2004-02-27  Ulrich Drepper  <drepper@redhat.com>
5449
5450         * sysdeps/pthread/createthread.c (create_thread): Remove use of
5451         CLONE_STOPPED.  We cannot use SIGCONT which means CLONE_STOPPED
5452         needs to be implemented differently to be useful.
5453
5454 2004-02-26  Ulrich Drepper  <drepper@redhat.com>
5455
5456         * pthread_attr_setschedparam.c: Don't test priority against limits
5457         here.  Set ATTR_FLAG_SCHED_SET flag.
5458         * pthread_attr_setschedpolicy.c: Set ATTR_FLAG_POLICY_SET flag.
5459         * pthread_create.c (__pthread_create_2_1): Copy scheduling attributes
5460         from parent thread to child.  If attribute is used and scheduling
5461         parameters are not inherited, copy parameters from attribute or
5462         compute them.  Check priority value.
5463         * pthread_getschedparam.c: If the parameters aren't known yet get
5464         them from the kernel.
5465         * pthread_setschedparam.c: Set ATTR_FLAG_SCHED_SET and
5466         ATTR_FLAG_POLICY_SET flag for thread.
5467         * sysdeps/unix/sysv/linux/internaltypes.h: Define ATTR_FLAG_SCHED_SET
5468         and ATTR_FLAG_POLICY_SET.
5469
5470         * sysdeps/pthread/createthread.c: Use tgkill if possible.
5471
5472         * pthread_attr_getstackaddr.c (__pthread_attr_getstackaddr): Don't
5473         fail if stack address hasn't been set.  Just return 0.
5474
5475 2004-02-25  Ulrich Drepper  <drepper@redhat.com>
5476
5477         * Makefile (tests-nolibpthread): Add tst-unload.  Don't link with
5478         libpthread for the files in this list.
5479         (CFLAGS-tst-unload): Removed.
5480         * tst-unload.c (do_test): Don't use complete path for
5481         LIBPHREAD_SO.
5482
5483         * Makefile: Define sonames for tst-tls5mod, tst-_res1mod1, and
5484         tst-_res1mod2.
5485
5486 2004-02-22  Ulrich Drepper  <drepper@redhat.com>
5487
5488         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
5489         (__lll_mutex_lock_wait): Rewrite so that only one locked memory
5490         operation per round is needed.
5491         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
5492         (__lll_mutex_lock_wait): Likewise.
5493
5494 2004-02-20  Ulrich Drepper  <drepper@redhat.com>
5495
5496         * tst-cancel9.c (cleanup): Don't print to stderr.
5497
5498 2004-02-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5499
5500         * sysdeps/sh/jmpbuf-unwind.h (_JMPBUF_UNWINDS_ADJ): Fix variable name.
5501
5502 2004-02-20  Jakub Jelinek  <jakub@redhat.com>
5503
5504         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
5505         (__syscall_error_handler2): Call CDISABLE.
5506         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
5507         (__syscall_error_handler2): Call CDISABLE.
5508
5509         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
5510         Release lock before the loop, don't reacquire it.
5511
5512         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h (DL_ARGV_NOT_RELRO): Define.
5513
5514 2004-02-19  Andreas Schwab  <schwab@suse.de>
5515
5516         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
5517         Fix last change.
5518
5519 2004-02-18  Ulrich Drepper  <drepper@redhat.com>
5520
5521         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
5522         (pthread_barrier_wait): After wakeup, release lock only when the
5523         last thread stopped using the barrier object.
5524         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S
5525         (pthread_barrier_wait): Likewise.
5526         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
5527         Likewise.
5528         * Makefile (tests): Add tst-barrier4.
5529         * tst-barrier4.c: New file.
5530
5531         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5532         (__pthread_cond_timedwait): Perform timeout test while holding
5533         internal lock to prevent wakeup race.
5534         Patch by Dinakar Guniguntala <dgunigun@in.ibm.com>.
5535         * sysdeps/pthread/pthread_cond_timedwait.c
5536         (__pthread_cond_timedwait): Likewise.
5537         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
5538         (__pthread_cond_timedwait): Likewise.
5539
5540 2004-02-18  Jakub Jelinek  <jakub@redhat.com>
5541
5542         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
5543         (__pthread_rwlock_unlock): Access WRITER as 32-bit value.
5544         * Makefile (tests): Add tst-rwlock13.
5545         * tst-rwlock13.c: New test.
5546
5547 2004-02-16  Ulrich Drepper  <drepper@redhat.com>
5548
5549         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5550         (__condvar_tw_cleanup): Little optimization.
5551         Patch by Dinakar Guniguntala <dgunigun@in.ibm.com>.
5552
5553 2004-02-16  Steven Munroe  <sjmunroe@us.ibm.com>
5554
5555         * sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: Replace libc with
5556         libpthread as "lib" parameter to SHLIB_COMPAT.
5557         (__novmx_siglongjmp): Fix typo in function name.
5558         (__novmx_longjmp): Fix typo in function name.
5559
5560 2004-02-13  Ulrich Drepper  <drepper@redhat.com>
5561
5562         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Add a
5563         __builtin_expect.
5564
5565         * sysdeps/generic/pt-longjmp.c: Moved to...
5566         * sysdeps/pthread/pt-longjmp.c: ...here.  New file.
5567
5568 2004-01-29  Steven Munroe  <sjmunroe@us.ibm.com>
5569
5570         * Makefile (libpthread-routines): Add pt-cleanup.
5571         * pt-longjmp.c: Removed.
5572         * pt-cleanup.c: Copied __pthread_cleanup_upto to here. New file.
5573         * sysdeps/generic/pt-longjmp.c: Copied longjmp to here. New file.
5574         * sysdeps/unix/sysv/linux/powerpc/Versions: New file.
5575         Version longjmp, siglongjmp for GLIBC_2.3.4.
5576         * sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: New File.
5577
5578 2004-02-13  Ulrich Drepper  <drepper@redhat.com>
5579
5580         * sysdeps/pthread/pthread_cond_timedwait.c
5581         (__pthread_cond_timedwait): Optimize.  Drop internal lock earlier.
5582         Reuse code.  Add __builtin_expects.
5583
5584         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5585         (__pthread_cond_timedwait): Get internal lock in case timeout has
5586         passed before the futex syscall.
5587         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
5588
5589 2004-01-20  Ulrich Drepper  <drepper@redhat.com>
5590
5591         * allocatestack.c: Pretty printing.
5592
5593         * sysdeps/pthread/createthread.c (create_thread): Don't add
5594         CLONE_DETACHED bit if it is not necessary.
5595
5596 2004-01-16  Ulrich Drepper  <drepper@redhat.com>
5597
5598         * pthread_getattr_np.c: Include ldsodefs.h.
5599
5600 2004-01-16  Richard Henderson  <rth@redhat.com>
5601
5602         * allocatestack.c: Don't declare __libc_stack_end.
5603         * init.c (__pthread_initialize_minimal_internal): Likewise.
5604         * pthread_getattr_np.c (pthread_getattr_np): Likewise.
5605
5606 2004-01-15  Richard Henderson  <rth@redhat.com>
5607
5608         * sysdeps/alpha/tls.h (tcbhead_t): Add private.
5609         (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN, TLS_TCB_SIZE,
5610         TLS_PRE_TCB_SIZE, TLS_TCB_ALIGN, INSTALL_DTV, INSTALL_NEW_DTV,
5611         GET_DTV, THREAD_DTV, THREAD_SELF, DB_THREAD_SELF): Match ia64.
5612         (TLS_TCB_OFFSET, THREAD_ID, NO_TLS_OFFSET): Remove.
5613         (THREAD_GETMEM, THREAD_GETMEM_NC): Simplify.
5614         (THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
5615         * sysdeps/unix/sysv/linux/alpha/createthread.c (TLS_VALUE): Match ia64.
5616
5617 2004-01-14  Ulrich Drepper  <drepper@redhat.com>
5618
5619         * init.c (pthread_functions): Make array const.
5620
5621 2004-01-13  Ulrich Drepper  <drepper@redhat.com>
5622
5623         * allocatestack.c (__make_stacks_executable): Change interface.
5624         Check parameters.  Pass parameter on to libc counterpart.
5625         * pthreadP.h: Change declaration.
5626
5627 2004-01-13  Richard Henderson  <rth@redhat.com>
5628
5629         * pthread_attr_setstack.c (__old_pthread_attr_setstack): Use
5630         prototype form.
5631         * pthread_attr_setstacksize.c (__old_pthread_attr_setstacksize):
5632         Likewise.
5633
5634         * sysdeps/alpha/Makefile: New file.
5635         * sysdeps/alpha/tcb-offsets.sym: New file.
5636         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (SINGLE_THREAD_P):
5637         Use MULTIPLE_THREADS_OFFSET to implement !libpthread !libc version.
5638
5639         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Rewrite based
5640         on powerpc version.
5641
5642 2004-01-08  Jakub Jelinek  <jakub@redhat.com>
5643
5644         * Makefile (tests): Add tst-backtrace1.
5645         * tst-backtrace1.c: New test.
5646
5647 2003-12-11  Ulrich Weigand  <uweigand@de.ibm.com>
5648
5649         * sysdeps/alpha/tls.h (DB_THREAD_SELF): Pass bit size of thread
5650         register as second parameter to the REGISTER macro.
5651         * sysdeps/ia64/tls.h (DB_THREAD_SELF): Likewise.
5652         * sysdeps/powerpc/tls.h (DB_THREAD_SELF): Likewise.
5653         * sysdeps/sh/tls.h (DB_THREAD_SELF): Likewise.
5654         * sysdeps/sparc/tls.h (DB_THREAD_SELF): Likewise.
5655         * sysdeps/s390/tls.h (DB_THREAD_SELF): Pass __WORDSIZE as bit size
5656         of thread register as second parameter to REGISTER macro in 64 case.
5657
5658 2004-01-03  Ulrich Drepper  <drepper@redhat.com>
5659
5660         * sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Removed.
5661         (CFLAGS-getpid.o): Defined.
5662         (CFLAGS-getpid.os): Defined.
5663
5664 2003-12-31  Ulrich Drepper  <drepper@redhat.com>
5665
5666         * pthread_getattr_np.c (pthread_getattr_np): Make sure stack info
5667         returned for main thread does not overlap with any other VMA.
5668         Patch by Jakub Jelinek.
5669
5670 2003-12-29  Jakub Jelinek  <jakub@redhat.com>
5671
5672         * tst-raise1.c: Include stdio.h.
5673
5674 2003-12-23  Jakub Jelinek  <jakub@redhat.com>
5675
5676         * sysdeps/unix/sysv/linux/raise.c (raise): Protect pid = selftid
5677         setting with __ASSUME_TGKILL || defined __NR_tgkill.
5678         If pid is 0, set it to selftid.
5679         * sysdeps/unix/sysv/linux/getpid.c (really_getpid): Make inline.
5680         Don't set self->pid but self->tid.  If self->pid == 0 and self->tid
5681         != 0, return self->tid without doing a syscall.
5682         * descr.h (struct pthread): Move pid field after tid.
5683
5684         * Makefile (tests): Add tst-raise1.
5685         * tst-raise1.c: New file.
5686
5687 2003-12-23  Roland McGrath  <roland@redhat.com>
5688
5689         * tst-oddstacklimit.c: New file.
5690         * Makefile (tests): Add it.
5691         (tst-oddstacklimit-ENV): New variable.
5692
5693         * init.c (__pthread_initialize_minimal_internal): Round stack rlimit
5694         value up to page size for __default_stacksize.
5695
5696 2003-12-21  Ulrich Drepper  <drepper@redhat.com>
5697
5698         * Makefile (tests): Add tst-eintr5.
5699         * tst-eintr5.c: New file.
5700
5701         * eintr.c (eintr_source): Prevent sending signal to self.
5702
5703         * tst-eintr2.c (tf1): Improve error message.
5704
5705 2003-12-20  Ulrich Drepper  <drepper@redhat.com>
5706
5707         * sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Define.
5708         * sysdeps/unix/sysv/linux/getpid.c: New file.
5709         * pthread_cancel.c: Add comment explaining use of PID field.
5710         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
5711         * pthread_getattr_np.c: Use abs() when comparing PID and TID fields.
5712         * sysdeps/unix/sysv/linux/fork.c: Negate PID field of parent
5713         temporarily to signal the field must not be relied on and updated
5714         by getpid().
5715         * sysdeps/unix/sysv/linux/pt-raise.c: Handle case where PID is
5716         temporarily negative.
5717         * sysdeps/unix/sysv/linux/raise.c: Likewise.
5718
5719 2003-12-19  Ulrich Drepper  <drepper@redhat.com>
5720
5721         * eintr.c (setup_eintr): Add new parameter.  Pass to thread function.
5722         (eintr_source): If ARG != NULL, use pthread_kill.
5723         * tst-eintr1.c: Adjust for this change.
5724         * tst-eintr2.c: Likewise.
5725         * Makefile (tests): Add tst-eintr3 and tst-eintr4.
5726         * tst-eintr3.c: New file.
5727         * tst-eintr4.c: New file.
5728
5729 2003-12-19  Jakub Jelinek  <jakub@redhat.com>
5730
5731         * libc-cancellation.c (__libc_enable_asynccancel): Don't cancel
5732         if CANCELSTATE_BITMASK is set.
5733         * sysdeps/pthread/librt-cancellation.c (__librt_enable_asynccancel):
5734         Likewise.
5735
5736         * Makefile (tests): Add tst-cancel22 and tst-cancel23.
5737         (tests-reverse): Add tst-cancel23.
5738         * tst-cancel22.c: New test.
5739         * tst-cancel23.c: New test.
5740
5741 2003-12-18  Ulrich Drepper  <drepper@redhat.com>
5742
5743         * tst-eintr1.c: Better error messages.
5744
5745         * Makefile (tests): Add tst-eintr2.
5746         * tst-eintr2.c: New file.
5747
5748 2003-12-18  Jakub Jelinek  <jakub@redhat.com>
5749
5750         * Makefile (tests): Add tst-cancel21 and tst-cancelx21.
5751         (CFLAGS-tst-cancelx21.c): Set.
5752         * tst-cancel21.c: New test.
5753         * tst-cancelx21.c: New test.
5754
5755         * unwind.c (FRAME_LEFT): Add adj argument.  Subtract it from each
5756         comparison operand.
5757         (unwind_stop): Use _JMPBUF_CFA_UNWINDS_ADJ macro instead of
5758         _JMPBUF_CFA_UNWINDS.  Adjust FRAME_LEFT invocations.
5759         * pt-longjmp.c: Include jmpbuf-unwind.h.
5760         (__pthread_cleanup_upto): Use _JMPBUF_UNWINDS_ADJ macro instead of
5761         _JMPBUF_UNWINDS.  Adjust compared pointers.
5762         * init.c (__pthread_initialize_minimal_internal): Initialize
5763         pd->stackblock_size.
5764         * sysdeps/pthread/jmpbuf-unwind.h: Removed.
5765         * sysdeps/alpha/jmpbuf-unwind.h: New file.
5766         * sysdeps/i386/jmpbuf-unwind.h: New file.
5767         * sysdeps/powerpc/jmpbuf-unwind.h: New file.
5768         * sysdeps/s390/jmpbuf-unwind.h: New file.
5769         * sysdeps/sh/jmpbuf-unwind.h: New file.
5770         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: New file.
5771         * sysdeps/x86_64/jmpbuf-unwind.h: New file.
5772         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Include stdint.h.
5773         (_JMPBUF_CFA_UNWINDS): Remove.
5774         (_JMPBUF_CFA_UNWINDS_ADJ, _JMPBUF_UNWINDS_ADJ): Define.
5775
5776 2003-12-12  Jakub Jelinek  <jakub@redhat.com>
5777
5778         * Makefile (tests): Add tst-cancel20 and tst-cancelx20.
5779         (CFLAGS-tst-cancelx20.c): Set.
5780         * tst-cancel20.c: New test.
5781         * tst-cancelx20.c: New test.
5782
5783 2003-12-17  Ulrich Drepper  <drepper@redhat.com>
5784
5785         * init.c (__pthread_initialize_minimal_internal): Don't treat
5786         architectures with separate register stack special here when
5787         computing default stack size.
5788
5789 2003-12-17  Roland McGrath  <roland@redhat.com>
5790
5791         * Makefile (tst-cancelx7-ARGS): New variable.
5792         Reportd by Greg Schafer <gschafer@zip.com.au>.
5793
5794 2003-12-17  Jakub Jelinek  <jakub@redhat.com>
5795
5796         * Makefile (tests): Add tst-stack3.  Depend on $(objpfx)tst-stack3-mem.
5797         (generated): Add tst-stack3.mtrace and tst-stack3-mem.
5798         (tst-stack3-ENV): Set.
5799         ($(objpfx)tst-stack3-mem): New.
5800         * tst-stack3.c: New test.
5801
5802 2003-12-10  David Mosberger  <davidm@hpl.hp.com>
5803
5804         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c (_init_EPILOG_BEGINS):
5805         Add unwind directives.  Drop unused .regstk directive.
5806         (_fini_EPILOG_BEGINS): Add unwind directives.
5807
5808 2003-12-11  Ulrich Drepper  <drepper@redhat.com>
5809
5810         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
5811         Assume parameter is a pointer.
5812         (lll_futex_wake): Likewise.
5813         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_futex_wait):
5814         Likewise.
5815         (lll_futex_wake): Likewise.
5816         Reported by Boris Hu.
5817         * sysdeps/unix/sysv/linux/unregister-atfork.c
5818         (__unregister_atfork): Pass pointer to refcntr to lll_futex_wait.
5819
5820         * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Simplify a bit.
5821
5822 2003-12-10  Ulrich Drepper  <drepper@redhat.com>
5823
5824         * sysdeps/pthread/bits/libc-lock.h (__rtld_lock_initialize): Define.
5825         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Call
5826         __rtld_lock_initialize for ld.so lock.
5827         Patch in part by Adam Li <adam.li@intel.com>.
5828
5829 2003-12-02  David Mosberger  <davidm@hpl.hp.com>
5830
5831         * Makefile (link-libc-static): Remove -lgcc_eh---it's already mentioned
5832         in $(gnulib).  Also, remove stale comment.
5833
5834 2003-11-12  David Mosberger  <davidm@hpl.hp.com>
5835
5836         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Take
5837         advantage of new syscall stub and optimize accordingly.
5838
5839         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__NR_futex): Rename
5840         from SYS_futex, to match expectations of
5841         sysdep.h:DO_INLINE_SYSCALL.
5842         (lll_futex_clobbers): Remove.
5843         (lll_futex_timed_wait): Rewrite in terms of DO_INLINE_SYSCALL.
5844         (lll_futex_wake): Likewise.
5845         (lll_futex_requeue): Likewise.
5846         (__lll_mutex_trylock): Rewrite to a macro, so we can include this
5847         file before DO_INLINE_SYSCALL is defined (proposed by Jakub
5848         Jelinek).
5849         (__lll_mutex_lock): Likewise.
5850         (__lll_mutex_cond_lock): Likewise.
5851         (__lll_mutex_timed_lock): Likewise.
5852         (__lll_mutex_unlock): Likewise.
5853         (__lll_mutex_unlock_force): Likewise.
5854
5855         * sysdeps/ia64/tls.h: Move declaration of __thread_self up so it
5856         comes before the include of <sysdep.h>.
5857         (THREAD_SELF_SYSINFO): New macro.
5858         (THREAD_SYSINFO): Likewise.
5859         (INIT_SYSINFO): New macro.
5860         (TLS_INIT_TP): Call INIT_SYSINFO.
5861
5862         * sysdeps/ia64/tcb-offsets.sym: Add SYSINFO_OFFSET.
5863
5864         * sysdeps/pthread/createthread.c (create_thread): Use
5865         THREAD_SELF_SYSINFO and THREAD_SYSINFO instead of open code.
5866         * allocatestack.c (allocate_stack): Use THREAD_SYSINFO and
5867         THREAD_SELF_SYSINFO instead of open code.
5868         * sysdeps/i386/tls.h (THREAD_SELF_SYSINFO): New macro.
5869         (THREAD_SYSINFO): Likewise.
5870
5871         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: New file.
5872
5873         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Work around gas problem.
5874
5875 2003-12-06  Ulrich Drepper  <drepper@redhat.com>
5876
5877         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Use .init_array
5878         instead of .init.  Patch by David Mosberger.
5879
5880 2003-11-30  Thorsten Kukuk  <kukuk@suse.de>
5881
5882         * sysdeps/pthread/configure.in: Remove broken declaration in C
5883         cleanup handling check.
5884
5885 2003-11-30  Andreas Jaeger  <aj@suse.de>
5886
5887         * Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time).
5888         * sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s):
5889         Likewise.
5890
5891 2003-11-27  Jakub Jelinek  <jakub@redhat.com>
5892
5893         * sysdeps/unix/sysv/linux/internaltypes.h (ATTR_FLAG_OLDATTR): Define.
5894         * pthread_attr_destroy.c: Include shlib-compat.h.
5895         (__pthread_attr_destroy): Return immediately if ATTR_FLAG_OLDATTR
5896         is set in iattr->flags.
5897         * pthread_attr_init.c (__pthread_attr_init_2_0): Set ATTR_FLAG_OLDATTR.
5898
5899 2003-11-21  Jakub Jelinek  <jakub@redhat.com>
5900
5901         * Makefile (distribute): Add tst-cleanup4aux.c.
5902
5903         * tst-cond12.c (prepare): Add prototype.  Move after test-skeleton.c
5904         include.
5905
5906 2003-11-21  Ulrich Drepper  <drepper@redhat.com>
5907
5908         * tst-cond12.c (do_test): If USE_COND_SIGNAL is defined, use
5909         pthread_cond_signal.
5910
5911         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Don't
5912         store mutex address if the current value is ~0l.
5913         * sysdeps/pthread/pthread_cond_timedwait.c
5914         (__pthread_cond_timedwait): Likewise.
5915         * sysdeps/pthread/pthread_cond_broadcast.c
5916         (__pthread_cond_broadcast): Don't use requeue for pshared
5917         condvars.
5918
5919         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
5920         (__pthread_cond_wait): Don't store mutex address if the current
5921         value is ~0l.
5922         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
5923         (__pthread_cond_timedwait): Likewise.
5924         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
5925         (__pthread_cond_broadcast): Don't use requeue for pshared
5926         condvars.
5927
5928         * pthread_cond_init.c (__pthread_cond_init): Initialize __mutex
5929         element with ~0l for pshared condvars, with NULL otherwise.
5930
5931         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
5932         (__pthread_cond_wait): Don't store mutex address if the current
5933         value is ~0l.
5934         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5935         (__pthread_cond_timedwait): Likewise.
5936         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
5937         (__pthread_cond_broadcast): Don't use requeue for pshared
5938         condvars.
5939
5940         * Makefile: Add rules to build and run tst-cond12 and tst-cond13.
5941         * tst-cond12.c: New file.
5942         * tst-cond13.c: New file.
5943
5944 2003-11-17  Ulrich Drepper  <drepper@redhat.com>
5945
5946         * sysdeps/pthread/configure.in: Make missing forced unwind support
5947         fatal.
5948
5949 2003-11-11  Ulrich Drepper  <drepper@redhat.com>
5950
5951         * pthreadP.h: Don't declare __pthread_unwind as weak inside libpthread.
5952
5953 2003-11-06  Ulrich Drepper  <drepper@redhat.com>
5954
5955         * Makefile: Add magic to clean up correctly.
5956
5957 2003-11-05  Jakub Jelinek  <jakub@redhat.com>
5958
5959         * unwind.c (FRAME_LEFT): Define.
5960         (unwind_stop): Handle old style cleanups here.
5961         (__pthread_unwind): Handle old style cleanups only if
5962         !HAVE_FORCED_UNWIND.
5963         * Makefile (tests): Add tst-cleanup4 and tst-cleanupx4.
5964         (CFLAGS-tst-cleanupx4.c): Add -fexceptions.
5965         ($(objpfx)tst-cleanup4): Depend on $(objpfx)tst-cleanup4aux.o.
5966         ($(objpfx)tst-cleanupx4): Likewise.
5967         * tst-cleanup4.c: New test.
5968         * tst-cleanup4aux.c: New.
5969         * tst-cleanupx4.c: New test.
5970
5971 2003-11-04  Ulrich Drepper  <drepper@redhat.com>
5972
5973         * sysdeps/pthread/bits/stdio-lock.h: Use lll_*lock instead of
5974         lll_mutex_*lock macros to skip atomic operations on some archs.
5975
5976 2003-11-03  Ulrich Drepper  <drepper@redhat.com>
5977
5978         * sysdeps/pthread/tst-timer.c (main): Initialize
5979         sigev2.sigev_value as well.
5980
5981 2003-10-15  Roland McGrath  <roland@redhat.com>
5982
5983         * sysdeps/pthread/configure.in: Barf if visibility attribute support
5984         is missing.
5985         * sysdeps/pthread/configure: Regenerated.
5986
5987 2003-10-09  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
5988
5989         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Completely revamp the
5990         locking macros.  No distinction between normal and mutex locking
5991         anymore.
5992         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Rewrite mutex locking.
5993         Merge bits from lowlevelmutex.S we still need.
5994         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Remove.
5995         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Likewise.
5996         * sysdeps/unix/sysv/linux/sh/not-cancel.h: New file.
5997         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Adjust for
5998         new mutex implementation.
5999         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Likewise.
6000         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise.
6001         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
6002         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
6003         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
6004         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
6005         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
6006         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
6007         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
6008         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (PSEUDO): Also defined
6009         symbol for entry point to avoid cancellation.
6010
6011 2003-10-07  Jakub Jelinek  <jakub@redhat.com>
6012
6013         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Backout 2003-10-02
6014         changes.
6015         (SAVE_OLDTYPE_0): Fix a typo.
6016
6017 2003-10-03  Ulrich Drepper  <drepper@redhat.com>
6018
6019         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once):
6020         Check __sigsetjmp return value.  Reported by Daniel Jacobowitz.
6021
6022 2003-10-02  Ulrich Drepper  <drepper@redhat.com>
6023
6024         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (DOCARGS_1): Use
6025         correct offset.
6026
6027 2003-10-02  Jakub Jelinek  <jakub@redhat.com>
6028
6029         * Makefile (tests): Add tst-cancel19.
6030         * tst-cancel19.c: New test.
6031
6032 2003-10-02  Ulrich Drepper  <drepper@redhat.com>
6033
6034         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Fix saving and
6035         restoring of the old cancellation type.
6036
6037 2003-09-30  Jakub Jelinek  <jakub@redhat.com>
6038
6039         * sysdeps/pthread/malloc-machine.h: Remove misleading comment.
6040
6041 2003-09-27  Wolfram Gloger  <wg@malloc.de>
6042
6043         * sysdeps/pthread/malloc-machine.h: New file
6044
6045 2003-09-24  Roland McGrath  <roland@redhat.com>
6046
6047         * allocatestack.c (__make_stacks_executable): Don't ignore return
6048         value from _dl_make_stack_executable.
6049
6050 2003-09-24  Ulrich Drepper  <drepper@redhat.com>
6051
6052         * allocatestack.c (__make_stacks_executable): Also change
6053         permission of the currently unused stacks.
6054
6055         * allocatestack.c (change_stack_perm): Split out from
6056         __make_stacks_executable.
6057         (allocate_stack): If the required permission changed between the time
6058         we started preparing the stack and queueing it, change the permission.
6059         (__make_stacks_executable): Call change_stack_perm.
6060
6061         * Makefile: Build tst-execstack-mod locally.
6062         * tst-execstack-mod.c: New file.
6063
6064 2003-09-23  Jakub Jelinek  <jakub@redhat.com>
6065
6066         * Makefile (tests): Only add tst-execstack if have-z-execstack is yes.
6067
6068 2003-09-23  Roland McGrath  <roland@redhat.com>
6069
6070         * tst-execstack.c: New file.
6071         * Makefile (tests): Add it.
6072         ($(objpfx)tst-execstack, $(objpfx)tst-execstack.out): New targets.
6073         (LDFLAGS-tst-execstack): New variable.
6074
6075         * allocatestack.c (allocate_stack): Use GL(dl_stack_flags) to decide
6076         whether to use PROT_EXEC for stack mmap.
6077         (__make_stacks_executable): New function.
6078         * pthreadP.h: Declare it.
6079         * init.c (__pthread_initialize_minimal_internal): Set
6080         GL(dl_make_stack_executable_hook) to that.
6081
6082 2003-09-22  Ulrich Drepper  <drepper@redhat.com>
6083
6084         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Adjust for latest
6085         recommendation from AMD re avoidance of lock prefix.
6086
6087 2003-09-22  Jakub Jelinek  <jakub@redhat.com>
6088
6089         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait): Use
6090         lll_futex_timed_wait instead of lll_futex_wait.
6091         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Removed.
6092         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: Removed.
6093         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: Removed.
6094         * sysdeps/unix/sysv/linux/s390/libc-lowlevelmutex.c: Removed.
6095         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Removed.
6096         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Removed.
6097         * sysdeps/unix/sysv/linux/s390/sem_post.c: Removed.
6098         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Removed.
6099         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Include atomic.h.
6100         Completely revamp the locking macros.  No distinction between
6101         normal and mutex locking anymore.
6102         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
6103         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_lock_wait,
6104         __lll_lock_timedwait): Fix prototypes.
6105         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_lock_wait,
6106         __lll_lock_timedwait): Likewise.
6107         (lll_mutex_lock, lll_mutex_cond_lock): Use _val instead of _bool
6108         macros, add __builtin_expect.
6109         (lll_mutex_timedlock): Likewise.  Fix return value.
6110         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Removed.
6111         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevelmutex.S: Removed.
6112         * sysdeps/unix/sysv/linux/i386/i586/lowlevelmutex.S: Removed.
6113         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevelmutex.S: Removed.
6114         * sysdeps/unix/sysv/linux/i386/i686/lowlevelmutex.S: Removed.
6115         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevelmutex.S: Removed.
6116         * sysdeps/unix/sysv/linux/lowlevelmutex.c: Removed.
6117         * sysdeps/unix/sysv/linux/libc-lowlevelmutex.c: Removed.
6118
6119 2003-09-22  Ulrich Drepper  <drepper@redhat.com>
6120
6121         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
6122         (__lll_mutex_lock_wait): Minor optimization to avoid one atomic
6123         operation if possible.
6124
6125         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Don't play tricks
6126         like jumping over the lock prefix.
6127
6128 2003-09-21  Ulrich Drepper  <drepper@redhat.com>
6129
6130         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Completely revamp the
6131         locking macros.  No distinction between normal and mutex locking
6132         anymore.
6133         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
6134         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
6135         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
6136         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Rewrite mutex
6137         locking.  Merge bits from lowlevelmutex.S we still need.
6138         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
6139         * sysdeps/unix/sysv/linux/lowlevellock.c: Likewise.
6140         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Removed.
6141         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Removed.
6142         * Makefile (routines): Remove libc-lowlevelmutex.
6143         (libpthread-rountines): Remove lowlevelmutex.
6144         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Adjust
6145         for new mutex implementation.
6146         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
6147         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
6148         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
6149         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
6150         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
6151         Likewise.
6152         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
6153         Likewise.
6154         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
6155         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
6156         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Likewise
6157         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
6158         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
6159         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
6160         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
6161         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
6162         Likewise.
6163         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
6164         Likewise.
6165         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Likewise.
6166         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
6167         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
6168         Don't use requeue.
6169         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
6170         * sysdeps/pthread/pthread_cond_signal.c: Don't use requeue.
6171
6172 2003-09-20  Ulrich Drepper  <drepper@redhat.com>
6173
6174         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Don't match memory
6175         in parameters of asm with output parameters.
6176
6177         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Change
6178         type of DECR parameter to int.
6179         * pthreadP.h: Adjust prototype of __pthread_mutex_unlock_usercnt.
6180
6181 2003-09-18  Jakub Jelinek  <jakub@redhat.com>
6182
6183         * tst-attr3.c (tf, do_test): Print stack start/end/size and
6184         guardsize for each thread.
6185
6186 2003-09-17  Jakub Jelinek  <jakub@redhat.com>
6187
6188         * sysdeps/pthread/pthread.h (pthread_getattr_np): Clarify usage.
6189         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
6190         (pthread_attr_setaffinity_np): Handle cpuset == NULL.
6191
6192         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
6193         (pthread_attr_getaffinity_np): Don't segfault if iattr->cpuset is
6194         NULL.
6195         * pthread_getattr_np.c: Set cpuset using pthread_getaffinity_np.
6196         * pthreadP.h (pthread_getaffinity_np): Add hidden_proto.
6197         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
6198         (pthread_getaffinity_np): Add hidden_def.
6199
6200         * Makefile (tests): Add tst-attr3.
6201         * tst-attr3.c: New test.
6202
6203         * sysdeps/i386/Makefile (CFLAGS-tst-align.c): Remove.
6204
6205 2003-09-15  Jakub Jelinek  <jakub@redhat.com>
6206
6207         * sysdeps/i386/Makefile (CFLAGS-pthread_create.c,
6208         CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
6209
6210 2003-09-17  Jakub Jelinek  <jakub@redhat.com>
6211
6212         * Makefile (CFLAGS-tst-align.c): Add $(stack-align-test-flags).
6213         * tst-align.c: Include tst-stack-align.h.
6214         (tf, do_test): Use TEST_STACK_ALIGN macro.
6215
6216 2003-09-17  Ulrich Drepper  <drepper@redhat.com>
6217
6218         * pthread_attr_init.c (__pthread_attr_init_2_0): Remove unused
6219         variable.
6220
6221 2003-09-16  Ulrich Drepper  <drepper@redhat.com>
6222
6223         * pthread_getattr_np.c (pthread_getattr_np): Correctly fill in the
6224         stack-related values for the initial thread.
6225
6226 2003-09-15  Jakub Jelinek  <jakub@redhat.com>
6227
6228         * Makefile (CFLAGS-pthread_once.c): Add $(uses-callbacks).
6229
6230 2003-09-11  Ulrich Drepper  <drepper@redhat.com>
6231
6232         * pthread_mutex_lock.c: Minor code rearrangements.
6233
6234 2003-09-05  Roland McGrath  <roland@redhat.com>
6235
6236         * pthread_create.c (__pthread_pthread_sizeof_descr): Removed.
6237         Instead, include ../nptl_db/db_info.c to do its magic.
6238         * pthread_key_create.c (__pthread_pthread_keys_max): Removed.
6239         (__pthread_pthread_key_2ndlevel_size): Likewise.
6240         * sysdeps/alpha/tls.h (DB_THREAD_SELF): New macro.
6241         * sysdeps/i386/tls.h (DB_THREAD_SELF): New macro.
6242         * sysdeps/ia64/tls.h (DB_THREAD_SELF): New macro.
6243         * sysdeps/powerpc/tls.h (DB_THREAD_SELF): New macro.
6244         * sysdeps/s390/tls.h (DB_THREAD_SELF): New macro.
6245         * sysdeps/sh/tls.h (DB_THREAD_SELF): New macro.
6246         * sysdeps/sparc/tls.h (DB_THREAD_SELF): New macro.
6247         * sysdeps/x86_64/tls.h (DB_THREAD_SELF): New macro.
6248         * sysdeps/alpha/td_ta_map_lwp2thr.c: File removed.
6249         * sysdeps/generic/td_ta_map_lwp2thr.c: File removed.
6250         * sysdeps/i386/td_ta_map_lwp2thr.c: File removed.
6251         * sysdeps/ia64/td_ta_map_lwp2thr.c: File removed.
6252         * sysdeps/powerpc/td_ta_map_lwp2thr.c: File removed.
6253         * sysdeps/s390/td_ta_map_lwp2thr.c: File removed.
6254         * sysdeps/sh/td_ta_map_lwp2thr.c: File removed.
6255         * sysdeps/sparc/td_ta_map_lwp2thr.c: File removed.
6256         * sysdeps/x86_64/td_ta_map_lwp2thr.c: File removed.
6257
6258 2003-09-08  Ulrich Drepper  <drepper@redhat.com>
6259
6260         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Change type
6261         of pthread_t to be compatible with LT.
6262         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
6263         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
6264         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
6265         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
6266         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Likewise.
6267         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
6268         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
6269
6270 2003-09-04  Ulrich Drepper  <drepper@redhat.com>
6271
6272         * sysdeps/unix/sysv/linux/i386/not-cancel.h (fcntl_not_cancel): Define.
6273
6274 2003-09-04  Jakub Jelinek  <jakub@redhat.com>
6275
6276         * unwind-forcedunwind.c: Move to...
6277         * sysdeps/pthread/unwind-forcedunwind.c: ...here.
6278         (pthread_cancel_init): Use ARCH_CANCEL_INIT if defined.
6279         * sysdeps/pthread/jmpbuf-unwind.h: New file.
6280         * sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c: New file.
6281         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: New file.
6282         * unwind.c: Include jmpbuf-unwind.h.
6283         (unwind_stop): Use _JMPBUF_CFA_UNWINDS macro.
6284
6285 2003-09-02  Jakub Jelinek  <jakub@redhat.com>
6286
6287         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: New file.
6288         * sysdeps/unix/sysv/linux/ia64/Versions (libpthread): Export
6289         pthread_attr_setstack and pthread_attr_setstacksize @@GLIBC_2.3.3.
6290         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: New file.
6291         * sysdeps/unix/sysv/linux/alpha/Versions: New file.
6292         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: New file.
6293         * sysdeps/unix/sysv/linux/sparc/Versions: New file.
6294         * pthread_attr_setstack.c (__old_pthread_attr_setstack): New function.
6295         (pthread_attr_setstack): If PTHREAD_STACK_MIN != 16384, export
6296         as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.2.
6297         * pthread_attr_setstacksize.c (__old_pthread_attr_setstacksize): New
6298         function.
6299         (pthread_attr_setstacksize): If PTHREAD_STACK_MIN != 16384, export
6300         as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.1.
6301         * Makefile (tests): Add tst-stack2.
6302         * tst-stack2.c: New test.
6303         * tst-stack1.c: Include limits.h and sys/param.h.
6304         (do_test): Set size to MAX (4 * getpagesize (), PTHREAD_STACK_MIN).
6305
6306         * pthread_condattr_setpshared.c: Include errno.h.
6307         (pthread_condattr_setpshared): Return EINVAL if pshared
6308         is neither PTHREAD_PROCESS_PRIVATE nor PTHREAD_PROCESS_SHARED.
6309
6310         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO): Also
6311         defined symbol for entry point to avoid cancellation.
6312         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO):
6313         Likewise.
6314         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
6315         Likewise.
6316         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (PSEUDO):
6317         Likewise.
6318         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h (PSEUDO):
6319         Likewise.
6320         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h (PSEUDO):
6321         Likewise.
6322         * sysdeps/unix/sysv/linux/i386/not-cancel.h (__open_nocancel,
6323         __close_nocancel, __read_nocancel, __write_nocancel,
6324         __waitpid_nocancel): Add attribute_hidden.  If not in libc.so,
6325         libpthread.so or librt.so, define to corresponding function
6326         without _nocancel suffix.
6327         * sysdeps/unix/sysv/linux/s390/not-cancel.h: New file.
6328         * sysdeps/unix/sysv/linux/powerpc/not-cancel.h: New file.
6329         * sysdeps/unix/sysv/linux/sparc/not-cancel.h: New file.
6330
6331         * sysdeps/unix/sysv/linux/x86_64/not-cancel.h: Fix a typo.
6332
6333 2003-09-02  Ulrich Drepper  <drepper@redhat.com>
6334
6335         * sysdeps/unix/sysv/linux/i386/not-cancel.h: New file.
6336         * sysdeps/unix/sysv/linux/x86_64/not-cancel.h: New file.
6337
6338         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Make sure the code
6339         in subsections has a symbol associated with it.
6340
6341         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (PSEUDO): Also
6342         defined symbol for entry point to avoid cancellation.
6343         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (PSEUDO): Likewise.
6344
6345 2003-09-01  Jakub Jelinek  <jakub@redhat.com>
6346
6347         * Makefile (tests): Add tst-tls5.
6348         (module-names): Add tst-tls5mod{,a,b,c,d,e,f}.
6349         ($(objpfx)tst-tls5mod{,a,b,c,d,e,f}.so-no-z-defs): Set to yes.
6350         ($(objpfx)tst-tls5): New.
6351         ($(objpfx)tst-tls6.out): Likewise.
6352         (tests): Depend on $(objpfx)tst-tls6.out.
6353         * tst-tls3.c: Include stdint.h and pthreaddef.h.
6354         (do_test): Check pthread_self () return value alignment.
6355         * tst-tls3mod.c: Include stdint.h and pthreaddef.h.
6356         (tf): Check pthread_self () return value alignment.
6357         * tst-tls5.c: New test.
6358         * tst-tls5.h: New.
6359         * tst-tls5mod.c: New.
6360         * tst-tls5moda.c: New.
6361         * tst-tls5modb.c: New.
6362         * tst-tls5modc.c: New.
6363         * tst-tls5modd.c: New.
6364         * tst-tls5mode.c: New.
6365         * tst-tls5modf.c: New.
6366         * tst-tls6.sh: New test.
6367
6368         * sysdeps/pthread/pthread-functions.h (struct pthread_functions): Add
6369         ptr___pthread_cond_timedwait and ptr___pthread_cond_timedwait_2_0.
6370         * init.c (pthread_functions): Initialize them.
6371         * forward.c (pthread_cond_timedwait@GLIBC_2.0,
6372         pthread_cond_timedwait@@GLIBC_2.3.2): New forwards.
6373         * Versions (libc): Export pthread_cond_timedwait@GLIBC_2.0,
6374         pthread_cond_timedwait@@GLIBC_2.3.2.
6375
6376 2003-09-01  Jakub Jelinek  <jakub@redhat.com>
6377
6378         * sysdeps/unix/sysv/linux/alpha/timer_create.c: New file.
6379         * sysdeps/unix/sysv/linux/alpha/timer_delete.c: New file.
6380         * sysdeps/unix/sysv/linux/alpha/timer_getoverr.c: New file.
6381         * sysdeps/unix/sysv/linux/alpha/timer_gettime.c: New file.
6382         * sysdeps/unix/sysv/linux/alpha/timer_settime.c: New file.
6383         * sysdeps/unix/sysv/linux/alpha/Versions: New file.
6384
6385         * sysdeps/unix/sysv/linux/alpha/aio_cancel.c: New file.
6386
6387         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Define
6388         _POSIX_THREAD_PRIORITY_SCHEDULING.
6389         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
6390
6391 2003-08-31  Ulrich Drepper  <drepper@redhat.com>
6392
6393         * sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock): Avoid
6394         nested function, use static inline function from libio.h.
6395         Code by Richard Henderson.
6396
6397         * sysdeps/pthread/bits/libc-lock.h: Mark pthread_setcancelstate as
6398         weak.
6399
6400 2003-08-30  Jakub Jelinek  <jakub@redhat.com>
6401
6402         * sysdeps/unix/sysv/linux/sparc/sparc64/Versions: New file.
6403         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c: New file.
6404         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c: New file.
6405         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c: New file.
6406         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c: New file.
6407         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c: New file.
6408         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: New file.
6409         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: New file.
6410         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: New file.
6411         * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: New file.
6412         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: New file.
6413         * sysdeps/unix/sysv/linux/sparc/pthread_once.c: New file.
6414         * sysdeps/unix/sysv/linux/sparc/pt-vfork.S: New file.
6415         * sysdeps/unix/sysv/linux/sparc/fork.c: New file.
6416         * sysdeps/unix/sysv/linux/sparc/aio_cancel.c: New file.
6417         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c: New file.
6418         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_trylock.c: New file.
6419         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_unlock.c: New file.
6420         * sysdeps/sparc/sparc32/pthread_spin_lock.c: New file.
6421         * sysdeps/sparc/sparc32/pthread_spin_trylock.c: New file.
6422         * sysdeps/sparc/sparc32/pthreaddef.h: New file.
6423         * sysdeps/sparc/sparc64/pthread_spin_lock.c: New file.
6424         * sysdeps/sparc/sparc64/pthread_spin_trylock.c: New file.
6425         * sysdeps/sparc/sparc64/pthread_spin_unlock.c: New file.
6426         * sysdeps/sparc/sparc64/pthreaddef.h: New file.
6427         * sysdeps/sparc/tls.h: New file.
6428         * sysdeps/sparc/tcb-offsets.sym: New file.
6429         * sysdeps/sparc/Makefile: New file.
6430         * sysdeps/sparc/td_ta_map_lwp2thr.c: New file.
6431         * init.c [__sparc__] (__NR_set_tid_address): Define.
6432
6433 2003-08-29  Jakub Jelinek  <jakub@redhat.com>
6434
6435         * sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock,
6436         _IO_release_lock): Define.
6437
6438 2003-08-29  Jakub Jelinek  <jakuB@redhat.com>
6439
6440         * tst-cancel4.c (tf_sigwait, tf_sigwaitinfo, tf_sigtimedwait): Add
6441         sigemptyset before sigaddset.  Reported by jreiser@BitWagon.com.
6442
6443 2003-08-27  Ulrich Drepper  <drepper@redhat.com>
6444
6445         * sysdeps/pthread/pthread.h (pthread_exit): Remove __THROW.
6446         (__pthread_cleanup_class): Add missing return types of member
6447         functions.
6448
6449 2003-08-26  Steven Munroe <sjmunroe@us.ibm.com>
6450
6451         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
6452         (lll_mutex_unlock_force): Add memory barrier between store and futex
6453         syscall.
6454
6455 2003-08-25  Ulrich Drepper  <drepper@redhat.com>
6456
6457         * tst-cancel4.c (do_test): Also unlink tempfname and remove
6458         tempmsg in first loop.
6459
6460 2003-08-18  Ulrich Drepper  <drepper@redhat.com>
6461
6462         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
6463         _POSIX_THREAD_PRIORITY_SCHEDULING.
6464         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
6465
6466 2003-08-07  Jakub Jelinek  <jakub@redhat.com>
6467
6468         * sysdeps/pthread/bits/libc-lock.h [_LIBC && SHARED]
6469         (__rtld_lock_default_lock_recursive,
6470         __rtld_lock_default_unlock_recursive): Define.
6471         [_LIBC && SHARED] (__rtld_lock_lock_recursive,
6472         __rtld_lock_unlock_recursive): Define using
6473         GL(_dl_rtld_*lock_recursive).
6474         * init.c (__pthread_initialize_minimal_internal): Initialize
6475         _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive.
6476         Lock GL(_dl_load_lock) the same number of times as
6477         GL(_dl_load_lock) using non-mt implementation was nested.
6478
6479         * pthreadP.h (__pthread_cleanup_upto): Add hidden_proto.
6480         * pt-longjmp.c (__pthread_cleanup_upto): Add hidden_def.
6481
6482 2003-08-06  Jakub Jelinek  <jakub@redhat.com>
6483
6484         * tst-cancel17.c (do_test): Make len2 maximum of page size and
6485         PIPE_BUF.
6486
6487 2003-08-07  Jakub Jelinek  <jakub@redhat.com>
6488
6489         * pthread_create.c (__pthread_create_2_0): Clear new_attr.cpuset.
6490
6491 2003-08-03  Jakub Jelinek  <jakub@redhat.com>
6492
6493         * sysdeps/pthread/createthread.c (do_clone): Move error handling
6494         to first syscall error check.  Move syscall error check for tkill
6495         into __ASSUME_CLONE_STOPPED #ifdef.
6496
6497 2003-08-02  Ulrich Drepper  <drepper@redhat.com>
6498
6499         * sysdeps/pthread/createthread.c (do_clone): If __ASSUME_CLONE_STOPPED
6500         is not defined, do explicit synchronization.
6501         (create_thread): Do not lock pd->lock here.  If __ASSUME_CLONE_STOPPED
6502         is not defined also unlock pd->lock for non-debugging case in case
6503         it is necessary.
6504         * pthread_create.c (start_thread): Always get and release pd->lock
6505         if __ASSUME_CLONE_STOPPED is not defined.
6506         (start_thread_debug): Removed.  Adjust users.
6507         * allocatestack.c (allocate_stack): Always initialize lock if
6508         __ASSUME_CLONE_STOPPED is not defined.
6509         * Makefile (tests): Add tst-sched1.
6510         * tst-sched1.c: New file.
6511
6512         * sysdeps/pthread/createthread.c (do_clone): Only use
6513         sched_setschduler and pass correct parameters.
6514
6515 2003-07-31  Jakub Jelinek  <jakub@redhat.com>
6516
6517         * sysdeps/pthread/pthread.h (pthread_attr_setstackaddr,
6518         pthread_attr_setstacksize): Change PTHREAD_STACK_SIZE to
6519         PTHREAD_STACK_MIN in comments.
6520
6521 2003-07-31  Jakub Jelinek  <jakub@redhat.com>
6522
6523         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
6524         Shut up warnings if INTERNAL_SYSCALL_ERROR_P does not use its first
6525         argument.
6526         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Likewise.
6527         * pthread_condattr_setclock.c (pthread_condattr_setclock): Likewise.
6528         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Include pthreaddef.h.
6529         (__pthread_cleanup_upto): Fix prototype.
6530         (_longjmp_unwind): Adjust caller.
6531         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_mutex_timedlock):
6532         Change second argument to const struct pointer.
6533         * tst-sem8.c (main): Remove unused s2 and s3 variables.
6534         * tst-sem9.c (main): Likewise.
6535         * unwind.c: Include string.h for strlen prototype.
6536
6537 2003-07-31  Ulrich Drepper  <drepper@redhat.com>
6538
6539         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
6540         (__pthread_cond_timedwait): Don't use cmov unless HAVE_CMOV is defined.
6541         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S:
6542         Define HAVE_CMOV.
6543         Patch by Nicholas Miell <nmiell@attbi.com>.
6544
6545 2003-07-30  Jakub Jelinek  <jakub@redhat.com>
6546
6547         * init.c (__pthread_initialize_minimal_internal): Initialize
6548         GL(dl_init_static_tls).
6549         * pthreadP.h (__pthread_init_static_tls): New prototype.
6550         * allocatestack.c (init_one_static_tls, __pthread_init_static_tls):
6551         New functions.
6552         * Makefile (tests): Add tst-tls4.
6553         (modules-names): Add tst-tls4moda and tst-tls4modb.
6554         ($(objpfx)tst-tls4): Link against libdl and libpthread.
6555         ($(objpfx)tst-tls4.out): Depend on tst-tls4moda.so and
6556         tst-tls4modb.so.
6557         * tst-tls4.c: New file.
6558         * tst-tls4moda.c: New file.
6559         * tst-tls4modb.c: New file.
6560
6561 2003-06-19  Daniel Jacobowitz  <drow@mvista.com>
6562
6563         * sysdeps/pthread/timer_create.c (timer_create): Call timer_delref
6564         before __timer_dealloc.
6565         * sysdeps/pthread/timer_routines.c (__timer_thread_find_matching):
6566         Don't call list_unlink.
6567
6568 2003-07-29  Roland McGrath  <roland@redhat.com>
6569
6570         * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules).
6571
6572 2003-07-25  Jakub Jelinek  <jakub@redhat.com>
6573
6574         * tst-cancel17.c (do_test): Check if aio_cancel failed.
6575         Don't reuse struct aiocb A if it failed.
6576         Write fpathconf (fds[1], _PC_PIPE_BUF) + 2 bytes using aio_write,
6577         not just one byte, as that does not block.
6578
6579 2003-07-22  Jakub Jelinek  <jakub@redhat.com>
6580
6581         * sysdeps/pthread/unwind-resume.c: New file.
6582         * sysdeps/pthread/Makefile (routines, shared-only-routines): Add
6583         unwind-resume in csu subdir.
6584         (CFLAGS-unwind-resume.c, CFLAGS-rt-unwind-resume.c): Compile with
6585         exceptions.
6586         (librt-sysdep_routines, librt-shared-only-routines): Add
6587         rt-unwind-resume.
6588         * sysdeps/pthread/rt-unwind-resume.c: New file.
6589         * unwind-forcedunwind.c: New file.
6590         * Makefile (libpthread-routines): Add unwind-forcedunwind.
6591         (libpthread-shared-only-routines): Likewise.
6592         (CFLAGS-unwind-forcedunwind.c): Compile with exceptions.
6593         * pthreadP.h (pthread_cancel_init): New prototype.
6594         * pthread_cancel.c (pthread_cancel): Call pthread_cancel_init.
6595
6596         * sysdeps/pthread/createthread.c (do_thread, create_thread): Make
6597         attr argument const struct pthread_attr *.
6598
6599         * res.c (__res_state): Return __resp.
6600         * descr.h: Include resolv.h.
6601         (struct pthread): Add res field.
6602         * pthread_create.c: Include resolv.h.
6603         (start_thread): Initialize __resp.
6604         * Makefile (tests): Add tst-_res1.
6605         (module-names): Add tst-_res1mod1, tst-_res1mod2.
6606         ($(objpfx)tst-_res1mod2.so): Depend on $(objpfx)tst-_res1mod1.so.
6607         ($(objpfx)tst-_res1): Depend on $(objpfx)tst-_res1mod2.so and
6608         libpthread.
6609         * tst-_res1.c: New file.
6610         * tst-_res1mod1.c: New file.
6611         * tst-_res1mod2.c: New file.
6612
6613 2003-07-21  Ulrich Drepper  <drepper@redhat.com>
6614
6615         * sysdeps/pthread/createthread.c: Don't define CLONE_STOPPED.
6616
6617         * Makefile: Define various *-no-z-defs variables for test DSOs
6618         which has undefined symbols.
6619
6620 2003-07-21  Steven Munroe  <sjmunroe@us.ibm.com>
6621
6622         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
6623         Retry if the stwcx fails to store once_control.
6624
6625 2003-07-20  Ulrich Drepper  <drepper@redhat.com>
6626
6627         * Makefile (libpthread-routines): Add pthread_attr_getaffinity and
6628         pthread_attr_setaffinity.
6629         * Versions [libpthread] (GLIBC_2.3.3): Likewise.
6630         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c: New file.
6631         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c: New file.
6632         * pthread_attr_destroy.c: Free cpuset element if allocated.
6633         * pthread_create.c: Pass iattr as additional parameter to
6634         create_thread.
6635         * sysdeps/pthread/createthread.c: If attribute is provided and
6636         a new thread is created with affinity set or scheduling parameters,
6637         start thread with CLONE_STOPPED.
6638         * sysdeps/pthread/pthread.h: Declare pthread_attr_getaffinity and
6639         pthread_attr_setaffinity.
6640         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_attr): Add
6641         cpuset element.
6642
6643 2003-07-15  Ulrich Drepper  <drepper@redhat.com>
6644
6645         * tst-tcancel-wrappers.sh: lseek and llseek are not cancelation points.
6646
6647 2003-07-14  Ulrich Drepper  <drepper@redhat.com>
6648
6649         * sysdeps/pthread/configure.in: Require CFI directives also for
6650         ppc and s390.
6651
6652 2003-07-15  Jakub Jelinek  <jakub@redhat.com>
6653
6654         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (PSEUDO):
6655         Add cfi directives.
6656
6657 2003-07-12  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
6658
6659         * sysdeps/sh/tcb-offsets.sym: Add RESULT, TID, CANCELHANDLING and
6660         CLEANUP_JMP_BUF.
6661         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Use more
6662         registers as variables.  Call __pthread_mutex_unlock_usercnt.
6663         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
6664         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Store TID
6665         not self pointer in __writer.  Compare with TID to determine
6666         deadlocks.
6667         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
6668         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S:
6669         Likewise.
6670         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S:
6671         Likewise.
6672         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Add cancellation support.
6673         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
6674         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Define all the nice
6675         macros also when compiling librt.
6676
6677 2003-07-11  Jakub Jelinek  <jakub@redhat.com>
6678
6679         * Makefile (CFLAGS-pthread_once.c): Add -fexceptions
6680         -fasynchronous-unwind-tables.
6681         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
6682         (PSEUDO): Add cfi directives.
6683         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO):
6684         Likewise.
6685         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO):
6686         Likewise.
6687
6688 2003-07-08  Jakub Jelinek  <jakub@redhat.com>
6689
6690         * pthreadP.h (__pthread_unwind_next, __pthread_register_cancel,
6691         __pthread_unregister_cancel): Add prototypes and hidden_proto.
6692         * unwind.c (__pthread_unwind_next): Add hidden_def.
6693         * cleanup.c (__pthread_register_cancel, __pthread_unregister_cancel):
6694         Likewise.
6695         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
6696         Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
6697         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
6698         Likewise.
6699         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Likewise.
6700         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
6701         Likewise.
6702         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once): Use
6703         HIDDEN_JUMPTARGET to call __pthread_register_cancel,
6704         __pthread_unregister_cancel and __pthread_unwind_next.
6705
6706 2003-07-04  Jakub Jelinek  <jakub@redhat.com>
6707
6708         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Use
6709         different symbol for the cancellation syscall wrapper and
6710         non-cancellation syscall wrapper.
6711         (PSEUDO_END): Define.
6712
6713 2003-07-05  Richard Henderson  <rth@redhat.com>
6714
6715         * sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.
6716         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_futex_wait,
6717         lll_futex_timed_wait, lll_futex_wake, lll_futex_requeue): On success
6718         return actual return value from the syscall, not 0.
6719
6720 2003-07-07  Ulrich Drepper  <drepper@redhat.com>
6721
6722         * descr.h (struct pthread): Add pid field.
6723         * allocatestack.c (allocate_stack): Initialize pid field in descriptor.
6724         (__reclaim_stacks): Likewise.
6725         * init.c (sigcancel_handler): If __ASSUME_CORRECT_SI_PID is defined
6726         also check for PID of the signal source.
6727         (__pthread_initialize_minimal_internal): Also initialize pid field
6728         of initial thread's descriptor.
6729         * pthread_cancel.c: Use tgkill instead of tkill if possible.
6730         * sysdeps/unix/sysv/linux/fork.c: Likewise.
6731         * sysdeps/unix/sysv/linux/pt-raise.c: Likewise.
6732         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
6733         * sysdeps/unix/sysv/linux/raise.c: Likewise.
6734
6735 2003-07-05  Ulrich Drepper  <drepper@redhat.com>
6736
6737         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_push): Renamed.
6738         Fix use of parameter.
6739         (__libc_cleanup_pop): Likewise.
6740
6741 2003-07-04  Ulrich Drepper  <drepper@redhat.com>
6742
6743         * init.c (sigcancel_handler): Change parameters to match handler
6744         for SA_SIGACTION.  Check signal number and code to recognize
6745         invalid invocations.
6746
6747 2003-07-03  Roland McGrath  <roland@redhat.com>
6748
6749         * sysdeps/ia64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr):
6750         Apply sizeof (struct pthread) bias to r13 value.
6751
6752 2003-07-03  Ulrich Drepper  <drepper@redhat.com>
6753
6754         * sysdeps/pthread/configure.in: Require CFI directives.
6755
6756         * sysdeps/pthread/librt-cancellation.c (__pthread_unwind): Remove
6757         definition.
6758         * pthreadP.h (__pthread_unwind): Add hidden_proto if used in
6759         libpthread compilation.
6760         * unwind.c (__pthread_unwind): Add hidden_def.
6761         * Versions (libpthread) [GLIBC_PRIVATE]: Add __pthread_unwind.
6762
6763 2003-07-01  Ulrich Drepper  <drepper@redhat.com>
6764
6765         * libc-cancellation.c (__libc_cleanup_routine): Define.
6766         * sysdeps/pthread/bits/libc-lock.h (__pthread_cleanup_push): Define.
6767         (__pthread_cleanup_pop): Define.
6768
6769 2003-07-01  Richard Henderson  <rth@redhat.com>
6770
6771         * sysdeps/alpha/elf/pt-initfini.c: New file.
6772         * sysdeps/alpha/pthread_spin_lock.S: New file.
6773         * sysdeps/alpha/pthread_spin_trylock.S: New file.
6774         * sysdeps/alpha/pthreaddef.h: New file.
6775         * sysdeps/alpha/td_ta_map_lwp2thr.c: New file.
6776         * sysdeps/alpha/tls.h: New file.
6777         * sysdeps/unix/sysv/linux/alpha/Makefile: New file.
6778         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: New file.
6779         * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h: New file.
6780         * sysdeps/unix/sysv/linux/alpha/createthread.c: New file.
6781         * sysdeps/unix/sysv/linux/alpha/fork.c: New file.
6782         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: New file.
6783         * sysdeps/unix/sysv/linux/alpha/pt-vfork.S: New file.
6784         * sysdeps/unix/sysv/linux/alpha/pthread_once.c: New file.
6785         * sysdeps/unix/sysv/linux/alpha/sem_post.c: New file.
6786         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: New file.
6787
6788 2003-07-01  Ulrich Drepper  <drepper@redhat.com>
6789
6790         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Add correct
6791         cleanup support and unwind info.
6792
6793 2003-06-30  Ulrich Drepper  <drepper@redhat.com>
6794
6795         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once):
6796         Use correct cleanup handler registration.  Add unwind info.
6797         * sysdeps/unix/sysv/linux/unwindbuf.sym: New file.
6798         * sysdeps/unix/sysv/linux/Makefile: Add rule to build unwindbuf.h.
6799         * tst-once3.c: Add cleanup handler and check it is called.
6800         * tst-once4.c: Likewise.
6801         * tst-oncex3.c: New file.
6802         * tst-oncex4.c: New file.
6803         * Makefile: Add rules to build and run tst-oncex3 and tst-oncex4.
6804
6805 2003-06-29  Ulrich Drepper  <drepper@redhat.com>
6806
6807         * sysdeps/pthread/configure.in: Check for C cleanup handling in gcc.
6808
6809 2003-06-27  Ulrich Drepper  <drepper@redhat.com>
6810
6811         * tst-cancel4.c (tf_msgrcv): Use IPC_PRIVATE in msgget call.
6812         (tf_msgsnd): Likewise.
6813
6814         * tst-cancel4.c (tf_msgrcv): Strengthen test against valid
6815         premature returns a bit more.
6816
6817 2003-06-26  Ulrich Drepper  <drepper@redhat.com>
6818
6819         * sysdeps/pthread/librt-cancellation.c: Move __pthread_unwind
6820         definition to the front.
6821
6822         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Rename
6823         the cleanup functions to make the names unique.  Fix dwarf opcode
6824         un unwind table.
6825         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Rename cleanup
6826         functions to make the names unique.  Fix CFA offset for two blocks.
6827
6828 2003-06-25  Ulrich Drepper  <drepper@redhat.com>
6829
6830         * sysdeps/pthread/pthread.h (class __pthread_cleanup_class): Add
6831         missing closing braces.
6832         Patch by Christophe Saout <christophe@saout.de>.
6833
6834 2003-06-24  Roland McGrath  <roland@redhat.com>
6835
6836         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Typo fix.
6837
6838 2003-06-24  Ulrich Drepper  <drepper@redhat.com>
6839
6840         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: New file.
6841         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: New file.
6842
6843         * pthreadP.h: Declare __find_thread_by_id.
6844         * allocatestack.c [HP_TIMING_AVAIL]: Define __find_thread_by_id.
6845         * pthread_clock_gettime.c: Allow using other thread's clock.
6846         * pthread_clock_settime.c: Likewise.
6847         * sysdeps/pthread/pthread_getcpuclockid.c: Likewise.
6848         * Makefile: Add rules to build and run tst-clock2.
6849         * tst-clock2.c: New file.
6850
6851 2003-06-23  Ulrich Drepper  <drepper@redhat.com>
6852
6853         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Rewrite
6854         to use exception-based cleanup handler.
6855         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
6856
6857         * tst-cond8.c (ch): Announce that we are done.
6858
6859         * pthreadP.h (__pthread_mutex_cond_lock): Mark with internal_function.
6860
6861         * tst-cancel17.c (tf): Retry aio_suspend in case of EINTR.
6862         Also test aio_suspend with timeout value.
6863
6864 2003-06-22  Ulrich Drepper  <drepper@redhat.com>
6865
6866         * pthreadP.h: Mark __pthread_mutex_unlock_usercnt also hidden.
6867         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Add
6868         attribute_hidden.
6869
6870         * pthreadP.h (__pthread_mutex_init_internal): Mark hidden.
6871         (__pthread_mutex_lock_internal): Likewise.
6872         (__pthread_mutex_unlock_internal): Likewise.
6873         (__pthread_mutex_unlock_usercnt): Declare.
6874         * pthread_mutex_destroy.c: Always fail if used in any way.
6875         * pthread_mutex_init.c: Update comment.
6876         * pthread_mutex_lock.c: If NO_INCR is not defined adjust __nusers.
6877         * pthread_mutex_timedlock.c: Adjust __nusers.
6878         * pthread_mutex_trylock.c: Adjust __nusers.
6879         * pthread_mutex_unlock.c: Old code is in __pthread_mutex_unlock_usercnt
6880         and public interfaces are wrapper with pass additional parameter.
6881         __pthread_mutex_unlock_usercnt does not adjust __nusers if second
6882         parameter zero.
6883         * tst-mutex8.c: New file.
6884         * Makefile (tests): Add tst-mutex8.
6885         * sysdeps/pthread/pthread_cond_timedwait.c: Call
6886         __pthread_mutex_unlock_usercnt.
6887         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
6888         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
6889         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
6890         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
6891         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
6892         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Define NO_INCR.
6893         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
6894         Add __nusers.
6895         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
6896         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
6897         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
6898         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
6899         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
6900
6901         * pthread_mutex_lock.c: Don't store THREAD_ID in __owner, use TID.
6902         * pthread_mutex_timedlock.c: Likewise.
6903         * pthread_mutex_trylock.c: Adjust __nusers.
6904         * pthread_mutex_unlock.c: Compare with TID not THREAD_ID.
6905         * tst-mutex9.c: New file.
6906         * Makefile (tests): Add tst-mutex9.
6907         * sysdeps/i386/tls.h: Remove THREAD_ID definition.
6908         * sysdeps/ia64/tls.h: Likewise.
6909         * sysdeps/powerpc/tls.h: Likewise.
6910         * sysdeps/s390/tls.h: Likewise.
6911         * sysdeps/sh/tls.h: Likewise.
6912         * sysdeps/x86_64/tls.h: Likewise.
6913         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
6914         Change type of __owner.
6915         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
6916         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
6917         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
6918         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
6919         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
6920
6921 2003-06-19  Jakub Jelinek  <jakub@redhat.com>
6922
6923         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Move to...
6924         * sysdeps/unix/sysv/linux/sem_post.c: ...here.
6925
6926         * sysdeps/unix/sysv/linux/sem_post.c: Move to...
6927         * sysdeps/unix/sysv/linux/powerpc/sem_post.c: ... here.  Pass nr + 1
6928         instead of nr to lll_futex_wake.  Only set errno and return -1
6929         if err < 0.
6930
6931         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (lll_futex_wait,
6932         lll_futex_timed_wait, lll_futex_wake, lll_futex_requeue): On success
6933         return actual return value from the syscall, not 0.
6934
6935 2003-06-18  Ulrich Drepper  <drepper@redhat.com>
6936
6937         * tst-cancel4.c (tf_msgsnd): Don't always use 100 as the type,
6938         find a random value.
6939         (tf_msgrcv): Likewise.  Also don't report msgrcv returns if
6940         errno==EIDRM.
6941
6942         * sysdeps/unix/sysv/linux/timer_settime.c: Add prototype for
6943         compat_timer_settime.
6944         * sysdeps/unix/sysv/linux/timer_gettime.c: Add prototype for
6945         compat_timer_gettime.
6946         * sysdeps/unix/sysv/linux/timer_getoverr.c: Add prototype for
6947         compat_timer_getoverrun.
6948         * sysdeps/unix/sysv/linux/timer_delete.c: Add prototype for
6949         compat_timer_delete.
6950
6951         * pthread_mutex_destroy.c (__pthread_mutex_destroy): For
6952         error-checking mutex detect busy mutexes.
6953
6954 2003-06-17  Ulrich Drepper  <drepper@redhat.com>
6955
6956         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_mutex_lock):
6957         Add ax to clobber list.
6958         (lll_mutex_cond_lock): Likewise.
6959         (lll_mutex_unlock): Likewise.
6960         (lll_lock): Likewise.
6961         (lll_unlock): Likewise.
6962
6963         * Makefile: Add rules to build and run tst-cancel18 and tst-cancelx18.
6964         * tst-cancel18.c: New file.
6965         * tst-cancelx18.c: New file.
6966
6967         * tst-cancel4.c: Test connect, creat, msgrcv, msgsnd, sendmsg, sendto,
6968         and tcdrain.
6969
6970         * Makefile: Add rules to build and run tst-cancel17 and tst-cancel17x.
6971         * tst-cancel17.c: New file.
6972         * tst-cancelx17.c: New file.
6973
6974         * sysdeps/unix/sysv/linux/sigtimedwait.c: New file.
6975         * sysdeps/unix/sysv/linux/sigwait.c: New file.
6976         * sysdeps/unix/sysv/linux/sigwaitinfo.c: New file.
6977
6978         * tst-cancel4.c: Test open, close, pread, pwrite, fsync, and msync.
6979
6980 2003-06-16  Jakub Jelinek  <jakub@redhat.com>
6981
6982         * sysdeps/pthread/createthread.c (create_thread): Set
6983         header.multiple_threads unconditionally.
6984         * allocatestack.c (allocate_stack): Likewise.
6985         * descr.h (struct pthread): Add header.multiple_threads
6986         unconditionally.
6987         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (CENABLE, CDISABLE):
6988         Define for librt.  #error if neither libpthread, libc nor librt.
6989         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (CENABLE, CDISABLE):
6990         Likewise.
6991         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (CENABLE,
6992         CDISABLE): Likewise.
6993         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (CENABLE,
6994         CDISABLE): Likewise.
6995         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (CENABLE,
6996         CDISABLE): Likewise.
6997         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (CENABLE,
6998         CDISABLE): Likewise.  Access header.multiple_threads outside of
6999         libc and libpthread.
7000         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (CENABLE, CDISABLE):
7001         Likewise.
7002         * sysdeps/x86_64/tls.h (tcbhead_t): Add multiple_threads.
7003         * sysdeps/x86_64/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Define.
7004
7005 2003-06-17  Ulrich Drepper  <drepper@redhat.com>
7006
7007         * tst-cancel4.c: Add tests for the socket and signal functions, pause.
7008         Also test early cancellation before the thread reaches the cancellation
7009         point.
7010
7011         * Makefile: Compile forward.c with exceptions.
7012
7013         * sysdeps/unix/sysv/linux/sleep.c: New file.
7014
7015 2003-06-16  Ulrich Drepper  <drepper@redhat.com>
7016
7017         * Makefile: Add CFLAGS definition to compile function wrappers
7018         duplicated from libc with exceptions.
7019         * tst-cancel4.c: Also check cancellation handlers.
7020
7021         * Makefile: Add rules to build and run tst-cancel16 and
7022         tst-cancelx16.  Add missing CFLAGS definitions.
7023         * tst-cancel16.c: New file.
7024         * tst-cancelx16.c: New file.
7025
7026 2003-06-15  Ulrich Drepper  <drepper@redhat.com>
7027
7028         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
7029         (DL_SYSINFO_IMPLEMENTATION): Use CFI opcodes.
7030         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
7031         (DL_SYSINFO_IMPLEMENTATION): Likewise.
7032
7033         * pthreadP.h (LIBC_CANCEL_ASYNC): Also define for librt.
7034         (LIBC_CANCEL_RESET): Likewise.
7035         Declare __librt_enable_asynccancel and __librt_disable_asynccancel.
7036         * sysdeps/pthread/Makefile (librt-sysdep_routines): Add
7037         librt-cancellation.
7038         (CFLAGS-libcrt-cancellation.c): Define.
7039         * sysdeps/pthread/librt-cancellation.c: New file.
7040         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define all the nice
7041         macros also when compiling librt.
7042         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
7043         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
7044         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
7045         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
7046         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
7047         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
7048         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
7049
7050         * sysdeps/unix/sysv/linux/timer_create.c: Add prototype for
7051         compat_timer_create.
7052
7053 2003-06-14  Ulrich Drepper  <drepper@redhat.com>
7054
7055         * sysdeps/pthread/posix-timer.h (timespec_compare): Always inline.
7056
7057         * sysdeps/unix/sysv/linux/fork.h: Add libc_hidden_proto for
7058         __register_atfork.
7059         * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork):
7060         Add libc_hidden_def.
7061
7062 2003-06-13  Roland McGrath  <roland@redhat.com>
7063
7064         * sysdeps/x86_64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Pass FS
7065         constant from <sys/reg.h> to ps_get_thread_area, not register contents.
7066
7067 2003-06-11  Ulrich Drepper  <drepper@redhat.com>
7068
7069         * allocatestack.c (queue_stack): Always inline.
7070         * ptreadhP.h (__do_cancel): Likewise.
7071
7072 2003-06-10  Jakub Jelinek  <jakub@redhat.com>
7073
7074         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait): Fix
7075         a typo.
7076
7077 2003-06-10  Ulrich Drepper  <drepper@redhat.com>
7078
7079         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
7080         (__pthread_cond_signal): Remove incorrect second addition for
7081         cond_lock!=0.
7082
7083 2003-06-09  Ulrich Drepper  <drepper@redhat.com>
7084
7085         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
7086         (__pthread_cond_signal): Use correct futex pointer in
7087         __lll_mutex_lock_wait call.
7088
7089         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
7090         (__pthread_cond_signal): Some more tweaks to handle cond_lock!=0.
7091
7092 2003-06-08  Ulrich Drepper  <drepper@redhat.com>
7093
7094         * sysdeps/unix/sysv/linux/s390/sem_wait.c (__new_sem_wait): Make
7095         cancelable.
7096         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait):
7097         Likewise.
7098
7099         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Remove
7100         hand-written CFI generation code.  Since ENTRY/END also initiated
7101         CFI frames this caused two CFI sets to be generated.
7102
7103 2003-06-07  Ulrich Drepper  <drepper@redhat.com>
7104
7105         * cleanup_routine.c: New file.
7106         * Versions (libpthread) [GLIBC_2.3.3]: Add __pthread_cleanup_routine.
7107         * sysdeps/pthread/pthread.h: Add support for fully exception-based
7108         cleanup handling.
7109         * Makefile (libpthread-routines): Add cleanup_routine.
7110         Add more CFLAGS variables to compile with exceptions.  Add comments
7111         why which file needs unwind tables.
7112         (tests) [have-forced-unwind==yes]: Add tst-cancelx* and tst-cleanupx*
7113         tests.
7114         * tst-cancelx1.c: New file.
7115         * tst-cancelx2.c: New file.
7116         * tst-cancelx3.c: New file.
7117         * tst-cancelx4.c: New file.
7118         * tst-cancelx5.c: New file.
7119         * tst-cancelx6.c: New file.
7120         * tst-cancelx7.c: New file.
7121         * tst-cancelx8.c: New file.
7122         * tst-cancelx9.c: New file.
7123         * tst-cancelx10.c: New file.
7124         * tst-cancelx11.c: New file.
7125         * tst-cancelx12.c: New file.
7126         * tst-cancelx13.c: New file.
7127         * tst-cancelx14.c: New file.
7128         * tst-cancelx15.c: New file.
7129         * tst-cleanupx0.c: New file.
7130         * tst-cleanupx0.expect: New file.
7131         * tst-cleanupx1.c: New file.
7132         * tst-cleanupx2.c: New file.
7133         * tst-cleanupx3.c: New file.
7134
7135         * tst-cleanup0.c: Make standard compliant.
7136         * tst-cleanup1.c: Likewise.
7137
7138         * sysdeps/unix/sysv/linux/sem_timedwait.c: Add cancellation support.
7139         * sysdeps/unix/sysv/linux/sem_wait.c: Likewise.
7140         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
7141         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
7142         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
7143         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
7144         * sysdeps/i386/tcb-offsets.sym: Add RESULT, CANCELHANDLING, and
7145         CLEANUP_JMP_BUF.
7146         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
7147         * tst-cancel12.c: New file.
7148         * tst-cancel13.c: New file.
7149         * tst-cancel14.c: New file.
7150         * tst-cancel15.c: New file.
7151         * Makefile (tests): Add tst-cancel12, tst-cancel13, tst-cancel14,
7152         and tst-cancel15.
7153
7154         * tst-cancel1.c: Add some comments.
7155
7156         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Compute relative
7157         timeout correctly.
7158
7159 2003-06-06  Ulrich Drepper  <drepper@redhat.com>
7160
7161         * Makefile (CFLAGS-pthread_cancel.c): Define.
7162
7163 2003-06-05  Ulrich Drepper  <drepper@redhat.com>
7164
7165         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_rwlock_t):
7166         Change type of __writer element to int.
7167         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
7168         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
7169         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
7170         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
7171         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
7172         * sysdeps/i386/tcb-offsets.sym: Replace SELF entry with TID entry.
7173         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
7174         * pthread_rwlock_trywrlock.c: Store TID not self pointer in __writer.
7175         Compare with TID to determine deadlocks.
7176         * sysdeps/pthread/pthread_rwlock_rdlock.c: Likewise.
7177         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
7178         * sysdeps/pthread/pthread_rwlock_timedwrlock.: Likewise.
7179         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
7180         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
7181         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
7182         Likewise.
7183         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
7184         Likewise.
7185         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
7186         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
7187         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
7188         Likewise.
7189         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
7190         Likewise.
7191         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
7192         * Makefile (tests): Add tst-rwlock12.
7193         * tst-rwlock12.c: New file.
7194
7195 2003-06-05  Jakub Jelinek  <jakub@redhat.com>
7196
7197         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait,
7198         __lll_timedlock_wait, lll_unlock_wake_cb, __lll_timedwait_tid):
7199         Remove bogus hidden_proto.
7200         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c (___lll_lock):
7201         Likewise.
7202         * sysdeps/unix/sysv/linux/s390/lowlevellock.c (___lll_lock,
7203         lll_unlock_wake_cb, ___lll_timedwait_tid): Likewise.
7204         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c (___lll_mutex_lock,
7205         ___lll_mutex_timedlock): Likewise.
7206
7207 2003-06-04  Ulrich Drepper  <drepper@redhat.com>
7208
7209         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
7210         (__pthread_cond_signal): Add some code to eventually handle
7211         cond_lock!=0.
7212
7213 2003-06-01  Ulrich Drepper  <drepper@redhat.com>
7214
7215         * Makefile (tests): Add tst-exec4.
7216         (tst-exec4-ARGS): Define.
7217         * tst-exec4.c: New file.
7218
7219 2003-05-31  Ulrich Drepper  <drepper@redhat.com>
7220
7221         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
7222         Also fail if tv_nsec < 0.
7223         (__lll_timedwait_tid): Likewise.
7224         * sysdeps/unix/sysv/linux/sem_timedwait.c (sem_timedwait): Likewise.
7225         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_timedwait_tid):
7226         Likewise.
7227         * sysdeps/unix/sysv/linux/s390/lowlevellock.c (___lll_timedwait_tid):
7228         Likewise.
7229         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c (__lll_mutex_timedlock):
7230         Likewise.
7231         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait):
7232         Likewise.
7233         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_timedwait_tid):
7234         Likewise.
7235         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_timedwait_tid):
7236         Likewise.
7237
7238         * Makefile (tests): Add tst-sem8 and tst-sem9.
7239         * tst-sem8.c: New file.
7240         * tst-sem9.c: New file.
7241         * sem_open.c: Fix creation of in_use record if the file exists but
7242         no internal record.
7243
7244         * posix-timer.h: Remove old, unused timer_id2ptr and timer_ptr2id
7245         definitions.
7246
7247         * sysdeps/pthread/timer_create.c (timer_create): In case
7248         evp==NULL, assign timer ID to sival_ptr.
7249
7250         * descr.h (struct pthread_unwind_buf): Change type of prev element to
7251         struct pthread_unwind_buf *.
7252         (struct pthread): Likewise for cleanup_jmp_buf element.
7253
7254         * cleanup.c (__pthread_register_cancel): Add cast to avoid warning.
7255         * cleanup_defer.c (__pthread_register_cancel_defer): Likewise.
7256         * unwind.c (__pthread_unwind_next): Likewise.
7257
7258 2003-05-30  Ulrich Drepper  <drepper@redhat.com>
7259
7260         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
7261         (lll_futex_timed_wait): Use int for futex value parameter.
7262         (lll_futex_wake): Likewise.
7263         (lll_futex_requeue): Likewise.
7264
7265         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait):
7266         Replace one memory operation with one register operation.
7267
7268         * tst-join4.c (do_test): Fix error message.
7269
7270         * tst-rwlock6.c (do_test): Use correct format specifier.
7271
7272         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
7273         (__lll_mutex_lock_wait): Replace one memory operation with one
7274         register operation.
7275         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S
7276         (__lll_mutex_lock_wait): Likewise.
7277
7278         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
7279         (__lll_mutex_cond_lock): Add one to value parameter of
7280         __lll_lock_wait to reflect reality in the futex syscall.
7281         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
7282         (lll_mutex_cond_lock): Likewise.
7283
7284 2003-05-30  Jakub Jelinek  <jakub@redhat.com>
7285
7286         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_mutex_cond_lock):
7287         New function.
7288         (lll_mutex_cond_lock): Define.
7289
7290 2003-05-29  Ulrich Drepper  <drepper@redhat.com>
7291
7292         * Makefile (tests): Add tst-signal6.
7293         * tst-signal6.c: New file.
7294
7295         * sysdeps/unix/sysv/linux/s390/lowlevellock.h
7296         (__lll_mutex_unlock_force): New function
7297         (lll_mutex_unlock_force): Use __lll_mutex_unlock_force.
7298
7299         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
7300         (__lll_mutex_unlock_force): New function.
7301         (lll_mutex_unlock_force): Use __lll_mutex_unlock_force.
7302
7303         * tst-rwlock7.c (do_test): Use correct format specifier.
7304
7305         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_requeue):
7306         Find break parameter in correct asm argument.
7307
7308 2003-05-27  Jakub Jelinek  <jakub@redhat.com>
7309
7310         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_clobbers):
7311         Remove out4.
7312         (lll_futex_requeue): Fix __o3 constraint, return negative errno if
7313         error occured.
7314         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
7315         Add __mutex.
7316         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_REQUEUE,
7317         lll_futex_requeue, lll_mutex_unlock_force): Define.
7318
7319 2003-05-30  Jakub Jelinek  <jakub@redhat.com>
7320
7321         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
7322         (pthread_cond_t): Add __mutex.
7323         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_REQUEUE,
7324         lll_futex_requeue, lll_mutex_unlock_force): Define.
7325
7326 2003-05-28  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
7327
7328         * sysdeps/sh/tcb-offsets.sym: Define MUTEX_FUTEX.
7329         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
7330         Add __mutex field.
7331         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (SYSCALL_WITH_INST_PAD):
7332         Define.
7333         (lll_futex_wait, lll_futex_wake): Define.
7334         * sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h: New file.
7335         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Try using
7336         FUTEX_REQUEUE instead of FUTEX_WAIT.
7337         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise.
7338         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Remember
7339         mutex which was used in condvar structure.  Call
7340         __pthread_mutex_cond_lock instead of __pthread_mutex_lock_internal.
7341         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
7342
7343         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Don't
7344         include tcb-offsets.h.  Read wakeup value in locked region.
7345         Use the value of gbr register as THREAD_ID.
7346         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
7347         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
7348         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
7349
7350         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Remove futex related
7351         macros.
7352
7353 2003-05-28  Ulrich Drepper  <drepper@redhat.com>
7354
7355         * sysdeps/pthread/pthread_cond_broadcast.c
7356         (__pthread_cond_broadcast): Fix typo: MAX_INT -> INT_MAX.
7357
7358 2003-05-26  Ulrich Drepper  <drepper@redhat.com>
7359
7360         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Fix
7361         typo in register name.
7362         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Use parameters
7363         correctly.  Actually use requeue.  Little optimization.
7364         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Store
7365         mutex address early.  Handle cancellation state as 32-bit value.
7366         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
7367         Remove unnecessary label.
7368
7369 2003-05-25  Ulrich Drepper  <drepper@redhat.com>
7370
7371         * sysdeps/pthread/pthread_cond_broadcast.c: Try using FUTEX_REQUEUE
7372         instead of FUTEX_WAIT.
7373         * sysdeps/pthread/pthread_cond_signal.c: Likewise.
7374         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
7375         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
7376         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
7377         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
7378         * sysdeps/pthread/pthread_cond_timedwait.c: Remember mutex which was
7379         used in condvar structure.  Call __pthread_mutex_cond_lock instead
7380         of __pthread_mutex_lock_internal.
7381         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
7382         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
7383         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
7384         (__condvar_cleanup): Always call __pthread_mutex_cond_lock.
7385         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
7386         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
7387         * sysdeps/unix/sysv/linux/Makefile (libpthread-sysdep_routines):
7388         Add pthread_mutex_cond_lock.
7389         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add dep_mutex.
7390         * sysdeps/unix/sysv/linux/pthread_cond_mutex_lock.c: New file.
7391         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define
7392         lll_mutex_cond_lock.
7393         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
7394         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
7395         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
7396         Add __mutex field.
7397         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
7398         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
7399
7400         * sysdeps/i386/tcb-offsets.sym: Define MUTEX_FUTEX.
7401         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
7402
7403         * pthreadP.h: Declare __pthread_mutex_cond_lock.
7404         * pthread_mutex_lock.c: Define LLL_MUTEX_LOCK if not already defined.
7405         Use it instead of lll_mutex_lock.  If __pthread_mutex_lock is a
7406         macro don't define aliases.
7407
7408         * cancellation.c: Remove __pthread_enable_asynccancel_2.
7409         * pthreadP.h: Remove declaration of __pthread_enable_asynccancel_2.
7410         * sysdeps/pthread/pthread_cond_timedwait.c: Use
7411         __pthread_enable_asynccancel instead of __pthread_enable_asynccancel_2.
7412         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
7413         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
7414         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
7415         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
7416         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
7417
7418 2003-05-17  Ulrich Drepper  <drepper@redhat.com>
7419
7420         * sem_open.c: Fix one endless loop.  Implement correct semantics
7421         wrt opening the same semaphore more then once.
7422         * sem_close.c: Adjust for sem_open change.
7423         * semaphoreP.h: Include <semaphore.h>.  Define struct inuse_sem.
7424         Declare __sem_mappings, __sem_mappings_lock, __sem_search.
7425         * Makefile (tests): Add tst-sem7.
7426         * tst-sem7.c: New file.
7427
7428 2003-05-16  Roland McGrath  <roland@redhat.com>
7429
7430         * sysdeps/unix/sysv/linux/register-atfork.c (libc_freeres_fn): Fix
7431         uninitialized variable braino.
7432
7433 2003-05-16  Ulrich Drepper  <drepper@redhat.com>
7434
7435         * sysdeps/unix/sysv/linux/timer_gettime.c (timer_gettime): Correct
7436         test for syscall availability.
7437
7438         * sysdeps/unix/sysv/linux/timer_settime.c (timer_settime): Set
7439         __no_posix_timers to -1 if the syscalls don't exist.
7440
7441         * pthread_join.c (pthread_join): Set tid field of the joined
7442         thread to -1.  This isn't necessary but helps to recognize some
7443         error conditions with almost no cost.
7444
7445         * allocatestack.c (FREE_P): Also negative values indicate an
7446         unused stack.
7447
7448         * unwind.c: Include <unistd.h>.
7449
7450 2003-05-14  Ulrich Drepper  <drepper@redhat.com>
7451
7452         * Makefile ($(objpfx)$(multidir)): Add rule to create the directory.
7453
7454 2003-05-14  Jakub Jelinek  <jakub@redhat.com>
7455
7456         * Makefile (crti-objs, crtn-objs): New variables.
7457         (omit-deps, extra-objs): Add crtn.
7458         ($(objpfx)libpthread.so): Depend on both crti and crtn
7459         and links to them in multidir.
7460         ($(objpfx)crtn.S, $(objpfx)crtn.o): New rules.
7461
7462 2003-05-12  Steven Munroe  <sjmunroe@us.ibm.com>
7463
7464         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
7465         (lll_mutex_unlock): Use atomic_exchange_rel.
7466
7467 2003-05-11  Ulrich Drepper  <drepper@redhat.com>
7468
7469         * cond-perf.c (cons): Add missing locking around setting of alldone.
7470
7471 2003-05-10  Ulrich Drepper  <drepper@redhat.com>
7472
7473         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Remove futex
7474         related macros.
7475         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
7476
7477 2003-05-09  Ulrich Drepper  <drepper@redhat.com>
7478
7479         * tst-sem6.c: New file.
7480         * Makefile (tests): Add tst-sem6.
7481
7482         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (___lll_mutex_unlock):
7483         Use atomic_exchange_rel instead of atomic_exchange.
7484         * sysdeps/unix/sysv/linux/lowlevellock.c (lll_unlock_wake_cb):
7485         Likewise.
7486
7487         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Improve quality of
7488         code for lll_futex_wait and lll_futex_wake in static apps.  Use
7489         vsyscall is possible.
7490
7491         * sysdeps/unix/sysv/linux/pthread_getaffinity.c: New file.
7492         * sysdeps/unix/sysv/linux/pthread_setaffinity.c: New file.
7493         * sysdeps/pthread/pthread.h: Declare pthread_getaffinity_np and
7494         pthread_setaffinity_np.
7495         * Versions [libpthread] (GLIBC_2.3.3): Add pthread_getaffinity_np
7496         and pthread_setaffinity_np.
7497         * Makefile (libpthread-routines): Add pthread_getaffinity and
7498         pthread_setaffinity.
7499
7500         * allocatestack.c (allocate_stack): If ARCH_RETRY_MMAP is defined,
7501         use it in case mmap to allocate the stack fails.
7502         * sysdeps/unix/sysv/linux/x86_64/Makefile: Don't define
7503         ARCH_MAP_FLAGS here.
7504         * sysdeps/x86_64/pthreaddef.h: Define ARCH_MAP_FLAGS and
7505         ARCH_RETRY_MMAP.
7506
7507 2003-05-08  Ulrich Drepper  <drepper@redhat.com>
7508
7509         * sysdeps/unix/sysv/linux/fork.c: Complete rewrite of the atfork
7510         handler implementation.  It is now lockless in fork().
7511         * sysdeps/unix/sysv/linux/register-atfork.c: Likewise.
7512         * sysdeps/unix/sysv/linux/unregister-atfork.c: Likewise.
7513         * sysdeps/unix/sysv/linux/fork.h: Don't include <link.h>.  Don't
7514         declare the __fork_*_lists.
7515         (struct fork_handler): Include pointers to all three functions.
7516         Add next, refcntr and need_signal elements.
7517         (__fork_handlers): New declaration.
7518         (__register_atfork_malloc): Remove declaration.
7519         (HAVE_register_atfork_malloc): Remove definition.
7520         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Remove
7521         __pthread_child_handler variable.
7522         (__libc_pthread_init): Use __register_atfork instead of explicitly
7523         adding to the list.
7524         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define lll_futex_wait
7525         and lll_futex_wake.
7526         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
7527
7528         * unwind.c (unwind_cleanup): Print error message and then abort.  This
7529         function must never be reached.
7530
7531         * cond-perf.c: New file.
7532
7533 2003-05-05  Ulrich Drepper  <drepper@redhat.com>
7534
7535         * sysdeps/i386/tls.h (TLS_INIT_TP): Include \n in error message.
7536
7537 2003-05-04  Roland McGrath  <roland@redhat.com>
7538
7539         * Makefile ($(objpfx)../libc.so): New target.
7540
7541 2003-05-02  Ulrich Drepper  <drepper@redhat.com>
7542
7543         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
7544         (pthread_condattr_t): Size is only an int, don't use long for
7545         alignment.
7546         (pthread_mutexattr_t): Likewise.
7547         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
7548         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
7549         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
7550
7551 2003-05-01  Ulrich Drepper  <drepper@redhat.com>
7552
7553         * sysdeps/i386/tls.h: Define THREAD_ID.
7554         * sysdeps/ia64/tls.h: Likewise.
7555         * sysdeps/powerpc/tls.h: Likewise.
7556         * sysdeps/s390/tls.h: Likewise.
7557         * sysdeps/sh/tls.h: Likewise.
7558         * sysdeps/x86_64/tls.h: Likewise.
7559         * pthread_mutex_lock.c: Use THREAD_ID instead of THREAD_SELF to
7560         record ownership.
7561         * pthread_mutex_timedlock.c: Likewise.
7562         * pthread_mutex_trylock.c: Likewise.
7563         * pthread_mutex_unlock.c: Likewise.
7564         * pthread_rwlock_trywrlock.c: Likewise.
7565         * sysdeps/pthread/pthread_rwlocklock_rdlock.c: Likewise.
7566         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
7567         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
7568         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
7569
7570         * sysdeps/pthread/createthread.c (create_thread): Use CLONE_SYSVSEM
7571         flag.
7572
7573 2003-04-29  Jakub Jelinek  <jakub@redhat.com>
7574
7575         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
7576         (__SIZEOF_PTHREAD_COND_T): Define to 48.
7577         (pthread_rwlock_t): Add 16 bytes of pad instead of 8 before __flags.
7578         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
7579         Make __align long long instead of long.
7580         (pthread_rwlock_t): Formatting.
7581         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h
7582         (pthread_rwlock_t): Formatting.
7583         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
7584         (pthread_cond_t): Make __align long long instead of long.
7585         (pthread_rwlock_t): Move __flags field to the same position as in
7586         linuxthreads.
7587
7588 2003-04-30  Ulrich Drepper  <drepper@redhat.com>
7589
7590         * tst-rwlock6.c (do_test): Use correct printf format specifiers.
7591         * tst-rwlock7.c (do_test): Likewise.
7592
7593 2003-04-26  Roland McGrath  <roland@redhat.com>
7594
7595         * Makefile ($(test-modules)): Depend on $(common-objpfx)shlib.lds.
7596
7597 2003-04-22  Jakub Jelinek  <jakub@redhat.com>
7598
7599         * allocatestack.c (TLS_TPADJ): Add TLS_PRE_TCB_SIZE instead of
7600         sizeof (struct pthread).
7601         (allocate_stack): Subtract TLS_PRE_TCB_SIZE bytes instead of
7602         1 struct pthread.
7603         * sysdeps/powerpc/tls.h (TLS_INIT_TCB_SIZE, TLS_TCB_SIZE): Define
7604         to 0.
7605         (TLS_INIT_TCB_ALIGN, TLS_TCB_ALIGN): Define to alignment of
7606         struct pthread.
7607         (TLS_PRE_TCB_SIZE): Increase to cover tcbhead_t preceeded by pad
7608         to 32-bit bytes.
7609         (INSTALL_DTV, GET_DTV, THREAD_DTV): tcbhead_t is immediately before
7610         tcbp.
7611         (TLS_INIT_TP, THREAD_SELF, INIT_THREAD_SELF): Don't add TLS_TCB_SIZE
7612         unneccessarily.
7613         (NO_TLS_OFFSET): Define.
7614         * sysdeps/unix/sysv/linux/powerpc/createthread.c (TLS_VALUE): Don't
7615         add TLS_TCB_SIZE unnecessarily.
7616
7617 2003-04-22  Roland McGrath  <roland@redhat.com>
7618
7619         * Makeconfig (shared-thread-library): Reverse link order to work
7620         around linker bug.
7621
7622 2003-04-22  Ulrich Drepper  <drepper@redhat.com>
7623
7624         * semaphore.h: Fix typo in comment.
7625
7626 2003-04-21  Ulrich Drepper  <drepper@redhat.com>
7627
7628         * sysdeps/pthread/sigfillset.c: New file.
7629
7630         * init.c (__pthread_initialize_minimal): Don't block SIGTIMER.
7631         * pthreadP.h: Make SIGTIMER and SIGCANCEL the same.
7632         * sysdeps/pthread/pthread_sigmask.c: Remove handling of SIGTIMER.
7633         * sysdeps/pthread/sigaction.c: Likewise.
7634         * sysdeps/pthread/sigprocmask.c: New file.
7635         * sysdeps/unix/sysv/linux/allocrtsig.c (current_rtmin): Define as
7636         __SIGRTMIN+1.
7637         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
7638         Block SIGTIMER.  Also handle SI_TKILL events and terminate thread
7639         in this case.
7640
7641 2003-04-19  Ulrich Drepper  <drepper@redhat.com>
7642
7643         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
7644         (DL_SYSINFO_IMPLEMENTATION): Add .eh_frame information.
7645
7646         * sysdeps/unix/sysv/linux/unregister-atfork.c
7647         (__unregister_atfork): Don't free memory not allocated dynamically.
7648
7649         * semaphore.h: Remove __THROW marker from cancellation points.
7650         * nptl/sysdeps/pthread/pthread.h: Likewise.
7651
7652 2003-04-18  Ulrich Drepper  <drepper@redhat.com>
7653
7654         * sysdeps/pthread/pthread.h: Don't mark pthread_testcancel,
7655         pthread_cancel, pthread_setcancelstate, and pthread_setcanceltype with
7656         __THROW.
7657
7658 2003-04-16  Jakub Jelinek  <jakub@redhat.com>
7659
7660         * tst-cancel4.c (do_test): Use %zd instead of %d when printing cnt.
7661
7662 2003-04-15  Roland McGrath  <roland@redhat.com>
7663
7664         * forward.c (__pthread_unwind): Tweak to avoid warning.
7665
7666 2003-04-15  Ulrich Drepper  <drepper@redhat.com>
7667
7668         * pthreadP.h: Move THREAD_ATOMIC_* replacements to the top.
7669
7670 2003-04-14  Ulrich Drepper  <drepper@redhat.com>
7671
7672         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Don't
7673         overflow CFA advance instructions.
7674         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
7675
7676 2003-04-14  Jakub Jelinek  <jakub@redhat.com>
7677
7678         * sysdeps/i386/tls.h: Rename LOCK to LOCK_PREFIX.
7679         * sysdeps/i386/pthread_spin_lock.c: Likewise.
7680         * sysdeps/x86_64/tls.h: Likewise.  Define LOCK_PREFIX if not already
7681         defined.
7682
7683         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Use
7684         DW_CFA_advance_loc2 for .Laddl-.Lsubl.
7685         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use
7686         DW_CFA_advance_loc for .Laddl-.Lsubl.
7687
7688 2003-04-13  Ulrich Drepper  <drepper@redhat.com>
7689
7690         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Don't use
7691         position-independent unwind data for static libraries.
7692         Add missing unwind info.  Add comments.
7693
7694         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Add unwind info.
7695         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
7696         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
7697         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
7698
7699 2003-04-12  Ulrich Drepper  <drepper@redhat.com>
7700
7701         * Makefile: Make sure all cancellation points are compiled with
7702         exception and asynchronous unwind tables.
7703
7704         * sysdeps/x86_64/tls.h (THREAD_SETMEM): Word around compiler bug
7705         which mishandles loading of global object addresses in PIC.
7706         (THREAD_SETMEM_NC): Likewise.
7707
7708 2003-04-11  Ulrich Drepper  <drepper@redhat.com>
7709
7710         * pthread.h: Define new data structure for cleanup buffer.  Declare
7711         new cleanup handler interfaces.
7712         * descr.h: Include <unwind.h> if necessary.  Define pthread_unwind_buf.
7713         (struct pthread): Add cleanup_jmp_buf pointer.  Define
7714         HAVE_CLEANUP_JMP_BUF and not HAVE_CANCELBUF.
7715         * pthreadP.h: Declare __pthread_unwind.  Define __do_cancel to use
7716         it.  Declare old cleanup handler installation functions.
7717         * cleanup.c: Rewrite.  Install handler for unwind-based cleanup
7718         handling.
7719         * cleanup_defer.c: Likewise.
7720         * cleanup_compat.c: New file.  Old cleanup code.
7721         * cleanup_def_compat.c: New file.  Old cleanup code.
7722         * pthread_create.c (start_thread): Initialize cleanup_jmp_buf element
7723         if own thread descriptor.
7724         * unwind.c: New file.
7725         * forward.c: Add __pthread_unwind.
7726         * init.c (pthread_functions): Add __pthread_unwind.
7727         * sysdeps/pthread/pthread-functions.s (struct pthread_functions):
7728         Add ptr___pthread_unwind.
7729         * Versions [GLIBC_2.3.3] (libpthread): Export new cleanup handling
7730         and unwind function.
7731         * Makefile (libpthread-routines): Add cleanup_compat,
7732         cleanup_def_compat, and unwind.  Define CFLAGS to enable unwind
7733         table generation if necessary.
7734         * version.c: Record whether unwind support is compiled in.
7735         * sysdeps/pthread/configure.in: Add checks for unwind unterfaces.
7736         * sysdeps/pthread/bits/libc-lock.h: Add prototypes of the old cleanup
7737         handler interfaces.
7738         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Add quite a bit of
7739         complication to generate unwind information for syscall wrappers.
7740         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
7741         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Define
7742         __cleanup_fct_attribute.
7743
7744         * Makefile: Add rules to build and run tst-cleanup0.
7745         * tst-cleanup0.c: New file.
7746         * tst-cleanup0.expect: New file.
7747
7748         * pthread_create.c (deallocate_tsd): Don't take parameter.  Adjust
7749         caller.  Optimize to avoid often unecessary local variable.
7750
7751 2003-04-11  Roland McGrath  <roland@redhat.com>
7752
7753         * Makefile ($(objpfx)multidir.mk): New target, generated makefile that
7754         sets variable `multidir'; include that.
7755         (generated): Add it.
7756         ($(objpfx)$(multidir)/crti.o): New target.
7757         [$(multidir) != .] (generated-dirs, extra-objs, omit-deps): Add it.
7758
7759 2003-04-11  Ulrich Drepper  <drepper@redhat.com>
7760
7761         * tst-attr2.c (do_test): Add cast to avoid warning.
7762         * tst-mutex4.c (do_test): Likewise.
7763
7764 2003-04-10  Ulrich Drepper  <drepper@redhat.com>
7765
7766         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Reset CPU clocks
7767         in child.
7768
7769 2003-04-09  Ulrich Drepper  <drepper@redhat.com>
7770
7771         * Makefile (tests): Add tst-detach1.
7772         * tst-detach1.c: New file.
7773
7774 2003-04-08  Ulrich Drepper  <drepper@redhat.com>
7775
7776         * sysdeps/pthread/pthread.h: Remove duplicate
7777         pthread_cleanup_{push,pop} definitions.
7778
7779         * tst-barrier2.c: Eliminate warnings.
7780         * tst-cancel4.c: Likewise.
7781         * tst-cond4.c: Likewise.
7782         * tst-cond6.c: Likewise.
7783         * tst-detach1.c: Likewise.
7784         * tst-rwlock4.c: Likewise.
7785         * tst-rwlock6.c: Likewise.
7786         * tst-rwlock7.c: Likewise.
7787         * tst-sem3.c: Likewise.
7788         * tst-spin2.c: Likewise.
7789         * tst-umask1.c: Likewise.
7790
7791 2003-04-07  Ulrich Drepper  <drepper@redhat.com>
7792
7793         * pthread_detach.c (pthread_detach): Fix test for invalid TID.
7794
7795 2003-04-06  Ulrich Drepper  <drepper@redhat.com>
7796
7797         * descr.h (struct pthread): Move cancelhandling member to the front.
7798
7799 2003-04-05  Ulrich Drepper  <drepper@redhat.com>
7800
7801         * sysdeps/unix/sysv/linux/register-atfork.c: Define malloc_prepare,
7802         malloc_parent, and malloc_child statically.
7803         (__register_atfork_malloc): New function.
7804         (free_mem): Don't free any of the malloc_* variables on the list.
7805         * sysdeps/unix/sysv/linux/fork.h: Declare __register_atfork_malloc.
7806         Define HAVE_register_atfork_malloc.
7807
7808 2003-04-04  Ulrich Drepper  <drepper@redhat.com>
7809
7810         * sysdeps/pthread/createthread.c (create_thread): Add some more
7811         comments explaining when to set multiple_threads and when not.
7812
7813         * pthreadP.h: Define THREAD_ATOMIC_CMPXCHG_VAL and
7814         THREAD_ATOMIC_BIT_SET if not already defined.
7815         * sysdeps/i386/tls.h: Define THREAD_ATOMIC_CMPXCHG_VAL and
7816         THREAD_ATOMIC_BIT_SET:
7817         * sysdeps/x86_64/tls.h: Likewise.
7818         * cleanup_defer.c (_pthread_cleanup_push_defer): Rewrite to use
7819         THREAD_ATOMIC_CMPXCHG_VAL.
7820         (_pthread_cleanup_pop_restore): Likewise.
7821         * cancellation.c (__pthread_enable_asynccancel): Likewise.
7822         (__pthread_enable_asynccancel_2): Likewise.
7823         (__pthread_disable_asynccancel): Likewise.
7824         * libc-cancellation.c (__libc_enable_asynccancel): Likewise.
7825         (__libc_disable_asynccancel): Likewise.
7826         * init.c (sigcancel_handler): Likewise.
7827         * pthread_setcancelstate.c (__pthread_setcancelstate): Likewise.
7828         * pthread_setcanceltype.c (__pthread_setcanceltype): Likewise.
7829
7830 2003-04-03  Ulrich Drepper  <drepper@redhat.com>
7831
7832         * init.c (sigcancel_handler): Don't set EXITING_BIT here.
7833         * libc-cancellation.c (__libc_enable_asynccancel): Likewise.
7834         * pthreadP.h (__do_cancel): Set EXITING_BIT here.
7835         * Makefile (tests): Add tst-cancel11.
7836         * tst-cancel11.c: New file.
7837
7838 2003-04-01  Ulrich Drepper  <drepper@redhat.com>
7839
7840         * pthread_create.c (deallocate_tsd): Clear/free memory after the last
7841         round, not the first.  Use specific_used flag instead of local
7842         found_nonzero variable.  Use THREAD_[SG]ETMEM where possible.
7843         (__free_tcb): Don't call deallocate_tsd here.
7844         (start_thread): Call deallocate_tsd here.
7845         * pthread_setspecific.c: Set specific_used flag really only when
7846         needed.
7847         * Makefile (tests): Add tst-tsd3.c and tst-tsd4.
7848         * tst-tsd3.c: New file.
7849         * tst-tsd4.c: New file.
7850
7851 2003-03-31  Ulrich Drepper  <drepper@redhat.com>
7852
7853         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_mutex_lock):
7854         Use atomic_exchange_and_add instead of __lll_add.
7855         (__lll_mutex_timedlock): Likewise.
7856         Patch by Ian Wienand.
7857
7858 2003-03-24  Steven Munroe  <sjmunroe@us.ibm.com>
7859
7860         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
7861         (SINGLE_THREAD_P): Fix typo.
7862         * tst-cancel-wrappers.sh: Handle '.'ed symbols.
7863
7864 2003-03-31  Ulrich Drepper  <drepper@redhat.com>
7865
7866         * Makefile (tests): Add tst-align.
7867         * tst-align.c: New file.
7868         * sysdeps/i386/Makefile: Define CFLAGS-tst-align.
7869
7870         * sysdeps/i386/tls.h (CALL_THREAD_FCT): Align stack of called
7871         function correctly.
7872
7873         * tst-tsd2.c: Add casts to avoid warnings.
7874
7875 2003-03-30  Ulrich Drepper  <drepper@redhat.com>
7876
7877         * descr.h (struct pthread): Move most often used elements to the front.
7878
7879 2003-03-29  Ulrich Drepper  <drepper@redhat.com>
7880
7881         * Makefile (libpthread-routines): Add pthread_atfork.
7882         (libpthread-static-only-routines): Add pthread_atfork.
7883
7884 2003-03-28  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
7885
7886         * sysdeps/sh/tls.h: Include nptl/descr.h after the definition
7887         of TLS_DTV_AT_TP.
7888         (INSTALL_DTV): Add parens.
7889         (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM, THREAD_SETMEM_NC):
7890         Use passed descr instead of THREAD_SELF.
7891         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S
7892         (__lll_mutex_timedlock_wait): Correct expected value after
7893         spurious wakeup.
7894         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S:
7895         Release lock before waking up the waiters.
7896         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Correct exit
7897         criteria.  Reorderstruct passed to cleanup handler.  Fix
7898         handling of cancellation and failung pthread_mutex_unlock call.
7899         Use __pthread_enable_asynccancel_2 instead of
7900         __pthread_enable_asynccancel.
7901         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
7902         Return result of lock re-get if it fails.
7903         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Fix wrong argument
7904         for __pthread_cleanup_push.
7905         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Fix
7906         completely broken rwlock implementation.
7907         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
7908         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
7909         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
7910         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
7911         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
7912         * sysdeps/unix/sysv/linux/sh/sem_post.S: Fix error value.  Use
7913         versioned_symbol macro.
7914         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Use versioned_symbol macro.
7915         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
7916
7917 2003-03-27  Ulrich Drepper  <drepper@redhat.com>
7918
7919         * sysdeps/unix/sysv/linux/kernel-posix-timers.h: Don't declare
7920         __timer_helper_thread.  Declare __start_helper_thread, __helper_once,
7921         and __helper_tid.
7922         (struct timer): Remove th and bar field.
7923         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Remove
7924         debugging code.  Create only one helper thread.
7925         * sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Don't kill
7926         helper thread.
7927         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
7928         Renamed.  Define statically.  Use thread info from siginfo.
7929         (__helper_once): New variable.
7930         (__helper_tid): New variable.
7931         (__reset_helper_control): New function.
7932         (__start_helper_thread): New function.
7933
7934         * pthread_create.c (start_thread): Don't use setjmp inside
7935         __builtin_expect to work around gcc bug.
7936
7937         * sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Even if
7938         timer_delete syscall fails, but not with ENOSYS, set
7939         __no_posix_timers.
7940
7941         * sysdeps/unix/sysv/linux/timer_settime.c [!__ASSUME_POSIX_TIMERS]
7942         (timer_settime): Fix typo.
7943         * sysdeps/unix/sysv/linux/timer_getoverr.c
7944         [!__ASSUME_POSIX_TIMERS] (timer_getoverrun): Likewise.
7945
7946 2003-03-27  Jakub Jelinek  <jakub@redhat.com>
7947
7948         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Fix
7949         offset of cleanupbuf.__prev.
7950
7951 2003-03-26  Jakub Jelinek  <jakub@redhat.com>
7952
7953         * sysdeps/unix/sysv/linux/timer_getoverr.c: Fix typo in name
7954         of included file.
7955
7956 2003-03-26  Ulrich Drepper  <drepper@redhat.com>
7957
7958         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): If EVP ==
7959         NULL provide default definition to syscall.
7960
7961 2003-03-25  Roland McGrath  <roland@redhat.com>
7962
7963         * sysdeps/pthread/posix-timer.h (TIMER_MAX): Define if not defined.
7964         (timer_id2ptr): Fix typo.
7965
7966 2003-03-25  Ulrich Drepper  <drepper@redhat.com>
7967
7968         * pthreadP.h: Define SIGCANCEL and SIGTIMER.
7969         * sysdeps/i386/pthreaddef.h: Remove SIGCANCEL definition.
7970         * sysdeps/ia64/pthreaddef.h: Likewise.
7971         * sysdeps/powerpc/pthreaddef.h: Likewise.
7972         * sysdeps/s390/pthreaddef.h: Likewise.
7973         * sysdeps/sh/pthreaddef.h: Likewise.
7974         * sysdeps/x86_64/pthreaddef.h: Likewise.
7975         * init.c (__pthread_initialize_minimal): Block SIGTIMER.
7976         * sysdeps/pthread/sigaction.c: Also prevent SIGTIMER handler from
7977         being changed.
7978         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Make sure
7979         SIGTIMER is not unblocked.
7980         * sysdeps/unix/sysv/linux/allocrtsig.c (current_rtmin): One more
7981         RT signal taken.
7982         * sysdeps/unix/sysv/linux/pthread_kill.c: Do not allow SIGTIMER to
7983         be send.
7984         * sysdeps/pthread/posix-timer.h (timer_id2ptr, timer_ptr2id): Just
7985         pass pointer through as ID.
7986         * sysdeps/unix/sysv/linux/bits/local_lim.h (TIMER_MAX): Removed.
7987         * sysdeps/unix/sysv/linux/kernel-posix-timers.h: New file.
7988         * sysdeps/unix/sysv/linux/timer_create.c: New file.
7989         * sysdeps/unix/sysv/linux/timer_delete.c: New file.
7990         * sysdeps/unix/sysv/linux/timer_getoverr.c: New file.
7991         * sysdeps/unix/sysv/linux/timer_gettime.c: New file.
7992         * sysdeps/unix/sysv/linux/timer_routines.c: New file.
7993         * sysdeps/unix/sysv/linux/timer_settime.c: New file.
7994         * sysdeps/unix/sysv/linux/ia64/Versions: New file.
7995         * sysdeps/unix/sysv/linux/ia64/timer_create.c: New file.
7996         * sysdeps/unix/sysv/linux/ia64/timer_delete.c: New file.
7997         * sysdeps/unix/sysv/linux/ia64/timer_getoverr.c: New file.
7998         * sysdeps/unix/sysv/linux/ia64/timer_gettime.c: New file.
7999         * sysdeps/unix/sysv/linux/ia64/timer_settime.c: New file.
8000         * sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: New file.
8001         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c: New file.
8002         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c: New file.
8003         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c: New file.
8004         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c: New file.
8005         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c: New file.
8006         * sysdeps/unix/sysv/linux/s390/s390-64/Versions: New file.
8007         * sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c: New file.
8008         * sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c: New file.
8009         * sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c: New file.
8010         * sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c: New file.
8011         * sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c: New file.
8012         * sysdeps/unix/sysv/linux/x86_64/Versions: New file.
8013         * sysdeps/unix/sysv/linux/x86_64/compat-timer.h: New file.
8014         * sysdeps/unix/sysv/linux/x86_64/timer_create.c: New file.
8015         * sysdeps/unix/sysv/linux/x86_64/timer_delete.c: New file.
8016         * sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c: New file.
8017         * sysdeps/unix/sysv/linux/x86_64/timer_gettime.c: New file.
8018         * sysdeps/unix/sysv/linux/x86_64/timer_settime.c: New file.
8019
8020         * pthreadP.h: Remove FRAME_LEFT definition.
8021         * cleanup.c (_pthread_cleanup_push): Don't check for reference to
8022         already left frame.  Programs which have this problem are not POSIX
8023         compliant.
8024         * cleanup_defer.c (_pthread_cleanup_push_defer): Likewise.
8025
8026 2003-03-24  Ulrich Drepper  <drepper@redhat.com>
8027
8028         * sysdeps/pthread/tst-timer.c: Check return values of the
8029         functions we test.
8030
8031 2003-03-23  Roland McGrath  <roland@redhat.com>
8032
8033         * tst-tls3.c (do_test) [! HAVE___THREAD]: Don't test anything.
8034         * tst-tls3mod.c: Likewise.
8035         * tst-tls1.c: Likewise.
8036         * tst-tls2.c: Likewise.
8037
8038         * tst-mutex5.c (do_test): Unlock before destroy, otherwise we invoke
8039         undefined behavior.
8040
8041         * tst-join5.c (tf1, tf2): Add a cast.
8042
8043         * Makeconfig (includes): Append -I$(..)nptl to this variable.
8044
8045         * tst-barrier2.c (do_test) [! _POSIX_THREAD_PROCESS_SHARED]:
8046         Don't test anything.
8047         * tst-cond4.c: Likewise.
8048         * tst-cond6.c: Likewise.
8049         * tst-flock2.c: Likewise.
8050         * tst-mutex4.c: Likewise.
8051         * tst-rwlock4.c: Likewise.
8052         * tst-signal1.c: Likewise.
8053         * tst-spin2.c: Likewise.
8054         * tst-cond11.c [! _POSIX_CLOCK_SELECTION]: Likewise.
8055
8056         * tst-mutex4.c: Use test-skeleton.c.
8057         * tst-spin2.c: Likewise.
8058         * tst-sysconf.c: Likewise.
8059         * tst-barrier2.c: Likewise.
8060         * tst-cond4.c: Likewise.
8061         * tst-cond6.c: Likewise.
8062         * tst-rwlock4.c: Likewise.
8063         * tst-unload.c: Likewise.
8064         * tst-flock2.c (do_test): Use return instead of exit.
8065
8066 2003-03-22  Jakub Jelinek  <jakub@redhat.com>
8067
8068         * sysdeps/unix/sysv/linux/fork.c (__fork): Add libc_hidden_def.
8069
8070 2003-03-21  Ulrich Drepper  <drepper@redhat.com>
8071
8072         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
8073         (__lll_mutex_trylock): Use atomic_compare_and_exchange_val_acq
8074         instead of __lll_compare_and_swap.
8075         * sysdeps/unix/sysv/linux/ia64/pthread_once.c (__pthread_once):
8076         Likewise.
8077         Removed definition if __lll_compare_and_swap.
8078
8079         * cancellation.c: Adjust for new form of compare&exchange macros.
8080         * cleanup_defer.c: Likewise.
8081         * init.c: Likewise.
8082         * libc-cancellation.c: Likewise.
8083         * old_pthread_cond_broadcast.c: Likewise.
8084         * old_pthread_cond_signal.c: Likewise.
8085         * old_pthread_cond_timedwait.c: Likewise.
8086         * old_pthread_cond_wait.c: Likewise.
8087         * pthread_cancel.c: Likewise.
8088         * pthread_create.c: Likewise.
8089         * pthread_detach.c: Likewise.
8090         * pthread_join.c: Likewise.
8091         * pthread_key_delete.c: Likewise.
8092         * pthread_setcancelstate.c: Likewise.
8093         * pthread_setcanceltype.c: Likewise.
8094         * pthread_timedjoin.c: Likewise.
8095         * pthread_tryjoin.c: Likewise.
8096         * sysdeps/pthread/createthread.c: Likewise.
8097
8098 2003-03-20  Ulrich Drepper  <drepper@redhat.com>
8099
8100         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Include <atomic.h>.
8101         Remove __lll_add, __lll_dec_if_positive, and __lll_test_and_set
8102         definitions.  Replace uses with calls to atomic_* functions.
8103         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
8104         * sysdeps/unix/sysv/linux/lowlevellock.c: Replace __lll_add and
8105         __lll_test_and_set calls with atomic_exchange_and_add and
8106         atomic_exchange calls respectively.
8107         * sysdeps/unix/sysv/linux/sem_post.c: Likewise.
8108         * sysdeps/unix/sysv/linux/sem_timedwait.c: Likewise.
8109         * sysdeps/unix/sysv/linux/sem_trywait.c: Likewise.
8110         * sysdeps/unix/sysv/linux/sem_wait.c: Likewise.
8111         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: Likewise.
8112         * sysdeps/unix/sysv/linux/ia64/sem_port.c: Likewise.
8113         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c: Likewise.
8114
8115         * allocatestack.c (allocate_stack): Assume atomic_exchange_and_add
8116         returns the old value.
8117
8118 2003-03-20  Martin Schwidefsky  <sky@mschwid3.boeblingen.de.ibm.com>
8119
8120         * sysdeps/s390/pthread_spin_lock.c (pthread_spin_lock): Use type
8121         int for variable OLDVAL and correct inline assembler contraint.
8122         * sysdeps/s390/pthread_spin_trylock.c (pthread_spin_trylock): Use
8123         type int for variable OLD.
8124
8125         * sysdeps/s390/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define it
8126         only for s390-32.
8127         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
8128         (SINGLE_THREAD_P): Use global variable __local_multiple_threads
8129         instead of multiple_threads field in the TCB.
8130
8131 2003-03-19  Ulrich Drepper  <drepper@redhat.com>
8132
8133         * sysdeps/i386/i686/bits/atomic.h: Removed.
8134         * sysdeps/i386/i586/bits/atomic.h: Removed.
8135         * sysdeps/i386/i486/bits/atomic.h: Removed.  Moved to glibc.
8136         * sysdeps/x86_64/bits/atomic.h: Removed.  Moved to glibc.
8137         * sysdeps/s390/bits/atomic.h: Removed.  Moved to glibc.
8138         * sysdeps/sh/bits/atomic.h: Removed.  Moved to glibc.
8139         * sysdeps/ia64/bits/atomic.h: Removed.  Moved to glibc.
8140         * sysdeps/powerpc/bits/atomic.h: Removed.  Moved to glibc.
8141         * atomic.h: Removed.  Moved to glibc.
8142
8143         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Add
8144         support for clock selection.
8145
8146         * sysdeps/pthread/pthread_cond_broadcast.c: Release lock before
8147         signalling waiters.
8148
8149 2003-03-18  Roland McGrath  <roland@redhat.com>
8150
8151         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_test_and_set):
8152         Add __lll_rel_instr first.  Add memory clobber.
8153         (lll_mutex_unlock): Use __lll_test_and_set.
8154         From Paul Mackerras <paulus@samba.org>.
8155
8156         * sysdeps/powerpc/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define
8157         unconditionally.
8158         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
8159         (SINGLE_THREAD_P):  Add `header.' prefix.
8160         From Paul Mackerras <paulus@samba.org>.
8161
8162         * Versions (libpthread: GLIBC_2.3.2): Move pthread_tryjoin_np and
8163         pthread_timedjoin_np to ...
8164         (libpthread: GLIBC_2.3.3): ... here.
8165         (libpthread: GLIBC_2.2): Move pthread_barrierattr_getpshared there too.
8166
8167         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
8168         Avoid shadowing VAL variable.
8169
8170         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_test_and_set):
8171         New macro.
8172
8173 2003-03-18  Ulrich Drepper  <drepper@redhat.com>
8174
8175         * Makefile (tests): Add tst-cond11.
8176         * tst-cond11.c: New file.
8177
8178         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Reorder
8179         struct passed to cleanup handler to eliminate one more
8180         instruction.
8181         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
8182
8183         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
8184         (pthrad_cond_t): Replace __unused field with __clock.
8185
8186         * sysdeps/pthread/pthread_cond_wait.c: Release condvar lock before
8187         waken all waiters in cleanup handler.
8188         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
8189         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
8190
8191         * pthread_condattr_getclock.c: New file.
8192         * pthread_condattr_setclock.c: New file.
8193         * sysdeps/pthread/pthread.h: Declare these new functions.
8194         * Versions [GLIBC_2.3.3] (libpthread): Add the new functions.
8195         * Makefile (libpthread-routines): Add the new functions.
8196         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_condattr):
8197         Renamed field to value.  Document use of the bits.
8198         * pthread_condattr_getpshared.c: Adjust for struct pthread_condattr
8199         change.
8200         * pthread_condattr_setpshared.c: Likewise.
8201         * pthread_cond_init.c (__pthread_cond_init): Initialized __clock field.
8202         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add cond_clock symbol.
8203         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
8204         Add __clock field.
8205         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
8206         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
8207         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
8208         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
8209         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
8210         Implement clock selection.
8211         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
8212         * pthread-errnos.sym: Add ENOSYS.
8213         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
8214         _POSIX_CLOCK_SELECTION.
8215         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
8216
8217         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Remove
8218         invalid .size directive.
8219
8220 2003-03-17  Roland McGrath  <roland@redhat.com>
8221
8222         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait):
8223         Formatting tweaks.
8224
8225 2003-03-17  Ulrich Drepper  <drepper@redhat.com>
8226
8227         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: Use __builtin_expect.
8228         Use __lll_add instead of spelling it out.  Use protected symbol names.
8229         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Use __builtin_expect.
8230         Use __lll_add.
8231         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_compare_and_swap):
8232         Renamed from lll_compare_and_swap.  Use new name where necessary.
8233         (__lll_add): Defined.
8234         (__lll_dec_if_positive): Defined.
8235         (__lll_test_and_set): Defined.
8236         * sysdeps/ia64/pthread_spin_init.c: Removed.
8237         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: Removed.
8238         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: Removed.
8239         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: Removed.
8240         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: Removed.
8241         * sysdeps/unix/sysv/linux/ia64/libc-lowlevellock.c: Removed.
8242         * sysdeps/unix/sysv/linux/ia64/libc-lowlevelmutex.c: Removed.
8243         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Removed.
8244         * sysdeps/ia64/bits/atomic.h: Add __builtin_expect where appropriate.
8245         * sysdeps/ia64/pthread_spin_unlock.c (pthread_spin_unlock): Use
8246         __sync_lock_release_si.
8247         Patch by Jakub Jelinek.
8248
8249         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
8250         Fix timeout handling.
8251         (__lll_timedwait_tid): Likewise.
8252         (lll_unlock_wake_cb): Wake up other waiters if necessary.
8253         Patch by Jakub Jelinek.
8254
8255         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Pretty printing.
8256
8257 2003-03-17  Roland McGrath  <roland@redhat.com>
8258
8259         PowerPC port contributed by Paul Mackerras <paulus@samba.org>.
8260         * sysdeps/pthread/pthread_spin_init.c: New file.
8261         * sysdeps/pthread/pthread_spin_unlock.c: New file.
8262         * sysdeps/powerpc/Makefile: New file.
8263         * sysdeps/powerpc/pthread_spin_lock.c: New file.
8264         * sysdeps/powerpc/pthread_spin_trylock.c: New file.
8265         * sysdeps/powerpc/pthreaddef.h: New file.
8266         * sysdeps/powerpc/tcb-offsets.sym: New file.
8267         * sysdeps/powerpc/td_ta_map_lwp2thr.c: New file.
8268         * sysdeps/powerpc/tls.h: New file.
8269         * sysdeps/powerpc/bits/atomic.h: New file.
8270         * sysdeps/unix/sysv/linux/libc-lowlevelmutex.c: New file.
8271         * sysdeps/unix/sysv/linux/libc-lowlevellock.c: New file.
8272         * sysdeps/unix/sysv/linux/lowlevellock.c: New file.
8273
8274         * sysdeps/unix/sysv/linux/lowlevelmutex.c: New file.
8275         * sysdeps/unix/sysv/linux/sem_post.c: New file.
8276         * sysdeps/unix/sysv/linux/sem_timedwait.c: New file.
8277         * sysdeps/unix/sysv/linux/sem_trywait.c: New file.
8278         * sysdeps/unix/sysv/linux/sem_wait.c: New file.
8279         * sysdeps/unix/sysv/linux/powerpc/Makefile: New file.
8280         * sysdeps/unix/sysv/linux/powerpc/createthread.c: New file.
8281         * sysdeps/unix/sysv/linux/powerpc/fork.c: New file.
8282         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: New file.
8283         * sysdeps/unix/sysv/linux/powerpc/pt-vfork.S: New file.
8284         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c: New file.
8285         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: New file.
8286         * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: New file.
8287         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: New file.
8288         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: New file.
8289
8290         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: Use __gettimeofday,
8291         not gettimeofday.
8292         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: Likewise.
8293         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Likewise.
8294         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Likewise.
8295         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: Likewise.
8296         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
8297
8298 2003-03-17  Ulrich Drepper  <drepper@redhat.com>
8299
8300         * sysdeps/pthread/pthread_cond_wait.c: Correct exit criteria.
8301         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
8302         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
8303         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
8304         Patch by Ewald Snel <ewald@rambo.its.tudelft.nl>.
8305
8306 2003-03-16  Roland McGrath  <roland@redhat.com>
8307
8308         * tst-fork4.c: Include <string.h>.
8309         * tst-signal2.c: Likewise.
8310         * tst-mutex5.c (do_test): exit -> return.
8311         * tst-mutex2.c: Include <stdlib.h>.
8312
8313 2003-03-16  Ulrich Drepper  <drepper@redhat.com>
8314
8315         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
8316         (__lll_mutex_timedlock_wait): Correct expected value after
8317         spurious wakeup.  Otherwise we would never wait again.
8318
8319         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Work around red
8320         zone versus inline asm stupidity.  Use correct instructions.
8321
8322         * tst-rwlock6.c: Add some more status output.
8323
8324 2003-03-15  Roland McGrath  <roland@redhat.com>
8325
8326         * sysdeps/pthread/configure.in: New file.
8327         * sysdeps/pthread/configure: New file (generated).
8328
8329 2003-03-15  Ulrich Drepper  <drepper@redhat.com>
8330
8331         * allocatestack.c (allocate_stack): Store the exact stack size of
8332         user allocated stacks.
8333
8334 2003-03-15  Jakub Jelinek  <jakub@redhat.com>
8335
8336         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
8337         (SINGLE_THREAD): Use `header' prefix instead of `header.data'.
8338         * sysdeps/sh/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Likewise.
8339         * sysdeps/sh/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define.
8340         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (SINGLE_THREAD_P):
8341         Use `header.' prefix.
8342         * sysdeps/ia64/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Likewise.
8343
8344 2003-03-15  Ulrich Drepper  <drepper@redhat.com>
8345
8346         * sysdeps/x86_64/pthreaddef.h (CURRENT_STACK_FRAME): Don't use
8347         __builtin_frame_address, use stack pointer.
8348
8349         * sysdeps/unix/sysv/linux/jmp-unwind.c: Use CURRENT_STACK_FRAME
8350         instead of __builtin_frame_pointer.
8351
8352 2003-03-14  Ulrich Drepper  <drepper@redhat.com>
8353
8354         * tst-basic1.c (do_test): Add cast to avoid warning.
8355         * tst-basic2.c (do_test): Likewise.
8356
8357         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Use correct
8358         amount of stack correction.
8359
8360         * tst-fork4.c: Use test-skeleton.c.
8361
8362 2003-03-14  Roland McGrath  <roland@redhat.com>
8363
8364         * init.c: Fix typo "#eli" for "#else".
8365
8366 2003-03-14  Steven Munroe  <sjmunroe@us.ibm.com>
8367
8368         * allocatestack.c (__stack_user): Use hidden_data_def.
8369         * pthread_create.c (__pthread_keys): Likewise.
8370
8371         * init.c [__powerpc__] (__NR_set_tid_address): Define it.
8372
8373 2003-03-14  Roland McGrath  <roland@redhat.com>
8374
8375         * tst-fork4.c: New file.
8376         * Makefile (tests): Add it.
8377
8378         * descr.h (struct pthread): Move the union out of [!TLS_DTV_AT_TP], so
8379         we always define the padding space.
8380         [!TLS_DTV_AT_TP]: Give tcbhead_t field a name, `header', since GCC
8381         stopped supporting its own extensions fully.
8382         [TLS_MULTIPLE_THREADS_IN_TCB]: Put `multiple_threads' inside a wrapper
8383         struct also called `header', so `header.multiple_threads' is the field
8384         name to use on all machines.
8385         * allocatestack.c (allocate_stack): Use `header.' prefix.
8386         * sysdeps/pthread/createthread.c (create_thread): Likewise.
8387         * pthread_create.c (__pthread_create_2_1): Likewise.
8388         * sysdeps/i386/tls.h (INSTALL_NEW_DTV, THREAD_DTV): Likewise.
8389         (THREAD_SELF): Likewise.
8390         * sysdeps/x86_64/tls.h: Likewise.
8391         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
8392         (SINGLE_THREAD_P): Likewise.
8393         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
8394         (SINGLE_THREAD_P): Likewise.
8395         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
8396         (SINGLE_THREAD_P): Likewise.
8397
8398         * sysdeps/s390/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Use REGS[18]
8399         value directly.
8400
8401 2003-03-14  Ulrich Drepper  <drepper@redhat.com>
8402
8403         * pthread_create.c (start_thread): Use CALL_THREAD_FCT if defined.
8404         * sysdeps/i386/tls.h: Define CALL_THREAD_FCT.
8405
8406         * pthread_create.c (start_thread): setjmp is expected to return 0.
8407
8408         * sysdeps/x86_64/tls.h (THREAD_GETMEM): Mark asms volatile.
8409         (THREAD_GETMEM_NC): Likewise.
8410
8411 2003-03-13  Ulrich Drepper  <drepper@redhat.com>
8412
8413         * allocatestack.c (allocate_stack): If MULTI_PAGE_ALIASING is defined
8414         and the size of the stack which must be allocated is a multiple,
8415         allocate one more page.
8416         * sysdeps/i386/i686/Makefile: Don't define COLORING_INCREMENT, but
8417         MULTI_PAGE_ALIASING.
8418
8419 2003-03-13  Roland McGrath  <roland@redhat.com>
8420
8421         * pthread_create.c (start_thread): Set EXITING_BIT after the
8422         event-reporting (and destructors), not before.
8423
8424 2003-03-13  Jakub Jelinek  <jakub@redhat.com>
8425
8426         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_timed_wait,
8427         lll_futex_wake): Declare register variables as long int instead of
8428         unsigned long int.  Patch by Ian Wienand <ianw@gelato.unsw.edu.au>.
8429         Make syscall arguments clobbered by the syscall.
8430         (lll_futex_wait): Define using lll_futex_timed_wait.
8431
8432         * sysdeps/ia64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Cast regs[13]
8433         to void *.
8434
8435         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Only declare and set
8436         PPID if [! NDEBUG].
8437
8438         * allocatestack.c (nptl_ncreated): Only declare if
8439         COLORING_INCREMENT != 0.
8440
8441         * pthreadP.h (__pthread_enable_asynccancel_2): New prototype.
8442         (__libc_enable_asynccancel_2): Remove prototype.
8443
8444         * sysdeps/unix/sysv/linux/ia64/fork.c (ARCH_FORK): Swap ptid and
8445         ctid to match kernel.
8446
8447 2003-03-12  Ulrich Drepper  <drepper@redhat.com>
8448
8449         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add
8450         libc_multiple_threads.
8451         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Move definition of
8452         __libc_multiple_threads to...
8453         * sysdeps/unix/sysv/linux/libc_multiple_threads.c: ...here.  New file.
8454
8455         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Remove unnecessary
8456         versioning.
8457         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
8458         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
8459
8460         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S
8461         (__pthread_once_internal): Define.
8462
8463         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Use shlib-compat.h
8464         macros instead of .symver directly.
8465         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
8466         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
8467
8468         * sysdeps/x86_64/tls.h [__ASSEMBLER__]: Include tcb-offsets.h.
8469         * sysdeps/x86_64/tcb-offsets.sym: New file.
8470         * sysdeps/x86_64/Makefile: New file.
8471
8472         * sysdeps/i386/tcb-offsets.sym: Add SELF.
8473         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Use SELF
8474         to access own pthread_t in TCB.
8475         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
8476         Likewise.
8477         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
8478         Likewise.
8479         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
8480
8481 2003-03-12  Roland McGrath  <roland@redhat.com>
8482
8483         * pthread-errnos.sym: New file.
8484         * Makefile (gen-as-const-headers): New variable, list that file.
8485         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Include generated
8486         header <pthread-errnos.h> instead of defining errno values here.
8487         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
8488         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
8489         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
8490         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
8491         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
8492         Likewise.
8493         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
8494         Likewise.
8495         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
8496         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
8497         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
8498         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
8499         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
8500         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
8501         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
8502         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
8503         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
8504         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise.
8505         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
8506         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Likewise.
8507         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
8508         * sysdeps/unix/sysv/linux/sh/sem_post.S: Likewise.
8509         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
8510         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
8511         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
8512         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
8513         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
8514         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
8515         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
8516         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Likewise.
8517         * sysdeps/i386/i486/pthread_spin_trylock.S: Likewise.
8518         * sysdeps/x86_64/pthread_spin_trylock.S: Likewise.
8519         * sysdeps/sh/pthread_spin_trylock.S: Likewise.
8520         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
8521         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
8522
8523         * sysdeps/unix/sysv/linux/fork.c: Add an assert to check that
8524         CLONE_CHILD_SETTID worked.
8525
8526 2003-03-12  Ulrich Drepper  <drepper@redhat.com>
8527
8528         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: New
8529         file.
8530         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S: New
8531         file.
8532
8533         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
8534         (pthread_cond_t): Add padding.
8535
8536         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: New file.
8537         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: New file.
8538         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: New file.
8539
8540         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
8541         (__pthread_rwlock_timedwrlock): Add missing opcode suffix.
8542         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
8543         (__pthread_rwlock_timedrdlock): Likewise.
8544         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
8545         (__pthread_rwlock_wrlock): Likewise.
8546         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
8547         (__pthread_rwlock_rdlock): Likewise.
8548
8549         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: New file.
8550
8551         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Return
8552         result of lock re-get if it fails.
8553
8554 2003-03-11  Ulrich Drepper  <drepper@redhat.com>
8555
8556         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Fix asm syntax.
8557         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
8558         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise.
8559         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
8560         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
8561         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
8562         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
8563         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
8564         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
8565         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
8566
8567         * sysdeps/x86_64/tls.h (THREAD_SELF, THREAD_GETMEM, THREAD_GETMEM_NC,
8568         THREAD_SETMEM, THREAD_SETMEM_NC): Correct asm syntax.
8569
8570         * allocatestack.c [! TLS_MULTIPLE_THREADS_IN_TCB] (allocate_stack):
8571         Initialize *__libc_multiple_threads_ptr not __libc_multiple_threads.
8572         * sysdeps/pthread/createthread.c [! TLS_MULTIPLE_THREADS_IN_TCB]
8573         (create_thread): Likewise.
8574         Define __pthread_multiple_threads and __libc_multiple_threads_ptr.
8575         * init.c (__pthread_initialize_minimal_internal): Initialize
8576         __libc_multiple_threads_ptr if necessary.
8577         * pthreadP.h: Adjust prototype for __libc_pthread_init.  Declare
8578         __pthread_multiple_threads and __libc_multiple_threads_ptr.
8579         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Define
8580         __libc_multiple_threads.
8581         (__libc_pthread_init): Return pointer to __libc_pthread_init if
8582         necessary.
8583
8584         * sysdeps/i386/tls.h (THREAD_SETMEM): Fix one-byte variant.
8585         (THREAD_SETMEM_NC): Likewise.
8586
8587         * sysdeps/x86_64/pthread_spin_trylock.c: Removed.
8588         * sysdeps/x86_64/pthread_spin_trylock.S: New file.
8589         * sysdeps/x86_64/pthread_spin_unlock.c: Removed.
8590         * sysdeps/x86_64/pthread_spin_unlock.S: New file.
8591
8592         * sysdeps/i386/i486/pthread_spin_trylock.S (pthread_spin_trylock):
8593         Eliminate one entire instruction.
8594
8595         * cancellation.c (__pthread_enable_asynccancel_2): New function.
8596         * pthreadP.h: Declare __pthread_enable_asynccancel_2.
8597         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
8598         (__pthread_cond_timedwait): Use __pthread_enable_asynccancel_2
8599         instead of __pthread_enable_asynccancel.
8600         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
8601         (__pthread_cond_wait): Likewise.
8602         * sysdeps/pthread/pthread_cond_timedwait.c
8603         (__pthread_cond_timedwait): Likewise.
8604         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
8605
8606         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
8607         (__condvar_cleanup): Wake up all waiters in case we got signaled
8608         after being woken up but before disabling asynchronous
8609         cancellation.
8610         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise.
8611         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
8612         (__condvar_cleanup): Likewise.
8613
8614         * init.c (__NR_set_tid_address): If already defined, don't redefine.
8615         Make it an error if architecture has no #if case.  Add x86-64.
8616
8617         * sysdeps/unix/sysv/linux/x86_64/Makefile: Add flags for
8618         pt-initfini.s generation.
8619
8620         * sysdeps/x86_64/tls.h: Include <asm/prctl.h>.
8621         (TLS_INIT_TP): Fix typo.
8622
8623 2003-03-11  Jakub Jelinek  <jakub@redhat.com>
8624
8625         * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Swap 2nd and
8626         3rd argument of __arch_compare_and_exchange_{32,64}_val_acq.
8627
8628         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Include semaphore.h.
8629         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Likewise.
8630         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: Likewise.
8631         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: Likewise.
8632         * sysdeps/unix/sysv/linux/s390/sem_post.c: Likewise.
8633         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
8634         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Likewise.
8635         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Likewise.
8636
8637 2003-03-11  Ulrich Drepper  <drepper@redhat.com>
8638
8639         * sysdeps/pthread/pthread_cond_timedwait.c
8640         (__pthread_cond_timedwait): Return the result of the final
8641         locking.  If it succeeds, the regular function return value.
8642
8643         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait):
8644         Return result of the final locking.
8645         * version.c (__nptl_main): Work around problems with the strange
8646         INTERNAL_SYSCALL macro on ppc32.
8647         * init.c (__pthread_initialize_minimal_internal): Unblock
8648         SIGCANCEL in case the parent blocked it.
8649         Reported by Paul Mackerras <paulus@samba.org>.
8650
8651         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: New file.
8652         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: New file.
8653         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: New file.
8654
8655 2003-03-11  Jakub Jelinek  <jakub@redhat.com>
8656
8657         * sysdeps/pthread/pthread_cond_timedwait.c
8658         (__pthread_cond_timedwait): Unlock and fail if
8659         __pthread_mutex_unlock_internal failed.
8660
8661         * sysdeps/pthread/createthread.c (ARCH_CLONE): Define if not defined.
8662         (create_thread): Only assert PD->tcb != NULL under [TLS_TCB_AT_TP].
8663         Use ARCH_CLONE.
8664         * allocatestack.c (ALLOCATE_STACK_PARMS): New macro.
8665         [NEED_SEPARATE_REGISTER_STACK] (STACK_VARIABLES,
8666         STACK_VARIABLES_ARGS, STACK_VARIABLES_PARMS, ALLOCATE_STACK_PARMS,
8667         ALLOCATE_STACK): New macros.
8668         (TLS_TPADJ): New macro.
8669         (get_cached_stack, queue_stack, __deallocate_stack): Use TLS_TPADJ.
8670         (allocate_stack): Handle TLS_DTV_AT_TP and
8671         NEED_SEPARATE_REGISTER_STACK.  Use TLS_TPADJ.
8672         * pthread_create.c (__pthread_create_2_1) [! TLS_TCB_AT_TP]:
8673         Don't set PD->self.
8674         * init.c [__ia64__] (__NR_set_tid_address): Define.
8675
8676         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: New file.
8677         * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: New file.
8678         * sysdeps/unix/sysv/linux/ia64/fork.c: New file.
8679         * sysdeps/unix/sysv/linux/ia64/createthread.c: New file.
8680         * sysdeps/unix/sysv/linux/ia64/libc-lowlevellock.c: New file.
8681         * sysdeps/unix/sysv/linux/ia64/libc-lowlevelmutex.c: New file.
8682         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: New file.
8683         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: New file.
8684         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: New file.
8685         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: New file.
8686         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: New file.
8687         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: New file.
8688         * sysdeps/unix/sysv/linux/ia64/sem_post.c: New file.
8689         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: New file.
8690         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: New file.
8691         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: New file.
8692         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: New file.
8693         * sysdeps/ia64/bits/atomic.h: New file.
8694         * sysdeps/ia64/Makefile: New file.
8695         * sysdeps/ia64/pthread_spin_init.c: New file.
8696         * sysdeps/ia64/pthread_spin_lock.c: New file.
8697         * sysdeps/ia64/pthread_spin_trylock.c: New file.
8698         * sysdeps/ia64/pthread_spin_unlock.c: New file.
8699         * sysdeps/ia64/pthreaddef.h: New file.
8700         * sysdeps/ia64/tcb-offsets.sym: New file.
8701         * sysdeps/ia64/td_ta_map_lwp2thr.c: New file.
8702         * sysdeps/ia64/tls.h: New file.
8703
8704         * sysdeps/s390/pthreaddef.h (__exit_thread_inline): Pass 1 argument
8705         to syscall instead of no arguments.
8706
8707 2003-03-10  Ulrich Drepper  <drepper@redhat.com>
8708
8709         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: New file.
8710         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: New file.
8711         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: New file.
8712         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: New file.
8713
8714         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Fix error value in
8715         unused code.
8716
8717         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: New file
8718
8719         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
8720         lowlevelbarrier.sym.
8721         * sysdeps/unix/sysv/linux/lowlevelbarrier.sym: New file.
8722         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S:
8723         Include lowlevelbarrier.h and don't define offsets locally.
8724         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Likewise.
8725
8726         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
8727         (__lll_mutex_lock_wait): Reverse order of first two parameters.
8728         (__lll_mutex_timedlock_wait): Likewise.
8729         (lll_mutex_lock): Adjust asm for that.
8730         (lll_mutex_timedlock): Likewise.  Mark cx, cc, r10 as clobbered.
8731         (lll_lock): Adjust asm for operand order change.
8732         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: New file.
8733         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevelmutex.S: New file.
8734
8735         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (__lll_lock_wait):
8736         Reverse order of parameters.
8737         (__lll_timedwait_tid): Remove regparms attribute.
8738         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: New file.
8739         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: New file.
8740
8741         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
8742         (__lll_timedwait_tid): Remove one unnecessary instruction.
8743
8744         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Define
8745         __lll_mutex_timedlock_wait only for NOT_IN_libc.
8746         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Include
8747         lowlevelmutex.S.
8748
8749         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define
8750         lll_unlock_wake_cb, __lll_wait_tid, and __lll_timedwait_tid only
8751         for NOT_IN_libc.
8752         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Include
8753         lowlevellock.S.
8754
8755         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Don't define
8756         LOCK is already defined.  Don't define __lll_mutex_timedlock_wait
8757         for libc.so.
8758         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Only
8759         define LOCK here (if UP is not defined).  The actual code is in
8760         lowlevelmutex.S.
8761
8762         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Don't define
8763         LOCK is already defined.  Don't define lll_unlock_wake_cb and
8764         __lll_timedwait_tid for libc.so.
8765         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Only
8766         define LOCK here (if UP is not defined).  The actual code is in
8767         lowlevellock.S.
8768
8769         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Not needed anymore.
8770         * sysdeps/unix/sysv/linux/s390/lowlevelsem.h: Likewise.
8771         * sysdeps/unix/sysv/linux/s390/sem_post.c: Include lowlevellock.h
8772         instead of lowlevelsem.h.
8773         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
8774         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Likewise.
8775         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Likewise.
8776
8777         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
8778         lowlevelrwlock.sym.
8779         * sysdeps/unix/sysv/linux/lowlevelrwlock.sym: New file.
8780         * sysdeps/unix/sysv/linux/i386/lowlevelrwlock.h: Removed.
8781         * sysdeps/unix/sysv/linux/sh/lowlevelrwlock.h: Removed.
8782
8783         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_trylock): Fix
8784         register loading.
8785         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_trylock): Undo
8786         last changed.  D'oh.
8787
8788         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: New file.
8789
8790         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove declaration
8791         of __libc_locking_needed.
8792         (lll_trylock): Initialize %eax to zero.
8793
8794         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Update
8795         pthread_cond_t definition.
8796
8797 2003-03-10  Roland McGrath  <roland@redhat.com>
8798
8799         * sysdeps/unix/sysv/linux/lowlevelcond.sym: New file.
8800         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add it.
8801         * sysdeps/unix/sysv/linux/sh/lowlevelcond.h: File removed.
8802         * sysdeps/unix/sysv/linux/i386/lowlevelcond.h: Likewise.
8803         * sysdeps/unix/sysv/linux/x86_64/lowlevelcond.h: Likewise.
8804
8805         * allocatestack.c (allocate_stack) [!TLS_MULTIPLE_THREADS_IN_TCB]:
8806         Instead of setting PD->multiple_threads, set globals
8807         __pthread_multiple_threads and __libc_multiple_threads.
8808         * sysdeps/pthread/createthread.c (create_thread): Likewise.
8809         * sysdeps/i386/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define it.
8810         * sysdeps/s390/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Likewise.
8811
8812         * descr.h (struct pthread): Conditionalize first member on
8813         [!TLS_DTV_AT_TP].  Replace the `header' member with an anonymous union
8814         containing an anonymous tcbhead_t.  Move `list' member out.
8815         [TLS_MULTIPLE_THREADS_IN_TCB]: Define a `multiple_threads' member.
8816         * allocatestack.c: Remove use of `header.data.' prefix.
8817         * pthread_create.c: Likewise.
8818         * init.c (__pthread_initialize_minimal_internal): Likewise.
8819         * sysdeps/pthread/createthread.c (create_thread): Likewise.
8820         * sysdeps/i386/tls.h (INSTALL_DTV): Add parens.
8821         (THREAD_SELF, THREAD_DTV, INSTALL_NEW_DTV): No `header.data.' prefix.
8822         * sysdeps/x86_64/tls.h: Likewise.
8823         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
8824         (SINGLE_THREAD_P): Likewise.
8825         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
8826         (SINGLE_THREAD_P): Likewise.
8827         * sysdeps/i386/tls.h (tcbhead_t): Remove `list' member.
8828         * sysdeps/s390/tls.h (tcbhead_t): Likewise.
8829
8830 2003-03-09  Ulrich Drepper  <drepper@redhat.com>
8831
8832         * sysdeps/unix/sysv/linux/x86_64/lowlevelcond.h: New file.
8833
8834         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: New file.
8835         * sysdeps/unix/sysv/linux/x86_64/fork.c: New file.
8836
8837         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Fix many
8838         leftovers from the ia32 code.
8839
8840         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Remove unneccessary
8841         memory load.
8842         (clear_once_control): Don't load %esi.
8843
8844         * sysdeps/x86_64/tls.h: Remove all traces of segment descriptor
8845         handling.
8846
8847         * sysdeps/unix/sysv/linux/x86_64/fork.c: New file.
8848
8849         * sysdeps/unix/sysv/linux/s390/createthread.c: Moved to...
8850         * sysdeps/unix/sysv/linux/createthread.c: ...here.
8851
8852         * Makefile (tests): Add tst-cond10.
8853         * tst-cond10.c: New file.
8854
8855 2003-03-08  Ulrich Drepper  <drepper@redhat.com>
8856
8857         * tst-tls2.c (do_test): Add TEMP_FAILURE_RETRY around sem_wait call.
8858         * tst-signal3.c (do_test): Likewise.
8859         * tst-sem5.c (do_test): Likewise.
8860         * tst-kill6.c (do_test): Likewise.
8861         * tst-tls3.c (do_test): Likewise.  Include <errno.h>.
8862
8863         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use add/sub instead
8864         of inc/dec.
8865         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Likewise.
8866         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise
8867         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
8868         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
8869         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
8870         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
8871         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
8872         Likewise.
8873         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
8874         Likewise.
8875         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
8876         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
8877         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
8878         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
8879         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
8880         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Likewise.
8881         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
8882         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
8883
8884         * allocatestack.c (allocate_stack): If mprotect() fails free the
8885         TLS memory.
8886
8887 2003-03-07  Ulrich Drepper  <drepper@redhat.com>
8888
8889         * sysdeps/i386/i486/bits/atomic.h: Fix a few unused definitions.
8890
8891         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove all trace of
8892         lll_wake_tid.  This was used only to work around kernel limits in
8893         the early days.
8894         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
8895         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Likewise.
8896         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
8897         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
8898
8899         * init.c (__static_tls_align_m1): Renamed from __static_tls_align.
8900         (__pthread_initialize_minimal_internal): Change initialization of
8901         __static_tls_align_m1 appropriately.
8902         * pthreadP.h (__static_tls_align_m1): Renamed from
8903         __static_tls_align.
8904         * allocatestack.c (allocate_stack): Use __static_tls_align_m1
8905         instead of __static_tls_align-1.
8906
8907 2003-03-04  Ulrich Drepper  <drepper@redhat.com>
8908
8909         * sysdeps/unix/sysv/linux/x86_64/Makefile: New file.
8910
8911         * pthread_create.c: Define __pthread_keys using nocommon
8912         attribute, not by placing it explicitly in bss.
8913         Remove DEFINE_DEALLOC definition.  Not needed anymore.
8914
8915         * allocatestack.c: Define ARCH_MAP_FLAGS if not already defined.
8916         Use it in mmap call to allocate stacks.
8917
8918         * sysdeps/pthread/createthread.c (create_thread): Fix comment.
8919
8920         * pthread_create.c (start_thread): Use THREAD_SETMEM to store
8921         result of the thread function.
8922
8923 2003-03-03  Ulrich Drepper  <drepper@redhat.com>
8924
8925         * sysdeps/unix/sysv/linux/s390/dl-sysdep.h: Removed.  The generic
8926         version is just fine.
8927
8928         * sysdeps/unix/sysv/linux/libc_pthread_init.c
8929         (__pthread_child_handler): Renamed from pthread_child_handler,
8930         exported, and marked hidden.  Change all users.
8931         * sysdeps/unix/sysv/linux/register-atfork.c (free_mem): Do not
8932         free __pthread_child_handler from child list.
8933
8934 2003-03-03  Martin Schwidefsky  <schwidefsky@de.ibm.com>
8935
8936         * atomic.h (atomic_exchange_and_add): Return newval, not oldval.
8937
8938         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
8939         Fix handling of cancellation and failing pthread_mutex_unlock call.
8940         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise.
8941         (__pthread_cond_wait): Likewise.
8942
8943         * sysdeps/pthread/pthread_rwlock_timedrdlock.c
8944         (pthread_rwlock_timedrdlock): Fix clobber of result variable by
8945         lll_futex_timed_wait call.
8946         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
8947         (pthread_rwlock_timedwrlock): Likewise.
8948
8949         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c (___lll_lock):
8950         Don't define lll_unlock_wake_cb and ___lll_timedwait_tid in libc.so.
8951         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Remove XXX comments.
8952
8953         * sysdeps/unix/sysv/linux/s390/sem_post.c (__new_sem_post): Fix
8954         check of lll_futex_wake return value.
8955
8956 2003-03-03  Roland McGrath  <roland@redhat.com>
8957
8958         * forward.c: Fix typo in __pthread_attr_init_2_0 compat_symbol decl.
8959
8960         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
8961         Argument to ptr___pthread_cleanup_upto is __jmp_buf, not jmp_buf.
8962         * sysdeps/unix/sysv/linux/jmp-unwind.c: Likewise.
8963
8964 2003-03-02  Ulrich Drepper  <drepper@redhat.com>
8965
8966         * sysdeps/pthread/timer_create.c (timer_create): Return correct
8967         error for CPU clocks.
8968
8969         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
8970         _POSIX_MONOTONIC_CLOCK.
8971         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
8972
8973         * tst-cancel4.c (tf_sleep): Lower sleep time a bit to not upset
8974         recent kernels.
8975
8976 2003-03-01  Ulrich Drepper  <drepper@redhat.com>
8977
8978         * descr.h (struct pthread): Move cleanup field to the front.
8979
8980 2003-03-01  Roland McGrath  <roland@redhat.com>
8981
8982         * sem_open.c (sem_open): Braino fix.
8983
8984 2003-03-01  Ulrich Drepper  <drepper@redhat.com>
8985
8986         * sysdeps/i386/tcb-offsets.sym: Add CLEANUP and CLEANUP_PREV.
8987         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Inline
8988         __pthread_cleanup_pop functionality.
8989         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
8990
8991         * descr.h (struct pthread): Move tid field to the front now that
8992         it is often used.
8993
8994         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S
8995         (__lll_mutex_timedlock_wait): Remove.
8996         (__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
8997         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
8998         (__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
8999         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
9000         (lll_unlock_wake_cb): Don't save and restore %esi.
9001         (__lll_unlock_wake): Add alignment.  Don't save, load, and restore
9002         %esi.
9003         (__lll_timedwait_tid): Add alignment.
9004         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
9005         (__lll_unlock_wake): Add alignment.  Don't save, load, and restore
9006         %esi.
9007         (__lll_timedwait_tid): Removed.
9008         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
9009         (__pthread_cond_broadcast): Don't save, load, and restore %esi.
9010         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
9011         (pthread_barrier_wait): Don't save, load, and restore %esi for
9012         last thread.
9013         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
9014         (__pthread_cond_signal): Don't save, load, and restore %esi.
9015         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
9016         (__pthread_rwlock_unlock): Don't save, load, and restore %esi.
9017         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
9018         Don't save, load, and restore %esi.
9019
9020 2003-02-27  Ulrich Drepper  <drepper@redhat.com>
9021
9022         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S:
9023         Release lock before waking up the waiters.
9024
9025         * tst-exit1.c (do_test): Don't start more than one thread in parallel.
9026
9027         * tst-rwlock9.c (writer_thread): Correct adding TIMEOUT.
9028         (reader_thread): Likewise.
9029
9030         * sysdeps/pthread/pthread_rwlock_unlock.c
9031         (__pthread_rwlock_unlock): Release internal lock early.  Don't try
9032         to wake up readers if there are none.
9033
9034         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S:
9035         Release internal lock before wake threads.
9036
9037 2003-02-26  Ulrich Drepper  <drepper@redhat.com>
9038
9039         * Makefile (tests): Add tst-rwlock10 and tst-rwlock11.
9040         * tst-rwlock8.c: Initialize lock with INIT.  Allow INIT to be
9041         predefined.
9042         * tst-rwlock9.c: Likewise.
9043         * tst-rwlock10.c: New file.
9044         * tst-rwlock11.c: New file.
9045
9046         * Makefile (tests): Add tst-dlsym1.
9047         * tst-dlsym1.c: New file.
9048
9049         * init.c (__pthread_initialize_minimal_internal): Set
9050         GL(dl_error_catch_tsd) to __libc_dl_error_tsd.
9051         * Versions (libc:GLIBC_PRIVATE): Export __libc_dl_error_tsd.
9052
9053 2003-02-24  Ulrich Drepper  <drepper@redhat.com>
9054
9055         * sem_open.c (sem_open): Fix handling of O_CREAT without O_EXCL.
9056
9057         * tst-cond2.c: Fix sychronization with child.
9058
9059         * tst-rwlock8.c (reader_thread): Remove unused variable.
9060
9061         * Makefile: Add rules to build and run tst-tls3.
9062         * tst-tls3.c: New file.
9063         * tst-tls3mod.c: New file.
9064
9065         * Makefile (tests): Add tst-rwlock8 and tst-rwlock9.
9066         * tst-rwlock8.c: New file.
9067         * tst-rwlock9.c: New file.
9068         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Fix
9069         complete broken rwlock implementation.
9070         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
9071         Likewise.
9072         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
9073         Likewise.
9074         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
9075         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
9076         * sysdeps/pthread/pthread_rwlock_rdlock.c: Likewise.
9077         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
9078         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
9079         * sysdeps/pthread/pthread_rwlock_unlock.c: Likewise.
9080         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
9081
9082 2003-02-23  Roland McGrath  <roland@redhat.com>
9083
9084         * Makefile (nptl-version): Change regexp so case sensitivity is ok.
9085
9086 2003-02-23  Ulrich Drepper  <drepper@redhat.com>
9087
9088         * Makefile (tests): Add tst-context1.
9089         * tst-context1.c: New file.
9090
9091         * Makefile (tests): Add tst-tls1 and tst-tls2.
9092         * tst-tls1.c: New file.
9093         * tst-tls2.c: New file.
9094
9095         * libc-cancellation.c (__libc_enable_asynccancel): Correct test
9096         for failed cmpxchg.
9097
9098         * pthread_create.c (start_thread): Set EXITING_BIT early.
9099
9100         * sysdeps/i386/tls.h (THREAD_GETMEM): Mark asm as volatile.
9101         (THREAD_GETMEM_NC): Likewise.
9102
9103 2003-02-22  Ulrich Drepper  <drepper@redhat.com>
9104
9105         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Shave
9106         off 3 more bytes by using offset-less instructions when possible.
9107
9108         * Makefile: Add dependency for $(objpfx)version.d.
9109
9110         * eintr.c (eintr_source): Add unnecessary return but the compiler
9111         insists.
9112
9113         * tst-kill3.c: Include <unistd.h>.
9114
9115 2003-02-21  Roland McGrath  <roland@redhat.com>
9116
9117         * pthread_create.c (start_thread): Call __libc_thread_freeres.
9118
9119 2003-02-21  Ulrich Drepper  <drepper@redhat.com>
9120
9121         * Makefile (tests): Add tst-eintr1.
9122         (distribute): Add eintr.c.
9123         * tst-eintr1.c: New file.
9124         * eintr.c: New file.
9125
9126         * pthread_cancel.c (pthread_cancel): Use tkill directly.
9127
9128         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill):
9129         Disallow sending SIGCANCEL.
9130
9131         * Makefile (tests): Remove tst-basic7.  Add tst-kill1, tst-kill2,
9132         tst-kill3, tst-kill4, tst-kill5, tst-kill6.
9133         * tst-kill1.c: New file.
9134         * tst-kill2.c: New file.
9135         * tst-kill3.c: New file.
9136         * tst-kill5.c: New file.
9137         * tst-kill6.c: New file.
9138         * tst-basic7.c: Renamed to...
9139         * tst-kill4.c: ...this.
9140
9141 2003-02-21  Roland McGrath  <roland@redhat.com>
9142
9143         * Makefile (install-lib-ldscripts): New variable.
9144
9145 2003-02-21  Ulrich Drepper  <drepper@redhat.com>
9146
9147         * pthreadP.h: Define INVALID_TD_P and INVALID_NOT_TERMINATED_TD_P.
9148         * pthread_cancel.c: Use INVALID_TD_P.
9149         * pthread_detach.c: Likewise.
9150         * pthread_getschedparam.c: Likewise.
9151         * pthread_setschedparam.c: Likewise.
9152         * sysdeps/pthread/pthread_getcpuclockid.c: Likewise.
9153         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
9154         * pthread_join.c: Use INVALID_NOT_TERMINATED_TD_P.
9155         * pthread_timedjoin.c: Likewise.
9156
9157         * tst-basic7.c: Include <signal.h>.
9158
9159         * pthread_join.c (pthread_join): Limited checking for invalid
9160         descriptors.
9161         * pthread_timedjoin.c (pthread_timedjoin_np): Likewise.
9162
9163 2003-02-20  Ulrich Drepper  <drepper@redhat.com>
9164
9165         * pthread_create.c (deallocate_tsd): Reset found_nonzero at the
9166         beginning of the loop.  Clear the entire first block of TSD.
9167         * Makefile (tests): Add tst-key4.
9168         * tst-key4.c: New file.
9169
9170 2003-02-18  Ulrich Drepper  <drepper@redhat.com>
9171
9172         * Makefile (tests): Add tst-basic7.
9173         * tst-basic7.c: New file.
9174
9175         * pthread_create.c (deallocate_tsd): Mark as internal_function.
9176         Add some more __builtin_expect.
9177
9178         * pthreadP.h: Define dummy version of DEBUGGING_P.
9179
9180 2003-02-17  Ulrich Drepper  <drepper@redhat.com>
9181
9182         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remnove
9183         _POSIX_THREAD_PRIORITY_SCHEDULING.
9184         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remove
9185         _XOPEN_REALTIME_THREADS.
9186         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
9187
9188         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): The
9189         kernel returns EINVAL for PID <= 0, work around it.
9190
9191         * Makefile (tests): Add tst-signal5.
9192         * tst-signal5.c: New file.
9193
9194         * sysdeps/unix/sysv/linux/bits/local_lim.h: Define TTY_NAME_MAX
9195         and LOGIN_NAME_MAX.
9196
9197         * tst-cancel1.c (tf): Block all signals.
9198
9199         * Makefile (tests): Add tst-basic6.
9200         * tst-basic6.c: New file.
9201
9202         * tst-basic1.c: Add test for process ID.
9203
9204         * Makefile (tests): Add tst-cancel10.
9205         * tst-cancel10.c: New file.
9206
9207         * Makefile (tests): Add tst-signal4.
9208         * tst-signal4.c: New file.
9209
9210         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Use
9211         __sigismember instead of sigismember.  Add __builtin_expect.
9212
9213 2003-02-16  Ulrich Drepper  <drepper@redhat.com>
9214
9215         * tst-attr1.c (do_test): Add tests for pthread_setcanceltype,
9216         pthread_setcancelstate, and pthread_rwlock_setpshared.
9217
9218         * tst-cancel7.c (do_test): Make sure the pid file exists before
9219         canceling the thread.
9220
9221         * tst-rwlock6.c: More pthread_rwlock_timedwrlock and
9222         pthread_rwlock_timedrdlock tests.
9223         * tst-rwlock7.c: More pthread_rwlock_timedwrlock tests.
9224         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
9225         Check for invalid tv_nsec field.
9226         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
9227         Likewise.
9228
9229         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Protect
9230         recursive mutex of overflow.
9231
9232         * tst-attr1.c (do_test): Add test for pthread_mutexattr_setpshared.
9233
9234         * libc-cancellation.c (__libc_enable_asynccancel): Rewrite to avoid
9235         going into an endless loop.
9236         * Makefile (tests): Add tst-cancel9.
9237         * tst-cancel9.c: New file.
9238
9239         * pthread_cancel.c (pthread_cancel): Use the result of __pthread_kill.
9240
9241 2003-02-15  Ulrich Drepper  <drepper@redhat.com>
9242
9243         * tst-mutex5.c (do_test): Add more timedlock tests.
9244
9245         * tst-mutex2.c: Tests of trylock and unlock with ERROR mutexes.
9246         * tst-mutex3.c (do_test): Add tests for trylock with RECURSIVE mutexes.
9247
9248         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): Don't
9249         use INLINE_SYSCALL.  Error number is returned, not -1.
9250
9251         * pthreadP.h: Mark declarations of __find_in_stack_list, __free_tcb,
9252         and __deallocate_stack with internal_function.
9253         * pthread_create.c: Adjust definitions appropriately.
9254         * allocatestack.c: Likewise.
9255
9256         * pthread_join.c: Add one more __builtin_expect.
9257         * pthread_timedjoin.c: Likewise.
9258
9259         * pthread_getspecific.c (__pthread_getspecific): Clear data->data
9260         not data of sequence number does not match.
9261         Add one __builtin_expect.
9262
9263         * Makefile (tests): Add tst-clock1.
9264         * tst-clock1.c: New file.
9265
9266         * pthread_setconcurrency.c (pthread_setconcurrency): Fail for
9267         negative arguments.
9268         * Makefile (tests): Add tst-basic5.
9269         * tst-basic5.c: New file.
9270
9271 2003-02-14  Ulrich Drepper  <drepper@redhat.com>
9272
9273         * Makefile (tests): Add tst-basic4.
9274         * tst-basic4.c: New file.
9275
9276         * pthreadP.h: Add declaraction for __nptl_nthreads.
9277         * pthread_create.c: Define __nptl_nthreads
9278         (start_thread): Increment __nptl_nthreads at beginning.  Decrement
9279         after thread is done.  If then zero, call exit(0).
9280         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
9281         Add ptr_nthreads.  Define HAVE_PTR_NTHREADS.
9282         * init.c (pthread_functions): Initialize ptr_nthreads.
9283         * allocatestack.c (nptl_nthreads): Remove definition and all uses.
9284         (__reclaim_stacks): Decrement __nptl_nthreads.
9285         * sysdeps/pthread/Makefile [$(subdir)==csu] (CFLAGS-libc-start.c):
9286         Define.
9287         * Makefile (tests): Add tst-basic3.
9288         * tst-basic3.c: New file.
9289
9290         * descr.h: Define CANCELING_BIT and CANCELING_BITMASK.  Introduce
9291         after CANCELTYPE_BIT, move the other bits up.  Update CANCEL_RESTMASK.
9292         * init.c (sigcancel_handler): Also set CANCELING_BITMASK bit in newval.
9293         * pthread_cancel.c (pthread_cancel): Likewise.  Also set CANCELING_BIT
9294         if asynchronous canceling is enabled.
9295         * pthread_join.c (pthread_join): When recognizing circular joins,
9296         take into account the other thread might be already canceled.
9297         * Makefile (tests): Add tst-join5.
9298         * tst-join5.c: New file.
9299
9300         * Makefile (tests): Add tst-join4.
9301         * tst-join4.c: New file.
9302
9303 2003-02-13  Ulrich Drepper  <drepper@redhat.com>
9304
9305         * tst-cond4.c (main): Add test of pthread_attr_getpshared.
9306
9307 2003-02-13  Martin Schwidefsky  <schwidefsky@de.ibm.com>
9308
9309         * sysdeps/s390/tls.h (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM,
9310         THREAD_SETMEM_NC): Use passed descr instead of THREAD_SELF.
9311         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c (_longjmp_unwind): Avoid
9312         warning.
9313         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Include <sys/time.h>
9314         to avoid warning.
9315         * sysdeps/unix/sysv/linux/s390/sem_post.c (__new_sem_post): Return
9316         error if lll_futex_wake failed.
9317
9318 2003-02-13  Ulrich Drepper  <drepper@redhat.com>
9319
9320         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Fix
9321         handling of cancellation and failung pthread_mutex_unlock call.
9322         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
9323         * Makefile (tests): Add tst-cond8 and tst-cond9.
9324         * tst-cond8.c: New file.
9325         * tst-cond9.c: New file.
9326
9327         * tst-cond7.c (do_test): Unlock the mutex before canceling the thread.
9328
9329         * sysdeps/pthread/pthread.h: Add missing initializers.  Protect
9330         non-standard initializers with __USE_GNU.
9331
9332         * Makefile (tests): Add tst-cleanup3.
9333         * tst-cleanup3.c: New file.
9334
9335 2003-02-12  Ulrich Drepper  <drepper@redhat.com>
9336
9337         * Makefile (tests): Add tst-attr1 and tst-attr2.
9338         * tst-attr1.c: New file.
9339         * tst-attr2.c: New file.
9340
9341         * Makefile: Add rules to build and run tst-atfork2 test.
9342         * tst-atfork2.c: New file.
9343         * tst-atfork2mod.c: New file.
9344
9345         * sysdeps/unix/sysv/linux/unregister-atfork.c
9346         (__unregister_atfork): Free the memory allocated for the handlers
9347         after removing them from the lists.
9348
9349         * sysdeps/unix/sysv/linux/register-atfork.c: Define memeory
9350         cleanup function.
9351
9352         * tst-atfork1.c (do_test): Wait for the child we forked.
9353         Report error in child.
9354
9355         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Fix comment.
9356
9357         * sysdeps/pthread/Makefile: Define CFLAGS-confstr.c.
9358
9359 2003-02-10  Ulrich Drepper  <drepper@redhat.com>
9360
9361         * Makefile (tests): Add tst-cancel8.
9362         * tst-cancel8.c: New file.
9363
9364         * sysdeps/unix/sysv/linux/i386/pthread_once.S (clear_once_control): Fix
9365         clearing of control variable.
9366         * Makefile (tests): Add tst-once3 and tst-once4.
9367         * tst-once3.c: New file.
9368         * tst-once4.c: New file.
9369
9370 2003-02-08  kaz Kojima  <kkojima@rr.iij4u.or.jp>
9371
9372         * sysdeps/sh/Makefile: New file.
9373         * sysdeps/sh/bits/atomic.h: New file.
9374         * sysdeps/sh/pthread_spin_init.c: New file.
9375         * sysdeps/sh/pthread_spin_lock.c: New file.
9376         * sysdeps/sh/pthread_spin_trylock.S: New file.
9377         * sysdeps/sh/pthread_spin_unlock.S: New file.
9378         * sysdeps/sh/pthreaddef.h: New file.
9379         * sysdeps/sh/tcb-offsets.sym: New file.
9380         * sysdeps/sh/td_ta_map_lwp2thr.c: New file.
9381         * sysdeps/sh/tls.h: New file.
9382         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: New file.
9383         * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: New file.
9384         * sysdeps/unix/sysv/linux/sh/createthread.c: New file.
9385         * sysdeps/unix/sysv/linux/sh/fork.c: New file.
9386         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: New file.
9387         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: New file.
9388         * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h: New file.
9389         * sysdeps/unix/sysv/linux/sh/lowlevelcond.h: New file.
9390         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: New file.
9391         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: New file.
9392         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: New file.
9393         * sysdeps/unix/sysv/linux/sh/lowlevelrwlock.h: New file.
9394         * sysdeps/unix/sysv/linux/sh/pt-initfini.c: New file.
9395         * sysdeps/unix/sysv/linux/sh/pt-vfork.S: New file.
9396         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: New file.
9397         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: New file.
9398         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: New file.
9399         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: New file.
9400         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: New file.
9401         * sysdeps/unix/sysv/linux/sh/pthread_once.S: New file.
9402         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: New file.
9403         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: New file.
9404         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: New file.
9405         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: New file.
9406         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: New file.
9407         * sysdeps/unix/sysv/linux/sh/sem_post.S: New file.
9408         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: New file.
9409         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: New file.
9410         * sysdeps/unix/sysv/linux/sh/sem_wait.S: New file.
9411         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: New file.
9412
9413 2003-02-08  Ulrich Drepper  <drepper@redhat.com>
9414
9415         * tst-cond2.c: Rearrange code to not rely on behavior undefined
9416         according to POSIX.
9417
9418         * tst-basic2.c (do_test): Lock mutex before creating the thread.
9419
9420 2003-02-07  Ulrich Drepper  <drepper@redhat.com>
9421
9422         * sysdeps/x86_64/tls.h: Remove unnecessary macros, left over from x86.
9423         (TLS_GET_FS): New #define.
9424         (TLS_SET_FS): New #define.
9425         Correct value of __NR_set_thread_area.
9426
9427         * sysdeps/x86_64/td_ta_map_lwp2thr.c: New file.
9428
9429 2003-02-06  Ulrich Drepper  <drepper@redhat.com>
9430
9431         * Makefile (tests): Add tst-popen1.
9432         * tst-popen1.c: New file.
9433
9434         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Remove wrong
9435         but inactive generalization.
9436         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
9437         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
9438         Minor optimization, remove one instruction.
9439         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
9440
9441 2003-02-04  Martin Schwidefsky  <schwidefsky@de.ibm.com>
9442
9443         * sysdeps/unix/sysv/linux/s390/fork.c: Correct order of parameters.
9444
9445 2003-01-31  Martin Schwidefsky  <schwidefsky@de.ibm.com>
9446
9447         * init.c (__NR_set_tid_address): Add #ifdef for s390.
9448         * sysdeps/pthread/pthread_barrier_wait.c: New file.
9449         * sysdeps/pthread/pthread_cond_broadcast.c: New file.
9450         * sysdeps/pthread/pthread_cond_signal.c: New file.
9451         * sysdeps/pthread/pthread_cond_timedwait.c: New file.
9452         * sysdeps/pthread/pthread_cond_wait.c: New file.
9453         * sysdeps/pthread/pthread_rwlock_rdlock.c: New file.
9454         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: New file.
9455         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: New file.
9456         * sysdeps/pthread/pthread_rwlock_unlock.c: New file.
9457         * sysdeps/pthread/pthread_rwlock_wrlock.c: New file.
9458         * sysdeps/s390/Makefile: New file.
9459         * sysdeps/s390/bits/atomic.h: New file.
9460         * sysdeps/s390/pthread_spin_init.c: New file.
9461         * sysdeps/s390/pthread_spin_lock.c: New file.
9462         * sysdeps/s390/pthread_spin_trylock.c: New file.
9463         * sysdeps/s390/pthread_spin_unlock.c: New file.
9464         * sysdeps/s390/pthreaddef.h: New file.
9465         * sysdeps/s390/tcb-offsets.sym: New file.
9466         * sysdeps/s390/td_ta_map_lwp2thr.c: New file.
9467         * sysdeps/s390/tls.h: New file.
9468         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: New file.
9469         * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: New file.
9470         * sysdeps/unix/sysv/linux/s390/createthread.c: New file.
9471         * sysdeps/unix/sysv/linux/s390/dl-sysdep.h: New file.
9472         * sysdeps/unix/sysv/linux/s390/fork.c: New file.
9473         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: New file.
9474         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: New file.
9475         * sysdeps/unix/sysv/linux/s390/libc-lowlevelmutex.c: New file.
9476         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: New file.
9477         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: New file.
9478         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: New file.
9479         * sysdeps/unix/sysv/linux/s390/lowlevelsem.h: New file.
9480         * sysdeps/unix/sysv/linux/s390/pthread_once.c: New file.
9481         * sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c: New file.
9482         * sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: New file.
9483         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: New file.
9484         * sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c: New file.
9485         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S: New file.
9486         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: New file.
9487         * sysdeps/unix/sysv/linux/s390/sem_post.c: New file.
9488         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: New file.
9489         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: New file.
9490         * sysdeps/unix/sysv/linux/s390/sem_wait.c: New file.
9491
9492 2003-02-04  Ulrich Drepper  <drepper@redhat.com>
9493
9494         * atomic.h: Add a couple more default implementations.
9495         (atomic_compare_and_exchange_acq): Use
9496         __arch_compare_and_exchange_32_acq in return value definition.  It
9497         always exists.
9498         (atomic_bit_set): Renamed from atomic_set_bit.
9499         Add missing atomic_ prefixes.
9500
9501         * sysdeps/pthread/bits/libc-lock.h (__libc_once): In case no
9502         thread library is available, use correct value to mark initialized
9503         once variable.
9504
9505 2003-02-03  Ulrich Drepper  <drepper@redhat.com>
9506
9507         * allocatestack.c (allocate_stack): Use __getpagesize instead of
9508         __sysconf to determine pagesize.
9509
9510         * pthread_create.c: Include <atomic.h>.
9511         * allocatestack.c (allocate_stack): Implement coloring of the
9512         allocated stack memory.  Rename pagesize to pagesize_m1.  It's the
9513         size minus one.  Adjust users.
9514         * sysdeps/i386/i686/Makefile: New file.
9515
9516 2003-02-02  Ulrich Drepper  <drepper@redhat.com>
9517
9518         * allocatestack.c: Improve comment throughout the file.
9519
9520         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
9521         (__lll_lock_wait): Add branch prediction.
9522         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
9523         (__lll_lock_wait): Likewise.
9524         (lll_unlock_wake_cb): Removed.
9525
9526 2003-01-31  Ulrich Drepper  <drepper@redhat.com>
9527
9528         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Remove
9529         _POSIX_THREAD_PRIORITY_SCHEDULING.
9530
9531 2003-01-30  Jakub Jelinek  <jakub@redhat.com>
9532
9533         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
9534         Fix return type of ptr___pthread_getspecific.
9535
9536 2003-01-29  Ulrich Drepper  <drepper@redhat.com>
9537
9538         * Makefile (tests): Add tst-umask1.
9539         (tst-umask1-ARGS): Define.
9540         * tst-umask1.c: New file.
9541
9542 2003-01-28  Ulrich Drepper  <drepper@redhat.com>
9543
9544         * Makefile (libpthread-routines): Remove lowlevelrwlock.  Add
9545         pthread_rwlock_rdlock, pthread_rwlock_timedrdlock,
9546         pthread_rwlock_wrlock, pthread_rwlock_timedwrlock, and
9547         pthread_rwlock_unlock.
9548         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Removed
9549         * sysdeps/unix/sysv/linux/i386/i586/lowlevelrwlock.S: Removed
9550         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrwlock.S: Removed
9551         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: New file.
9552         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
9553         New file.
9554         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: New file.
9555         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
9556         New file.
9557         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: New file.
9558         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S: New file.
9559         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S:
9560         New file.
9561         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S: New file.
9562         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S:
9563         New file.
9564         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S: New file.
9565         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S: New file.
9566         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S:
9567         New file.
9568         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S: New file.
9569         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S:
9570         New file.
9571         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S: New file.
9572
9573         * Makefile (libpthread-routines): Remove lowlevelcond and
9574         lowlevelsem.  Add sem_wait, sem_trywait, sem_timedwait, sem_post,
9575         pthread_cond_wait, pthread_cond_timedwait, pthread_cond_signal,
9576         and pthread_cond_broadcast.
9577         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Removed
9578         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Removed
9579         * sysdeps/unix/sysv/linux/i386/i586/lowlevelsem.S: Removed
9580         * sysdeps/unix/sysv/linux/i386/i586/lowlevelcond.S: Removed
9581         * sysdeps/unix/sysv/linux/i386/i686/lowlevelsem.S: Removed
9582         * sysdeps/unix/sysv/linux/i386/i686/lowlevelcond.S: Removed
9583         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: New file.
9584         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: New file.
9585         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: New file.
9586         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: New file.
9587         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: New file.
9588         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: New file.
9589         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: New file.
9590         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: New file.
9591         * sysdeps/unix/sysv/linux/i386/i586/sem_wait.S: New file.
9592         * sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S: New file.
9593         * sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S: New file.
9594         * sysdeps/unix/sysv/linux/i386/i586/sem_post.S: New file.
9595         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S: New file.
9596         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S: New file.
9597         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S: New file.
9598         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S: New file.
9599         * sysdeps/unix/sysv/linux/i386/i686/sem_wait.S: New file.
9600         * sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S: New file.
9601         * sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S: New file.
9602         * sysdeps/unix/sysv/linux/i386/i686/sem_post.S: New file.
9603         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S: New file.
9604         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S: New file.
9605         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S: New file.
9606         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S: New file.
9607         * sysdeps/unix/sysv/linux/i386/lowlevelcond.h: New file.
9608
9609         * sysdeps/unix/sysv/linux/i386/createthread.c: Define
9610         PREPARE_CREATE and TLS_VALUE with x86-specific bits.  All the rest
9611         of the code is moved to ...
9612         * sysdeps/pthread/createthread.c: ...here.  New file.
9613
9614 2003-01-27  Ulrich Drepper  <drepper@redhat.com>
9615
9616         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S
9617         (__new_sem_post): Clear %eax before returning.
9618         Reported by MAEDA Naoaki <maeda.naoaki@jp.fujitsu.com>.
9619
9620         * Makefile (tests): Add tst-cleanup2.
9621         * tst-cleanup2.c: New file.
9622
9623         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_region_start):
9624         Interpret first parameter correctly.
9625
9626 2003-01-17  Ulrich Drepper  <drepper@redhat.com>
9627
9628         * Makefile (headers): Add bits/semaphore.h.
9629
9630 2003-01-16  Jakub Jelinek  <jakub@redhat.com>
9631
9632         * sysdeps/i386/tls.h (INIT_SYSINFO): Initialize _head->sysinfo even
9633         if not SHARED.
9634
9635 2003-01-14  Ulrich Drepper  <drepper@redhat.com>
9636
9637         * sem_open.c (sem_open): Return SEM_FAILED if existing semaphore
9638         must be used and mapping failed.
9639         Reported by Luke Elliott <luke.elliott@activfinancial.com>.
9640
9641         * Makefile (CFLAGS-pthread_self.os): Define this, not
9642         CFLAGS-pthread_self.c.
9643
9644 2003-01-13  Ulrich Drepper  <drepper@redhat.com>
9645
9646         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Don't export
9647         lll_unlock_wake_cb.
9648
9649         * Makefile (libpthread-routines): Add version.  Add rules to build
9650         version.os and banner.h.
9651         * version.c: New file.
9652
9653 2003-01-13  Jakub Jelinek  <jakub@redhat.com>
9654
9655         * pthread_mutex_lock.c (__pthread_mutex_lock_internal): Make
9656         the alias unconditional.
9657         * pthread_mutex_unlock.c  (__pthread_mutex_unlock_internal): Likewise.
9658
9659 2003-01-13  Ulrich Drepper  <drepper@redhat.com>
9660
9661         * Makefile (CFLAGS-pthread_self.c): New definition.
9662
9663 2003-01-06  Jakub Jelinek  <jakub@redhat.com>
9664
9665         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Add
9666         INTERNAL_SYSCALL_DECL, add err argument to INTERNAL_SYSCALL* macros.
9667         * sysdeps/unix/sysv/linux/raise.c (raise): Likewise.
9668         * init.c (__pthread_initialize_minimal_internal): Likewise.
9669
9670 2003-01-07  Jakub Jelinek  <jakub@redhat.com>
9671
9672         * pthreadP.h (__pthread_cond_timedwait): Add prototype.
9673
9674         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
9675         (RTLD_CORRECT_DYNAMIC_WEAK): Remove.
9676         (DL_SYSINFO_IMPLEMENTATION): Change into .text section and back.
9677         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
9678         (RTLD_CORRECT_DYNAMIC_WEAK): Remove.
9679         (DL_SYSINFO_IMPLEMENTATION): Change into .text section and back.
9680
9681 2003-01-06  Jakub Jelinek  <jakub@redhat.com>
9682
9683         * pthreadP.h (LIBC_CANCEL_HANDLED): Define.
9684         * pt-system.c (LIBC_CANCEL_HANDLED): Add.
9685         * tst-cancel-wrappers.sh: Remove all exceptions.
9686
9687 2003-01-05  Ulrich Drepper  <drepper@redhat.com>
9688
9689         * tst-cancel-wrappers.sh: Invoke gawk not awk since we use GNU awk
9690         features.  Reported by Marijn Ros <marijn@mad.scientist.com>.
9691
9692         * sysdeps/unix/sysv/linux/jmp-unwind.c: Include <pthread-functions.h>.
9693         Use __libc_pthread_functions array if SHARED.
9694
9695         * pthreadP.h: Move pthread_cond_2_0_t definition to...
9696         * sysdeps/unix/sysv/linux/internaltypes.h: ...here.
9697
9698         * sysdeps/pthread/bits/libc-lock.h (__libc_ptf_call): New #define.
9699         (__libc_rwlock_rdlock, __libc_rwlock_wrlock, __libc_rwlock_unlock,
9700         __libc_key_create, __libc_getspecific, __libc_setspecific): Use
9701         __libc_ptf_call instead of __libc_maybe_call.
9702         (PTF): New #define.
9703         (__libc_cleanup_region_start): Wrap function name with PTF call.
9704         (__libc_cleanup_region_end): Likewise.
9705         (__libc_cleanup_end): Likewise.
9706
9707         * pthread_getspecific.c: Add __pthread_getspecific_internal alias.
9708         * pthread_setspecific.c: Add __pthread_setspecific_internal alias.
9709         * pthread_key_create.c: Add __pthread_key_create_internal alias.
9710         * pthreadP.h: Add prototypes.
9711
9712         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Add
9713         __pthread_rwlock_rdlock, __pthread_rwlock_wrlock, and
9714         __pthread_rwlock_unlock aliases.
9715         * pthreadP.h: Add prototypes for new aliases.
9716
9717         * pthreadP.h (struct pthead_functions): Moved to...
9718         * sysdeps/pthread/pthread-functions.h: ...here.  New file.
9719         * init.c (pthread_functions): Add initializers for new elements.
9720
9721         * cleanup_defer.c: Add __pthread_cleanup_push_defer and
9722         __pthread_cleanup_pop_restore aliases.
9723         * pthreadP.h: Add prototypes.
9724
9725         * cleanup.c: Rename _GI_pthread_cleanup_push to __pthread_cleanup_push
9726         and _GI_pthread_cleanup_pop to __pthread_cleanup_pop.
9727         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Adjust caller.
9728         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise.
9729         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
9730         * pthreadP.h: Adjust prototypes and callers.
9731
9732 2003-01-04  Ulrich Drepper  <drepper@redhat.com>
9733
9734         * Makefile (tests): Add tst-cancel7.
9735         (tst-cancel7-ARGS): New variable.
9736         * tst-cancel7.c: New file.
9737
9738         * old_pthread_cond_broadcast.c: Optimize initialization a bit to work
9739         around gcc defficiencies.
9740         * old_pthread_cond_signal.c: Likewise.
9741         * old_pthread_cond_timedwait.c: Likewise.
9742         * old_pthread_cond_wait.c: Likewise.
9743
9744         * pthreadP.h (pthread_cond_2_0_t): Remove unneeded lock element.
9745
9746 2003-01-03  Ulrich Drepper  <drepper@redhat.com>
9747
9748         * Makefile (tests): Add tst-cond7.
9749         * tst-cond7.c: New file.
9750
9751         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S
9752         (condvar_cleanup): Get condvar address from the right place.
9753
9754         * atomic.h: Correct definitions of atomic_full_barrier,
9755         atomic_read_barrier, atomic_write_barrier.
9756
9757         * old_pthread_cond_broadcast.c: Make memory allocate and initialization
9758         race-free.
9759         * old_pthread_cond_signal.c: Likewise.
9760         * old_pthread_cond_timedwait.c: Likewise.
9761         * old_pthread_cond_wait.c: Likewise.
9762
9763 2003-01-03  Jakub Jelinek  <jakub@redhat.com>
9764
9765         * Makefile ($(objpfx)libpthread.so): Depend on ld.so.
9766
9767 2003-01-03  Ulrich Drepper  <drepper@redhat.com>
9768
9769         * pthreadP.h (pthread_cond_2_0_t): New type.
9770         (struct pthread_functions): Use new type for 2.0 condvar callbacks.
9771         Use new type for the 2.0 condvar function prototypes.
9772         * forward.c: Use pthread_cond_2_0_t for 2.0 condvar functions.
9773         * old_pthread_cond_init.c: Use pthread_cond_2_0_t for condvar
9774         parameter.
9775         * old_pthread_cond_destroy.c: Likewise.
9776         * old_pthread_cond_broadcast.c: Likewise.  Lock appropriately.
9777         * old_pthread_cond_signal.c: Likewise.
9778         * old_pthread_cond_timedwait.c: Likewise.
9779         * old_pthread_cond_wait.c: Likewise.
9780
9781         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S
9782         (__pthread_cond_wait): Don't save cancellation mode and seq value
9783         in same location.
9784
9785         * herrno.c (__h_errno_location): Don't define as weak.
9786
9787 2003-01-02  Jakub Jelinek  <jakub@redhat.com>
9788
9789         * Versions [libc] (GLIBC_2.3.2): Export pthread_cond_broadcast,
9790         pthread_cond_destroy, pthread_cond_init, pthread_cond_signal
9791         and pthread_cond_wait.
9792         * old_pthread_cond_broadcast.c (__old_pthread_cond_broadcast):
9793         Renamed to...
9794         (__pthread_cond_broadcast_2_0): ... this.
9795         * old_pthread_cond_destroy.c (__old_pthread_cond_destroy):
9796         Renamed to...
9797         (__pthread_cond_destroy_2_0): ... this.
9798         * old_pthread_cond_init.c (__old_pthread_cond_init):
9799         Renamed to...
9800         (__pthread_cond_init_2_0): ... this.
9801         * old_pthread_cond_signal.c (__old_pthread_cond_signal):
9802         Renamed to...
9803         (__pthread_cond_signal_2_0): ... this.
9804         * old_pthread_cond_wait.c (__old_pthread_cond_wait):
9805         Renamed to...
9806         (__pthread_cond_wait_2_0): ... this.
9807         * pthread_cond_destroy.c: Include shlib-compat.h.
9808         (pthread_cond_destroy): Change strong_alias into versioned_symbol.
9809         * pthread_cond_init.c: Include shlib-compat.h.
9810         (pthread_cond_init): Change strong_alias into versioned_symbol.
9811         * pthreadP.h (struct pthread_functions): Rename ptr_pthread_cond_*
9812         fields to ptr___pthread_cond_* and add ptr___pthread_cond_*_2_0
9813         fields.
9814         (__pthread_cond_broadcast_2_0, __pthread_cond_destroy_2_0,
9815         __pthread_cond_init_2_0, __pthread_cond_signal_2_0,
9816         __pthread_cond_wait_2_0): New prototypes.
9817         (__old_pthread_cond_broadcast, __old_pthread_cond_destroy,
9818         __old_pthread_cond_init, __old_pthread_cond_signal,
9819         __old_pthread_cond_wait): Removed.
9820         * init.c: Include shlib-compat.h.
9821         (pthread_functions): Guard ptr___pthread_attr_init_2_0
9822         initialization with SHLIB_COMPAT (GLIBC_2_0, GLIBC_2_1).
9823         Rename ptr_pthread_cond_* to ptr___pthread_cond_*, initialize
9824         ptr___pthread_cond_*_2_0 fields.
9825         * forward.c: Export both pthread_cond_*@@GLIBC_2.3.2 and
9826         pthread_cond_*@GLIBC_2.0 compatibility symbols.
9827
9828         * sysdeps/pthread/sigaction.c (SIGCANCEL): Only define if
9829         LIBC_SIGACTION was not yet defined.
9830         [!defined LIBC_SIGACTION]: Define LIBC_SIGACTION, #include self.
9831         [!defined LIBC_SIGACTION] (__sigaction): New function and
9832         libc_hidden_weak.
9833         [!defined LIBC_SIGACTION] (sigaction): New weak_alias.
9834         [defined LIBC_SIGACTION]: #include_next <sigaction.c>.
9835
9836 2003-01-02  Jakub Jelinek  <jakub@redhat.com>
9837
9838         * Makefile (CFLAGS-pthread_atfork.c): Add -DNOT_IN_libc.
9839
9840 2003-01-02  Ulrich Drepper  <drepper@redhat.com>
9841
9842         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
9843         New, larger type definition.
9844         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: New condvar
9845         implementation.
9846         * Versions [libpthread]: Add definitions for new pthread_cond_*
9847         interfaces for version GLIBC_2.3.2.
9848         * pthread_cond_init.c: Update initialization for new type definition.
9849         * Makefile (libpthread-routines): Remove pthread_cond_wait,
9850         pthread_cond_timedwait, pthread_cond_signal, and
9851         pthread_cond_broadcast.  Add old_pthread_cond_init,
9852         old_pthread_cond_destroy, old_pthread_cond_wait,
9853         old_pthread_cond_timedwait, old_pthread_cond_signal, and
9854         old_pthread_cond_broadcast.
9855         * old_pthread_cond_broadcast.c: New file.
9856         * old_pthread_cond_destroy.c: New file.
9857         * old_pthread_cond_init.c: New file.
9858         * old_pthread_cond_signal.c: New file.
9859         * old_pthread_cond_timedwait.c: New file.
9860         * old_pthread_cond_wait.c: New file.
9861         * pthreadP.h: Add prototypes for the compatibility interfaces.
9862
9863         * pthread_cond_destroy.c: Don't include <errno.h>.
9864
9865 2003-01-01  Ulrich Drepper  <drepper@redhat.com>
9866
9867         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Avoid
9868         unnecessary zero offset when addressing MUTEX.
9869
9870 2002-12-31  Ulrich Drepper  <drepper@redhat.com>
9871
9872         * sysdeps/unix/sysv/linux/fork.h: Add libc_hidden_proto for
9873         __register_atfork.
9874         * sysdeps/unix/sysv/linux/register-atfork.c: Add libc_hidden_def
9875         for __register_atfork.
9876
9877 2002-12-31  Jakub Jelinek  <jakub@redhat.com>
9878
9879         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Use __ASSEMBLER__
9880         instead of ASSEMBLER test macro.
9881
9882         * sysdeps/unix/sysv/linux/allocrtsig.c (__libc_current_sigrtmin,
9883         __libc_current_sigrtmax): Add libc_hidden_def.
9884
9885         * sysdeps/pthread/list.h: Remove assert.h include.
9886
9887 2002-12-31  Ulrich Drepper  <drepper@redhat.com>
9888
9889         * sysdeps/pthread/pt-initfini.c (call_initialize_minimal): Use
9890         __pthread_initialize_minimal_internal not
9891         __pthread_initialize_minimal.
9892
9893 2002-12-30  Ulrich Drepper  <drepper@redhat.com>
9894
9895         * sysdeps/pthread/pt-initfini.c (call_initialize_minimal): Mark
9896         __pthread_initialize_minimal as hidden.
9897
9898         * init.c (__pthread_initialize_minimal_internal): Don't mark as
9899         constructor.
9900
9901 2002-12-31  Jakub Jelinek  <jakub@redhat.com>
9902
9903         * Makefile ($(inst_libdir)/libpthread.so): Depend on
9904         $(common-objpfx)format.lds, include that into the output script.
9905         Fix comment.
9906         (extra-B-pthread.so): Change linuxthreads/ into nptl/.
9907
9908 2002-12-28  Andreas Jaeger  <aj@suse.de>
9909
9910         * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv): Adjust for
9911         nsec resolution changes.
9912         (xstat64_conv): Likewise.
9913         (xstat32_conv): Likewise.
9914         * sysdeps/unix/sysv/linux/kernel_stat.h: Add nsec resolution for
9915         struct kernel_stat.
9916         * sysdeps/unix/sysv/linux/bits/stat.h: Add nsec resolution for
9917         structs stat and stat64.
9918         * time/time.h (__timespec_defined): Define for __USE_MISC.
9919         * io/sys/stat.h [__USE_MISC]: Define __need_timespec for struct stat.
9920
9921 2002-12-30  Jakub Jelinek  <jakub@redhat.com>
9922
9923         * forward.c (FORWARD2): Renamed from FORWARD3.  Remove unused export
9924         argument.
9925         (pthread_attr_init_2_0, pthread_attr_init_2_1): Use FORWARD macro.
9926         (pthread_exit): Use strong_alias to avoid warnings.
9927         * pthreadP.h (struct pthread_functions): Rename ptr_pthread_exit
9928         and ptr_pthread_attr_init_2_* to ptr___pthread_exit and
9929         ptr___pthread_attr_init_2_*.
9930         * init.c (pthread_functions): Adjust.
9931
9932 2002-12-29  Ulrich Drepper  <drepper@redhat.com>
9933
9934         * forward.c: Make all functions available by default again.  It
9935         caused too much trouble.
9936
9937         * pt-siglongjmp.c: Removed.
9938
9939 2002-12-28  Jakub Jelinek  <jakub@redhat.com>
9940
9941         * sysdeps/i386/tls.h: Include tcb-offsets.h in assembler.
9942         (SYSINFO_OFFSET, MULTIPLE_THREADS_OFFSET): Remove.
9943         * sysdeps/i386/Makefile: New file.
9944         * sysdeps/i386/tcb-offsets.sym: New file.
9945         * sysdeps/pthread/tcb-offsets.h: New file.
9946         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
9947         Remove MULTIPLE_THREADS_OFFSET and SYSINFO_OFFSET checks.
9948
9949         * sysdeps/unix/sysv/linux/Versions [libc] (GLIBC_PRIVATE): Move
9950         __register_atfork...
9951         (GLIBC_2.3.2): ...here.
9952
9953 2002-12-28  Ulrich Drepper  <drepper@redhat.com>
9954
9955         * sysdeps/pthread/pthread.h: Mark pthread_attr_getstackaddr and
9956         pthread_attr_setstackaddr with __attribute_deprecated__.
9957
9958 2002-12-27  Jakub Jelinek  <jakub@redhat.com>
9959
9960         * pt-system.c (system): Remove cancellation handling.
9961         * tst-cancel-wrappers.sh: Allow pt-system.o* to not use the
9962         cancellation routines.
9963
9964 2002-12-28  Ulrich Drepper  <drepper@redhat.com>
9965
9966         * descr.h: Include <dl-sysdep.h>.
9967         (struct pthread): Move header.data.list to the back of the struct.
9968         * sysdeps/i386/tls.h (tcbhead_t): Move list to the back of the struct.
9969         (MULTIPLE_THREADS_OFFSET): Adjust offset.
9970         (SYSINFO_OFFSEET): Likewise.
9971
9972 2002-12-27  Jakub Jelinek  <jakub@redhat.com>
9973
9974         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h (USE_DL_SYSINFO):
9975         Define.
9976         (DL_SYSINFO_DEFAULT): Cast to uintptr_t to avoid warnings.
9977         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h (NEED_DL_SYSINFO,
9978         DL_SYSINFO_DEFAULT, DL_SYSINFO_IMPLEMENTATION): Define.
9979         (USE_DL_SYSINFO): Undef.
9980
9981 2002-12-22  Jakub Jelinek  <jakub@redhat.com>
9982
9983         * Makefile (tests-reverse): Use $(objpfx)../libc.so instead of
9984         $(common-objpfx)libc.so.
9985         * tst-cancel4.c (tf_write, tf_writev): Increase buf sizes so that
9986         it is bigger than pipe buffer size even on arches with bigger
9987         page size.
9988         (tf_usleep): Cast usleep argument to useconds_t to avoid warnings.
9989
9990 2002-12-25  Ulrich Drepper  <drepper@redhat.com>
9991
9992         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Implement
9993         correct errno access for case that USE___THREAD is not defined.
9994
9995 2002-12-24  Ulrich Drepper  <drepper@redhat.com>
9996
9997         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Add missing #endif.
9998         Patch by Marijn Ros <marijn@mad.scientist.com>.
9999
10000 2002-12-22  Roland McGrath  <roland@redhat.com>
10001
10002         * Makefile (omit-deps): Add $(unix-syscalls:%=ptw-%).
10003
10004 2002-12-20  Ulrich Drepper  <drepper@redhat.com>
10005
10006         * sysdeps/pthread/bits/stdio-lock.h (_IO_lock_inexpensive): Define.
10007
10008 2002-12-19  Ulrich Drepper  <drepper@redhat.com>
10009
10010         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Don't define
10011         NEED_DL_SYSINFO since no processor < i686 had the sysenter opcode.
10012         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: New file.
10013
10014         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Use ENTER_KERNEL instead
10015         of int $0x80.
10016         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
10017         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Likewise.
10018         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Likewise.
10019         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
10020         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
10021         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Likewise.
10022         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Likewise.
10023         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Likewise.
10024
10025         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Add support for using
10026         sysenter.
10027         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Likewise.
10028
10029         * sysdeps/i386/tls.h: Unconditionally include <dl-sysdep.h>.
10030
10031         * allocatestack.c (allocate_stack) [NEED_DL_SYSINFO]: Set sysinfo
10032         in new TCB.
10033         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Check
10034         that sysinfo is properly initialized.
10035         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define RTLD_PRIVATE_ERRNO
10036         to 1 only for ld.so.
10037
10038         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define
10039         RTLD_CORRECT_DYNAMIC_WEAK.
10040
10041 2002-12-19  Jakub Jelinek  <jakub@redhat.com>
10042
10043         * forward.c (pthread_attr_init_2_0, pthread_attr_init_2_1):
10044         Use return 0 as 6th argument to FORWARD4.
10045         * pthread_equal.c: Include pthreadP.h instead of pthread.h.
10046
10047 2002-12-18  Ulrich Drepper  <drepper@redhat.com>
10048
10049         * descr.h (struct pthread) [NEED_DL_SYSINFO]: Add sysinfo member.
10050         * sysdeps/i386/tls.h (tcbhead_t): Add sysinfo member.
10051         Define SYSINFO_OFFSEET if NEED_DL_SYSINFO is defined.
10052         (INIT_SYSINFO): New #define.
10053         (TLS_TP_INIT): Use INIT_SYSINFO.
10054         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
10055         At test to make sure SYSINFO_OFFSET value is correct.
10056         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: New file.
10057
10058 2002-12-18  Jakub Jelinek  <jakub@redhat.com>
10059
10060         * sysdeps/pthread/flockfile.c (flockfile): Change into weak alias.
10061         * sysdeps/unix/sysv/linux/raise.c (gsignal): Add weak alias to raise.
10062         * Versions [libc: GLIBC_2.0]: Add pthread_attr_init.
10063         [libpthread: GLIBC_2.1]: Remove __pthread_rwlock_init,
10064         __pthread_rwlock_destroy, __pthread_rwlock_rdlock,
10065         __pthread_rwlock_wrlock, __pthread_rwlock_unlock,
10066         __pthread_rwlock_tryrdlock and __pthread_rwlock_trywrlock.
10067
10068 2002-12-18  Ulrich Drepper  <drepper@redhat.com>
10069
10070         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Use ENTER_KERNEL
10071         macro instead of using int $0x80 directly.
10072
10073         * sysdeps/pthread/bits/stdio-lock.h: New file.
10074         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: New file.
10075         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevelmutex.S: New file.
10076         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevelmutex.S: New file.
10077         * Makefile (routines): Add libc-lowlevelmutex.
10078
10079         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Remove
10080         __i686.get_pc_thunk.dx.
10081
10082 2002-12-17  Jakub Jelinek  <jakub@redhat.com>
10083
10084         * Makefile (libpthread-shared-only-routines): Add pt-allocrtsig.
10085         (tests): Depend on $(objpfx)tst-cancel-wrappers.out.
10086         ($(objpfx)tst-cancel-wrappers.out): New rule.
10087         * tst-cancel-wrappers.sh: New test.
10088         * tst-locale1.c: Include signal.h.
10089         (uselocale): Test static linking of __libc_current_sigrt*.
10090
10091 2002-12-17  Ulrich Drepper  <drepper@redhat.com>
10092
10093         * Makefile (tests): Add tst-cancel6.
10094         * tst-cancel6.c: New file
10095
10096 2002-12-17  Jakub Jelinek  <jakub@redhat.com>
10097
10098         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (SINGLE_THREAD_P):
10099         Define meaningfully for assembler as well.
10100         * pthreadP.h (struct pthread_functions): Remove
10101         ptr_pthread_attr_init field.  Add ptr_pthread_attr_init_2_0
10102         and ptr_pthread_attr_init_2_1 fields.
10103         * init.c (pthread_functions): Initialize ptr_pthread_attr_init_2_0
10104         and ptr_pthread_attr_init_2_1 instead of ptr_pthread_attr_init.
10105         * forward.c (FORWARD4): Renamed from FORWARD3. Add export argument.
10106         (FORWARD3): Define using FORWARD4.
10107         (pthread_attr_init): Provide both @GLIBC_2.0 and @@GLIBC_2.1
10108         versions.
10109         * pt-system.c: Remove duplicate stdlib.h include.
10110
10111 2002-12-16  Ulrich Drepper  <drepper@redhat.com>
10112
10113         * sem_init.c: Define sem_init@GLIBC_2.0.
10114         * sem_destroy.c: Define sem_destroy@GLIBC_2.0.
10115         * sem_getvalue.c: Define sem_getvalue@GLIBC_2.0.
10116
10117         * flockfile.c: Moved to...
10118         * sysdeps/pthread/flockfile.c: ...here.  New file.
10119         * funlockfile.c: Moved to...
10120         * sysdeps/pthread/funlockfile.c: ...here.  New file.
10121         * ftrylockfile.c: Moved to...
10122         * sysdeps/pthread/ftrylockfile.c: ...here.  New file.
10123
10124 2002-12-16  Jakub Jelinek  <jakub@redhat.com>
10125
10126         * libc-cancellation.c: Guard both function with
10127         #if !defined NOT_IN_libc.
10128         * Makefile (libpthread-routines): Use ptw-, not pt- prefix for the
10129         automatically provided pthread wrappers.
10130         * pthreadP.h (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET): Define to
10131         CANCEL_* if IS_IN_libpthread and to dummy versions if not in libc
10132         nor in libpthread.
10133         * pt-open.c: Removed.
10134         * pt-fcntl.c: Removed.
10135         * pt-fsync.c: Removed.
10136         * pt-lseek.c: Removed.
10137         * pt-msgrcv.c: Removed.
10138         * pt-msgsnd.c: Removed.
10139         * pt-msync.c: Removed.
10140         * pt-nanosleep.c: Removed.
10141         * pt-open64.c: Removed.
10142         * pt-pause.c: Removed.
10143         * pt-pread.c: Removed.
10144         * pt-pread64.c: Removed.
10145         * pt-pwrite.c: Removed.
10146         * pt-pwrite64.c: Removed.
10147         * pt-read.c: Removed.
10148         * pt-recv.c: Removed.
10149         * pt-recvfrom.c: Removed.
10150         * pt-recvmsg.c: Removed.
10151         * pt-send.c: Removed.
10152         * pt-sendto.c: Removed.
10153         * pt-sigtimedwait.c: Removed.
10154         * pt-sigwait.c: Removed.
10155         * pt-wait.c: Removed.
10156         * pt-waitpid.c: Removed.
10157         * pt-write.c: Removed.
10158         * pt-accept.c: Removed.
10159         * pt-close.c: Removed.
10160         * pt-connect.c: Removed.
10161         * pt-lseek64.c: Removed.
10162         * pt-sendmsg.c: Removed.
10163         * pt-tcdrain.c: Removed.
10164
10165 2002-12-15  Ulrich Drepper  <drepper@redhat.com>
10166
10167         * init.c (__pthread_initialize_minimal_internal): Renamed from
10168         __pthread_initialize_minimal.  Make old name an alias.  This
10169         converts a normal relocation into a relative relocation.
10170
10171         * pt-fcntl.c (__fcntl): Use fcntl64 syscall, not fcntl.
10172
10173         * Versions [libpthread: GLIBC_2.3.2]: Remove creat, poll, pselect,
10174         readv, select, sigpause, sigsuspend, sigwaitinfo, waitid, writev.
10175         * Makefile (libpthread-routines): Remove pt-creat, pt-poll,
10176         pt-pselect, pt-readv, pt-select, pt-sigpause, pt-sigsuspend,
10177         pt-sigwaitinfo, pt-waitid, and pt-writev.
10178         * pt-creat.c: Removed.
10179         * pt-poll.c: Removed.
10180         * pt-pselect.c: Removed.
10181         * pt-readv.c: Removed.
10182         * pt-select.c: Removed.
10183         * pt-sigpause.c: Removed.
10184         * pt-sigsuspend.c: Removed.
10185         * pt-sigwaitinfo.c: Removed.
10186         * pt-waitid.c: Removed.
10187         * pt-writev.c: Removed.
10188
10189         * init.c (pthread_functions): New variable.
10190         (__pthread_initialize_minimal): Pass pointer to pthread_functions
10191         (or NULL) to __libc_pthread_init.
10192         * forward.c: Rewrite to use __libc:pthread_functions array to get
10193         function addresses.
10194         * sysdeps/unix/sysv/linux/fork.h: Remove __libc_pthread_init
10195         prototype.
10196         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
10197         Take new parameter.  Copy content of variable pointed to by it
10198         to __libc_pthread_init.
10199
10200         * pthreadP.h (struct pthread_functions): New type.
10201         (__libc_pthread_init): Declare.
10202
10203         * pthread_attr_destroy.c: Add namespace protected alias.
10204         * pthread_attr_getdetachstate.c: Likewise.
10205         * pthread_attr_getinheritsched.c: Likewise.
10206         * pthread_attr_getschedparam.c: Likewise.
10207         * pthread_attr_getschedpolicy.c: Likewise.
10208         * pthread_attr_getscope.c: Likewise.
10209         * pthread_attr_setdetachstate.c: Likewise.
10210         * pthread_attr_setinheritsched.c: Likewise.
10211         * pthread_attr_setschedparam.c: Likewise.
10212         * pthread_attr_setschedpolicy.c: Likewise.
10213         * pthread_attr_setscope.c: Likewise.
10214         * pthread_cond_broadcast.c: Likewise.
10215         * pthread_cond_destroy.c: Likewise.
10216         * pthread_cond_init.c: Likewise.
10217         * pthread_cond_signal.c: Likewise.
10218         * pthread_cond_wait.c: Likewise.
10219         * pthread_condattr_destroy.c: Likewise.
10220         * pthread_condattr_init.c: Likewise.
10221         * pthread_equal.c: Likewise.
10222         * pthread_exit.c: Likewise.
10223         * pthread_getschedparam.c: Likewise.
10224         * pthread_self.c: Likewise.
10225         * pthread_setcancelstate.c: Likewise.
10226         * pthread_setschedparam.c: Likewise.
10227         * pthread_mutex_destroy.c: Likewise.
10228         * pthread_mutex_init.c: Likewise.
10229         * pthreadP.h: Add prototypes for the aliases.
10230
10231         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Set
10232         multiple_threads member in correct TCB to 1.
10233
10234         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define
10235         SINGLE_THREAD_P.  If in libc or libpthread examine multiple_thread
10236         member of thread decriptor, otherwise return unconditionally 1.
10237
10238 2002-12-14  Ulrich Drepper  <drepper@redhat.com>
10239
10240         * sysdeps/unix/sysv/linux/i386/pt-socket.S: Changes folded into the
10241         regular Linux version.  Remove file.
10242         * sysdeps/unix/sysv/linux/connect.S: Likewise.  Remove file.
10243         * sysdeps/unix/sysv/linux/llseek.c: Likewise.  Remove file.
10244         * sysdeps/unix/sysv/linux/msgrcv.c: Likewise.  Remove file.
10245         * sysdeps/unix/sysv/linux/msgsnd.c: Likewise.  Remove file.
10246         * sysdeps/unix/sysv/linux/open64.c: Likewise.  Remove file.
10247         * sysdeps/unix/sysv/linux/poll.c: Likewise.  Remove file.
10248         * sysdeps/unix/sysv/linux/pread.c: Likewise.  Remove file.
10249         * sysdeps/unix/sysv/linux/pread64.c: Likewise.  Remove file.
10250         * sysdeps/unix/sysv/linux/pselect.c: Likewise.  Remove file.
10251         * sysdeps/unix/sysv/linux/pwrite.c: Likewise.  Remove file.
10252         * sysdeps/unix/sysv/linux/pwrite64.c: Likewise.  Remove file.
10253         * sysdeps/unix/sysv/linux/readv.c: Likewise.  Remove file.
10254         * sysdeps/unix/sysv/linux/recv.S: Likewise.  Remove file.
10255         * sysdeps/unix/sysv/linux/recvfrom.S: Likewise.  Remove file.
10256         * sysdeps/unix/sysv/linux/recvmsg.S: Likewise.  Remove file.
10257         * sysdeps/unix/sysv/linux/send.S: Likewise.  Remove file.
10258         * sysdeps/unix/sysv/linux/sendmsg.S: Likewise.  Remove file.
10259         * sysdeps/unix/sysv/linux/sendto.S: Likewise.  Remove file.
10260         * sysdeps/unix/sysv/linux/sigpause.c: Likewise.  Remove file.
10261         * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise.  Remove file.
10262         * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.  Remove file.
10263         * sysdeps/unix/sysv/linux/sigwait.c: Likewise.  Remove file.
10264         * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.  Remove file.
10265         * sysdeps/unix/sysv/linux/system.c: Likewise.  Remove file.
10266         * sysdeps/unix/sysv/linux/tcdrain.c: Likewise.  Remove file.
10267         * sysdeps/unix/sysv/linux/wait.c: Likewise.  Remove file.
10268         * sysdeps/unix/sysv/linux/waitid.c: Likewise.  Remove file.
10269         * sysdeps/unix/sysv/linux/waitpid.c: Likewise.  Remove file.
10270         * sysdeps/unix/sysv/linux/writev.c: Likewise.  Remove file.
10271         * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.  Remove file.
10272
10273 2002-12-14  Jakub Jelinek  <jakub@redhat.com>
10274
10275         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: New file.
10276         * sysdeps/unix/sysv/linux/open.c: Removed.
10277         * sysdeps/unix/sysv/linux/fsync.c: Removed.
10278         * sysdeps/unix/sysv/linux/lseek.c: Removed.
10279         * sysdeps/unix/sysv/linux/msync.c: Removed.
10280         * sysdeps/unix/sysv/linux/read.c: Removed.
10281         * sysdeps/unix/sysv/linux/close.c: Removed.
10282         * sysdeps/unix/sysv/linux/creat.c: Removed.
10283         * sysdeps/unix/sysv/linux/nanosleep.c: Removed.
10284         * sysdeps/unix/sysv/linux/pause.c: Removed.
10285         * sysdeps/unix/sysv/linux/select.c: Removed.
10286         * sysdeps/unix/sysv/linux/write.c: Removed.
10287
10288 2002-12-14  Ulrich Drepper  <drepper@redhat.com>
10289
10290         * sysdeps/unix/sysv/linux/i386/pt-socket.S: Check multiple_threads
10291         element in TCB to see whether locking is needed.
10292
10293         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Check that
10294         MULTIPLE_THREADS_OFFSET value is correct.
10295
10296         * sysdeps/unix/sysv/linux/close.c: New file.
10297         * sysdeps/unix/sysv/linux/connect.S: New file.
10298         * sysdeps/unix/sysv/linux/creat.c: New file.
10299         * sysdeps/unix/sysv/linux/fsync.c: New file.
10300         * sysdeps/unix/sysv/linux/llseek.c: New file.
10301         * sysdeps/unix/sysv/linux/lseek.c: New file.
10302         * sysdeps/unix/sysv/linux/msgrcv.c: New file.
10303         * sysdeps/unix/sysv/linux/msgsnd.c: New file.
10304         * sysdeps/unix/sysv/linux/msync.c: New file.
10305         * sysdeps/unix/sysv/linux/nanosleep.c: New file.
10306         * sysdeps/unix/sysv/linux/open.c: New file.
10307         * sysdeps/unix/sysv/linux/open64.c: New file.
10308         * sysdeps/unix/sysv/linux/pause.c: New file.
10309         * sysdeps/unix/sysv/linux/poll.c: New file.
10310         * sysdeps/unix/sysv/linux/pread.c: New file.
10311         * sysdeps/unix/sysv/linux/pread64.c: New file.
10312         * sysdeps/unix/sysv/linux/pselect.c: New file.
10313         * sysdeps/unix/sysv/linux/pwrite.c: New file.
10314         * sysdeps/unix/sysv/linux/pwrite64.c: New file.
10315         * sysdeps/unix/sysv/linux/readv.c: New file.
10316         * sysdeps/unix/sysv/linux/recv.S: New file.
10317         * sysdeps/unix/sysv/linux/recvfrom.S: New file.
10318         * sysdeps/unix/sysv/linux/recvmsg.S: New file.
10319         * sysdeps/unix/sysv/linux/select.c: New file.
10320         * sysdeps/unix/sysv/linux/send.S: New file.
10321         * sysdeps/unix/sysv/linux/sendmsg.S: New file.
10322         * sysdeps/unix/sysv/linux/sendto.S: New file.
10323         * sysdeps/unix/sysv/linux/sigpause.c: New file.
10324         * sysdeps/unix/sysv/linux/sigsuspend.c: New file.
10325         * sysdeps/unix/sysv/linux/sigtimedwait.c: New file.
10326         * sysdeps/unix/sysv/linux/sigwait.c: New file.
10327         * sysdeps/unix/sysv/linux/sigwaitinfo.c: New file.
10328         * sysdeps/unix/sysv/linux/system.c: New file.
10329         * sysdeps/unix/sysv/linux/tcdrain.c: New file.
10330         * sysdeps/unix/sysv/linux/wait.c: New file.
10331         * sysdeps/unix/sysv/linux/waitid.c: New file.
10332         * sysdeps/unix/sysv/linux/waitpid.c: New file.
10333         * sysdeps/unix/sysv/linux/writev.c: New file.
10334         * sysdeps/unix/sysv/linux/i386/fcntl.c: New file.
10335
10336         * pt-readv.c: Fix comment.
10337
10338 2002-12-14  Jakub Jelinek  <jakub@redhat.com>
10339
10340         * tst-cleanup1.c: Include stdlib.h.
10341
10342         * tst-cancel5.c: New test.
10343         * Makefile (tests): Add tst-cancel5.
10344         (tst-cancel5): Link against libc.so libpthread.so in that order.
10345
10346 2002-12-13  Ulrich Drepper  <drepper@redhat.com>
10347
10348         * forward.c (test_loaded): Prevent recursive calls.
10349
10350         * Makefile (routines): Add libc-cancellation.
10351         * libc-cancellation.c: New file.
10352         * descr.h (struct pthread): Add multiple_threads field.
10353         * allocatestack.c (allocate_stack): Initialize multiple_header field of
10354         new thread descriptor to 1.
10355         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread):
10356         Initialize multiple_thread field after successful thread creation.
10357         * cancellation.c (__do_cancel): Move to pthreadP.h.
10358         (__pthread_enable_asynccancel): Remove parameter from __do_cancel call.
10359         (__pthread_disable_asynccancel): Add internal_function attribute.
10360         * init.c (sigcancel_handler): Remove parameter from __do_cancel call.
10361         * pthread_setcancelstate.c: Likewise.
10362         * pthread_setcanceltype.c: Likewise.
10363         * pthread_exit.c: Likewise.
10364         * pthreadP.h (CANCELLATION_P): Likewise.
10365         (__do_cancel): Define as static inline.
10366         (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET): New #defines.
10367         (__libc_enable_asynccancel, __libc_disable_asynccancel): New
10368         declarations.
10369         * sysdeps/i386/tls.h (tcbhead_t): Add list and multiple_threads
10370         fields.  Define MULTIPLE_THREADS_OFFSET.
10371         * sysdeps/pthread/bits/libc-lock.h: Remove __libc_locking_needed
10372         declaration.
10373         * sysdeps/unix/sysv/linux/accept.S: New file.
10374         * sysdeps/unix/sysv/linux/read.c: New file.
10375         * sysdeps/unix/sysv/linux/write.c: New file.
10376         * sysdeps/unix/sysv/linux/i386/pt-socket.S: New file.
10377         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Remove definition and
10378         initialization of __libc_locking_needed.
10379         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Don't use
10380         __libc_locking_needed, use multiple_threads field in TCB.
10381         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
10382
10383 2002-12-12  Ulrich Drepper  <drepper@redhat.com>
10384
10385         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevellock.S: Use i486
10386         version.
10387         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevellock.S: Likewise.
10388
10389         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Correct
10390         access to __libc_locking_needed for PIC.
10391
10392 2002-12-12  Jakub Jelinek  <jakub@redhat.com>
10393
10394         * sysdeps/pthread/bits/libc-lock.h (__libc_locking_needed): Only
10395         declare for libc.so.
10396         (__libc_lock_init, __libc_lock_init_recursive): Change into comma
10397         expression.
10398         (__libc_lock_lock): Put into statement expression.
10399         (__libc_lock_unlock): Remove trailing semicolon.
10400         * sysdeps/unix/sysv/linux/fork.h (__libc_pthread_init): Fix typo.
10401
10402 2002-12-12  Roland McGrath  <roland@redhat.com>
10403
10404         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use asm operand with
10405         "m" constraint to refer to __libc_locking_needed.  Declare it here.
10406
10407 2002-12-12  Ulrich Drepper  <drepper@redhat.com>
10408
10409         * sysdeps/unix/sysv/linux/fork-gen.c: Renamed to...
10410         * sysdeps/unix/sysv/linux/libc_pthread_init.c: ...this.
10411         Initialize __libc_locking_needed.
10412         * init.c (__pthread_initialize_minimal): Call __libc_pthread_init
10413         instead of __register_pthread_fork_handler.
10414         * sysdeps/pthread/bits/libc-lock.h: Declare __libc_locking_needed.
10415         * sysdeps/unix/sysv/linux/Makefile (sysdep_routimes): Replace
10416         fork-gen with libc_pthread_init.
10417         * sysdeps/unix/sysv/linux/Versions: Use __libc_pthread_init instead
10418         of __register_pthread_fork_handler.
10419         * sysdeps/unix/sysv/linux/fork.h: Declare __libc_pthread_init instead
10420         of __register_pthread_fork_handler.
10421         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use
10422         __libc_locking_needed to determine whether lock prefix can be avoided.
10423         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
10424
10425 2002-12-11  Ulrich Drepper  <drepper@redhat.com>
10426
10427         * Makefile (tests): Add tst-cleanup1.
10428         * tst-cleanup1.c: New file.
10429         * cancellation.c (__cleanup_thread): Removed.
10430         (__do_cancel): Remove call to __cleanup_thread.
10431         * pthreadP.h: Remove __cleanup_thread prorotype.
10432
10433         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_region_start):
10434         Remember function and argument even if cancellation handler
10435         function is not available.
10436         (__libc_cleanup_region_end): Execute registered function directly if
10437         pthread functions are not available.
10438         (__libc_cleanup_end): Likewise.
10439
10440         * init.c (__pthread_initialize_minimal): Fix initialization in
10441         static lib by preventing gcc from being too clever.
10442
10443 2002-12-10  Ulrich Drepper  <drepper@redhat.com>
10444
10445         * init.c (__pthread_initialize_minimal): Remove unneccesary
10446         sigaddset call.
10447
10448         * Makefile (tests): We can run tst-locale2 now.
10449
10450 2002-12-09  Ulrich Drepper  <drepper@redhat.com>
10451
10452         * Versions: Remove duplicated sigwait entry.
10453
10454 2002-12-08  Ulrich Drepper  <drepper@redhat.com>
10455
10456         * pthreadP.h: Enable pthread_cleanup_{push,pop} optimizations only
10457         inside libpthread.
10458
10459         * pt-fcntl.c (__fcntl): Initialize oldtype to avoid warning.
10460
10461         * pthreadP.h: Declare __pthread_enable_asynccancel and
10462         __pthread_disable_asynccancel.
10463         (CANCEL_ASYNC): Use __pthread_enable_asynccancel.
10464         (CANCEL_RESET): Use __pthread_disable_asynccancel.
10465         * cancellation.c (__pthread_enable_asynccancel): New function.
10466         (__pthread_disable_asynccancel): New function.
10467         * pt-accept.c: Adjust for CANCEL_ASYNC and CANCEL_RESET change.
10468         * pt-close.c: Likewise.
10469         * pt-connect.c: Likewise.
10470         * pt-creat.c: Likewise.
10471         * pt-fcntl.c: Likewise.
10472         * pt-fsync.c: Likewise.
10473         * pt-lseek.c: Likewise.
10474         * pt-lseek64.c: Likewise.
10475         * pt-msgrcv.c: Likewise.
10476         * pt-msgsnd.c: Likewise.
10477         * pt-msync.c: Likewise.
10478         * pt-nanosleep.c: Likewise.
10479         * pt-open.c: Likewise.
10480         * pt-open64.c: Likewise.
10481         * pt-pause.c: Likewise.
10482         * pt-poll.c: Likewise.
10483         * pt-pread.c: Likewise.
10484         * pt-pread64.c: Likewise.
10485         * pt-pselect.c: Likewise.
10486         * pt-pwrite.c: Likewise.
10487         * pt-pwrite64.c: Likewise.
10488         * pt-read.c: Likewise.
10489         * pt-readv.c: Likewise.
10490         * pt-recv.c: Likewise.
10491         * pt-recvfrom.c: Likewise.
10492         * pt-recvmsg.c: Likewise.
10493         * pt-select.c: Likewise.
10494         * pt-send.c: Likewise.
10495         * pt-sendmsg.c: Likewise.
10496         * pt-sendto.c: Likewise.
10497         * pt-sigpause.c: Likewise.
10498         * pt-sigsuspend.c: Likewise.
10499         * pt-sigtimedwait.c: Likewise.
10500         * pt-sigwait.c: Likewise.
10501         * pt-sigwaitinfo.c: Likewise.
10502         * pt-system.c: Likewise.
10503         * pt-tcdrain.c: Likewise.
10504         * pt-wait.c: Likewise.
10505         * pt-waitid.c: Likewise.
10506         * pt-waitpid.c: Likewise.
10507         * pt-write.c: Likewise.
10508         * pt-writev.c: Likewise.
10509         * pthread_join.c: Likewise.
10510         * pthread_timedjoin.c: Likewise.
10511
10512         * pt-sigpause.c (sigsuspend): Call __sigsuspend.
10513         (__xpg_sigpause): New function.
10514         * Versions (libpthread:GLIBC_2.3.2): Add __xpg_sigpause.
10515
10516 2002-12-07  Ulrich Drepper  <drepper@redhat.com>
10517
10518         * Makefile (CFLAGS-ftrylockfile.c): Add -D_IO_MTSAFE_IO.
10519
10520         * cleanup.c: Move declarations of _GI_pthread_cleanup_push and
10521         _GI_pthread_cleanup_pop to pthreadP.h.
10522
10523         * ftrylockfile.c: Use _IO_lock_trylock instead of
10524         pthread_mutex_trylock.
10525
10526         * pthreadP.h (CANCEL_ASYNC): Use __pthread_setcanceltype.
10527         (CANCEL_RESET): Likewise.
10528         (__pthread_setcanceltype_): Declare.
10529         (__pthread_mutex_lock_internal): Declare.
10530         (__pthread_mutex_unlock_internal): Declare.
10531         (__pthread_once_internal): Declare.
10532         (pthread_cleanup_push): Redefine using _GI_pthread_cleanup_push.
10533         (pthread_cleanup_pop): Redefine using _GI_pthread_cleanup_pop.
10534
10535         * pthread_cond_timedwait.c: Use INTUSE is calls to pthread_mutex_lock
10536         and pthread_mutex_unlock.
10537         * pthread_cond_wait.c: Likewise.
10538         * pthread_mutex_lock.c: Use INTDEF to define alias if needed.
10539         * pthread_mutex_unlock.c: Likewise.
10540
10541         * pthread_setcanceltype.c: Add additional alias
10542         __pthread_setcanceltype.
10543
10544         * sem_unlink.c (sem_unlink): Use __pthread_once with INTDEF.
10545         * sem_open.c (sem_open): Likewise.
10546         Use __libc_open, __libc_write, and __libc_close instead of
10547         open, write, and close respectively.
10548
10549         * sysdeps/pthread/bits/libc-lock.h (__libc_lock_trylock_internal):
10550         Rewrite as statement expression since it must return a value.
10551
10552         * pthread_cancel.c: Use __pthread_kill instead of pthread_kill.
10553         * sysdeps/unix/sysv/linux/pthread_kill.c: Define additional alias
10554         __pthread_kill.
10555
10556         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Define additional
10557         alias __pthread_once_internal.
10558
10559         * sysdeps/unix/sysv/linux/raise.c: Use libc_hidden_def for raise.
10560
10561 2002-12-06  Ulrich Drepper  <drepper@redhat.com>
10562
10563         * Makefile (tests): Add tst-stdio1 and tst-stdio2.
10564         * tst-stdio1.c: New file.
10565         * tst-stdio2.c: New file.
10566
10567         * init.c (__pthread_initialize_minimal): Correct INIT_LIST_HEAD use.
10568
10569         * Makefile (tests): Comment out tst-locale2 for now.
10570         (CFLAGS-flockfile.c, CFLAGS-funlockfile.c): Define to -D_IO_MTSAFE_IO.
10571
10572         * sysdeps/unix/sysv/linux/Makefile: Define CFLAGS-fork.c to
10573         -D_IO_MTSAFE_IO.
10574         * sysdeps/unix/sysv/linux/fork.c: Include <bits/stdio-lock.h>.
10575         Use _IO_lock_init instead of explicit assignment.
10576
10577         * sysdeps/pthread/bits/libc-lock.h: Define __rtld_lock_* macros.
10578         Define __libc_lock_* and __libc_lock_recursive macros with
10579         lowlevellock macros, not pthread mutexes.
10580
10581         * flockfile.c: Include <bits/stdio-lock.h>.  Use _IO_lock_lock instead
10582         of pthread_mutex_lock.
10583         * funlockfile.c: Include <bits/stdio-lock.h>.  Use _IO_lock_unlock
10584         instead of pthread_mutex_unlock.
10585
10586 2002-12-06  Roland McGrath  <roland@redhat.com>
10587
10588         * allocatestack.c (__stack_user): Use uninitialized defn.
10589         * init.c (__pthread_initialize_minimal): Initialize it here.
10590
10591 2002-12-05  Roland McGrath  <roland@redhat.com>
10592
10593         * sysdeps/i386/tls.h (TLS_INIT_TP): Make it return zero or an error
10594         string.
10595         * sysdeps/x86_64/tls.h (TLS_INIT_TP): Likewise.
10596
10597         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Add
10598         missing & here too.
10599
10600 2002-12-05  Ulrich Drepper  <drepper@redhat.com>
10601
10602         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove
10603         lowlevellock.
10604         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: New file.
10605         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevellock.S: New file.
10606         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevellock.S: New file.
10607         * sysdeps/pthread/bits/libc-lock.h: Use lowlevellock implementation
10608         for __libc_lock_* macros.
10609         * Makefile (routines): Add libc-lowlevellock.
10610
10611 2002-10-09  Roland McGrath  <roland@redhat.com>
10612
10613         * sysdeps/pthread/bits/libc-lock.h (__libc_maybe_call): New macro.
10614         Under [__PIC__], call the function via the pointer fetched for
10615         comparison rather than a call by name that uses the PLT.
10616         (__libc_lock_init, __libc_rwlock_init, __libc_lock_fini)
10617         (__libc_rwlock_fini, __libc_lock_lock, __libc_rwlock_rdlock)
10618         (__libc_rwlock_wrlock, __libc_lock_trylock, __libc_rwlock_tryrdlock)
10619         (__libc_rwlock_trywrlock, __libc_lock_unlock, __libc_rwlock_unlock)
10620         (__libc_key_create, __libc_getspecific, __libc_setspecific): Use it.
10621
10622 2002-12-04  Roland McGrath  <roland@redhat.com>
10623
10624         * forward.c (pthread_self): Use FORWARD3 macro to correct return type.
10625
10626         * sysdeps/i386/td_ta_map_lwp2thr.c: Moved from ../nptl_db.
10627         * sysdeps/generic/td_ta_map_lwp2thr.c: New file.
10628
10629         * pthread_create.c (start_thread): Add missing & on __nptl_last_event.
10630
10631 2002-12-04  Ulrich Drepper  <drepper@redhat.com>
10632
10633         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Make pthread_t
10634         a completely opaque, non-integer type.
10635         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
10636
10637 2002-12-05  Jakub Jelinek  <jakub@redhat.com>
10638
10639         * sysdeps/i386/tls.h: Include stdlib.h.
10640         * sysdeps/x86_64/tls.h: Likewise.
10641
10642 2002-12-04  Ulrich Drepper  <drepper@redhat.com>
10643
10644         * Makefile (tests): Add tst-locale2.
10645         (tests-static): Likewise.
10646         * tst-locale2.c: New file.
10647
10648         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Mark asms as
10649         volatile and add memory clobbers to lock operations.
10650
10651 2002-12-03  Ulrich Drepper  <drepper@redhat.com>
10652
10653         * sysdeps/i386/i686/bits/atomic.h: Use i486 version.
10654         * sysdeps/i386/i486/bits/atomic.h: New file.
10655         * sysdeps/i386/i586/bits/atomic.h: New file.
10656         * sysdeps/i386/i686/pthread_spin_trylock.S: Define HAVE_CMOV and
10657         include i486 version.
10658         * sysdeps/i386/i486/pthread_spin_trylock.S: New file.
10659         * sysdeps/i386/i586/pthread_spin_trylock.S: New file.
10660         Patch by Marijn Ros <marijn@mad.scientist.com>.
10661
10662         * allocatestack.c (get_cached_stack): Don't crash if we first
10663         found a stack with a larger size then needed.
10664         Reported by Hui Huang <hui.huang@sun.com>.
10665
10666         * Makefile (tests): Add tst-sysconf.
10667         * tst-sysconf.c: New file.
10668
10669         * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine
10670         PTHREAD_THREADS_MAX.
10671
10672 2002-12-02  Roland McGrath  <roland@redhat.com>
10673
10674         * pthreadP.h (__stack_user, __nptl_create_event, __nptl_death_event):
10675         Declare using hidden_proto instead of attribute_hidden, so there are
10676         non-.hidden static symbols for gdb to find.
10677         (__pthread_keys): Likewise.
10678         * events.c (__nptl_create_event, __nptl_death_event): Add hidden_def.
10679         * allocatestack.c (__stack_user): Likewise.
10680         * pthread_create.c (__pthread_keys): Likewise.
10681         (__nptl_threads_events, __nptl_last_event): Make these static instead
10682         of hidden.
10683         * pthread_key_create.c (__pthread_pthread_keys_max,
10684         __pthread_pthread_key_2ndlevel_size): Renamed from __linuxthreads_*.
10685
10686 2002-12-02  Ulrich Drepper  <drepper@redhat.com>
10687
10688         * Makefile (tests): Add tst-locale1.  If buid-static is yes link
10689         statically.
10690         * tst-locale1.c: New file.
10691
10692         * pthread_cond_timedwait.c: Include <stdlib.h>.
10693
10694         * Makefile (tests): Add tst-fork2 and tst-fork3.
10695         * tst-fork2.c: New file.
10696         * tst-fork3.c: New file.
10697
10698 2002-11-28  Ulrich Drepper  <drepper@redhat.com>
10699
10700         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: New file.
10701
10702         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define macros which
10703         require it to 200112L.
10704
10705         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Use cmov
10706         instruction only if HAVE_CMOV is defined.
10707         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrwlock.S: Define HAVE_CMOV.
10708
10709         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: New file.
10710
10711         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: New file.
10712
10713         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: New file.
10714
10715         * sysdeps/unix/sysv/linux/x86_64/pt-vfork.S: New file.
10716
10717 2002-11-27  Ulrich Drepper  <drepper@redhat.com>
10718
10719         * sysdeps/x86_64/bits/atomic.h: New file.
10720
10721         * sysdeps/i386/i686/bits/atomic.h: Fix asm syntax for 8- and
10722         16-bit operations.
10723
10724         * sysdeps/unix/sysv/linux/raise.c (raise): Use INTERNAL_SYSCALL if
10725         possible since gettid cannot fail.
10726
10727         * sysdeps/x86_64/pthreaddef.h: New file.
10728
10729         * sysdeps/i386/pthreaddef.h (gettid): Removed.
10730
10731         * sysdeps/x86_64/pthread_spin_init.c: New file.
10732         * sysdeps/x86_64/pthread_spin_lock.c: New file.
10733         * sysdeps/x86_64/pthread_spin_trylock.c: New file.
10734         * sysdeps/x86_64/pthread_spin_unlock.c: New file.
10735
10736         * sysdeps/i386/i686/pthread_spin_trylock.S (pthread_spin_trylock):
10737         Add missing lock prefix.  Minute optimization.
10738
10739         * tst-spin2.c (main): Also check successful trylock call.
10740
10741         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Use correct
10742         syscall.  Fix typo in case INTERNAL_SYSCALL is not used.
10743
10744         * sysdeps/i386/pthread_spin_destroy.c: Moved to...
10745         * sysdeps/pthread/pthread_spin_destroy.c: ...here.  New file.
10746
10747         * sysdeps/i386/pthread_sigmask.c: Removed.  Use the generic code.
10748         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Return correct
10749         value in case of an error.  Add support for INTERNAL_SYSCALL.
10750
10751         * sysdeps/i386/pthread_sigmask.c (pthread_sigmask): Return correct
10752         value in case of an error.
10753
10754         * sysdeps/x86_64/tls.h: New file.
10755
10756 2002-11-26  Ulrich Drepper  <drepper@redhat.com>
10757
10758         * sysdeps/i386/tls.h (THREAD_GETMEM_NC): Change interface.  It now
10759         takes the array member name and the index as parameters.
10760         (THREAD_SETMEM_NC): Likewise.
10761         * pthread_getspecific.c: Use new THREAD_GETMEM_NC interface.
10762         * pthread_setspecific.c: Use new THREAD_GETMEM_NC and THREAD_SETMEM_NC
10763         interfaces.
10764
10765         * sysdeps/i386/tls.h (THREAD_SETMEM): Use size of member element
10766         to decide which code to use.
10767         (THREAD_SETMEM_NC): Likewise.
10768
10769         * allocatestack.c (queue_stack): Don't remove stack from list here.
10770         Do it in the caller.  Correct condition to prematurely terminate
10771         loop to free stacks.
10772         (__deallocate_stack): Remove stack from list here.
10773
10774 2002-11-26  Ulrich Drepper  <drepper@redhat.com>
10775
10776         * Makefile (tests): Add tst-stack1.
10777         * tst-stack1.c: New file.
10778
10779         * allocatestack.c (allocate_stack): Initialize the TCB on a user
10780         provided stack.
10781
10782         * pthread_attr_getstack.c: Return bottom of the thread area.
10783
10784 2002-11-25  Ulrich Drepper  <drepper@redhat.com>
10785
10786         * Makefile (libpthread-routines): Add pt-allocrtsig and
10787         pthread_kill_other_threads.
10788         * pt-allocrtsig.c: New file.
10789         * pthread_kill_other_threads.c: New file.
10790         * sysdeps/unix/sysv/linux/allocrtsig.c: Add additional aliases for
10791         all three functions.
10792         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove
10793         allocrtsig.
10794         * sysdeps/unix/sysv/linux/Versions (libc:GLIBC_PRIVATE): Export
10795         __libc_current_sigrtmin_private, __libc_current_sigrtmax_private,
10796         and __libc_allocate_rtsig_private.
10797         * Versions (libpthread): Export pthread_kill_other_threads_np,
10798         __libc_current_sigrtmin, and __libc_current_sigrtmax.
10799
10800 2002-11-24  Ulrich Drepper  <drepper@redhat.com>
10801
10802         * allocatestack.c (allocate_stack): stackaddr in attribute points to
10803         the end of the stack.  Adjust computations.
10804         When mprotect call fails dequeue stack and free it.
10805         * pthread_attr_setstack.c: Store top of the stack in stackaddr
10806         attribute.
10807         * pthread_getattr_np.c: Likewise.
10808
10809         * descr.h (IS_DETACHED): Add some more parenthesis to prevent
10810         surprises.
10811
10812 2002-11-23  Ulrich Drepper  <drepper@redhat.com>
10813
10814         * sysdeps/pthread/pthread.h (pthread_self): __THROW must come before
10815         attribute definitions.  Patch by Luca Barbieri <ldb@ldb.ods.org>.
10816
10817 2002-11-22  Ulrich Drepper  <drepper@redhat.com>
10818
10819         * pthread_getspecific.c: Optimize access to first 2nd-level array.
10820         * pthread_setspecific.c: Likewise.
10821
10822 2002-11-21  Ulrich Drepper  <drepper@redhat.com>
10823
10824         * sysdeps/unix/sysv/linux/i386/createthread.c: Remove CLONE_ flags
10825         definitions.  Get them from the official place.
10826         * sysdeps/unix/sysv/linux/i386/fork.c: Likewise.
10827
10828         * sysdeps/unix/sysv/linux/i386/createthread.c: Update CLONE_* flags.
10829         Use new CLONE_ flags in clone() calls.
10830
10831         * sysdeps/unix/sysv/linux/fork.c: Use ARCH_FORK to actually fork.
10832         * sysdeps/unix/sysv/linux/i386/fork.c: New file.
10833
10834         * Versions: Add pthread_* functions for libc.
10835         * forward.c: New file.
10836
10837         * sysdeps/pthread/Makefile (libpthread-sysdeps_routines): Add
10838         errno-loc.
10839         * herrno.c: New file.
10840         * res.c: New file.
10841
10842         * Makefile (libpthread-routines): Remove sem_post, sem_wait,
10843         sem_trywait, and sem_timedwait.  Add herrno and res.
10844         * sem_init.c: Don't initialize lock and waiters members.
10845         * sem_open.c: Likewise.
10846         * sem_post.c: Removed.
10847         * sem_wait.c: Removed.
10848         * sem_trywait.c: Removed.
10849         * sem_timedwait.c: Removed.
10850         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Complete rewrite.
10851         Includes full implementations of sem_post, sem_wait, sem_trywait,
10852         and sem_timedwait.
10853         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h (lll_sem_post): Adjust
10854         for new implementation.
10855         * sysdeps/unix/sysv/linux/internaltypes.h (struct sem): Remove lock
10856         and waiters fields.
10857
10858         * tst-sem3.c: Improve error message.
10859         * tst-signal3.c: Likewise.
10860
10861         * init.c (__pthread_initialize_minimal): Use set_tid_address syscall
10862         to tell the kernel about the termination futex and to initialize tid
10863         member.  Don't initialize main_thread.
10864         * descr.h (struct pthread): Remove main_thread member.
10865         * cancelllation.c (__do_cancel): Remove code handling main thread.
10866         The main thread is not special anymore.
10867
10868         * allocatestack.c (__reclaim_stacks): Mark stacks as unused.  Add
10869         size of the stacks to stack_cache_actsize.
10870
10871         * pt-readv.c: Add missing "defined".
10872         * pt-sigwait.c: Likewise.
10873         * pt-writev.c: Likewise.
10874
10875 2002-11-09  Ulrich Drepper  <drepper@redhat.com>
10876
10877         * Versions: Export __connect from libpthread.
10878         Patch by Luca Barbieri <ldb@ldb.ods.org>.
10879
10880         * Makefile (libpthread-routines): Add pt-raise.
10881         * sysdeps/unix/sysv/linux/raise.c: New file.
10882         * sysdeps/unix/sysv/linux/pt-raise.c: New file.
10883         * sysdeps/generic/pt-raise.c: New file.
10884
10885         * pthread_cond_init.c: Initialize all data elements of the condvar
10886         structure.  Patch by Luca Barbieri <ldb@ldb.ods.org>.
10887
10888         * pthread_attr_init.c: Actually implement 2.0 compatibility version.
10889         * pthread_create.c: Likewise.
10890
10891         * Makefile (tests): Add tst-key1, tst-key2, tst-key3.
10892         * tst-key1.c: New file.
10893         * tst-key2.c: New file.
10894         * tst-key3.c: New file.
10895
10896         * Versions: Export pthread_detach for version GLIBC_2.0.
10897         Reported by Saurabh Desai <sdesai@austin.ibm.com>.
10898
10899 2002-11-08  Ulrich Drepper  <drepper@redhat.com>
10900
10901         * pthread_key_create.c: Terminate search after an unused key was found.
10902         Patch by Luca Barbieri <ldb@ldb.ods.org>.
10903
10904         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Return zero.
10905         Patch by Luca Barbieri <ldb@ldb.ods.org>.
10906
10907 2002-10-10  Ulrich Drepper  <drepper@redhat.com>
10908
10909         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Use slow generic
10910         dynamic lookup for errno in PIC.
10911
10912         * allocatestack.c (get_cached_stack): Rearrange code slightly to
10913         release the stack lock as soon as possible.
10914         Call _dl_allocate_tls_init for TCB from the cache to re-initialize
10915         the static TLS block.
10916         (allocate_stack): Call _dl_allocate_tls_init for user-provided stack.
10917
10918         * cancellation.c: Renamed from cancelation.c.
10919         * Makefile: Adjust accordingly.
10920         * pthreadP.h (CANCELLATION_P): Renamed from CANCELATION_P.
10921         * cleanup_defer.c: Use CANCELLATION_P.
10922         * pthread_testcancel.c: Likewise.
10923         * descr.h: Fix spelling in comments.
10924         * init.c: Likewise.
10925         * pthread_getattr_np.c: Likewise.
10926         * pthread_getschedparam.c: Likewise.
10927         * pthread_setschedparam.c: Likewise.
10928         * Versions: Likewise.
10929
10930         * pt-pselect.c: New file.
10931         * Makefile (libpthread-routines): Add pt-pselect.
10932         * Versions: Add pselect.
10933
10934         * tst-cancel4.c: New file.
10935         * Makefile (tests): Add tst-cancel4.
10936
10937 2002-10-09  Ulrich Drepper  <drepper@redhat.com>
10938
10939         * pthread_mutex_lock.c: Always record lock ownership.
10940         * pthread_mutex_timedlock.c: Likewise.
10941         * pthread_mutex_trylock.c: Likewise.
10942
10943         * pt-readv.c: New file.
10944         * pt-writev.c: New file.
10945         * pt-creat.c: New file.
10946         * pt-msgrcv.c: New file.
10947         * pt-msgsnd.c: New file.
10948         * pt-poll.c: New file.
10949         * pt-select.c: New file.
10950         * pt-sigpause.c: New file.
10951         * pt-sigsuspend.c: New file.
10952         * pt-sigwait.c: New file.
10953         * pt-sigwaitinfo.c: New file.
10954         * pt-waitid.c: New file.
10955         * Makefile (libpthread-routines): Add pt-readv, pt-writev, pt-creat,
10956         pt-msgrcv, pt-msgsnd, pt-poll, pt-select, pt-sigpause, pt-sigsuspend,
10957         pt-sigwait, pt-sigwaitinfo, and pt-waitid.
10958         * Versions: Add all the new functions.
10959
10960         * tst-exit1.c: New file.
10961         * Makefile (tests): Add tst-exit1.
10962
10963         * sem_timedwait.c: Minor optimization for more optimal fastpath.
10964
10965 2002-10-08  Ulrich Drepper  <drepper@redhat.com>
10966
10967         * pt-fcntl.c: Only enable asynchronous cancellation for F_SETLKW.
10968
10969         * pthread_join.c: Enable asynchronous cancellation around lll_wait_tid
10970         call.  pthread_join is an official cancellation point.
10971         * pthread_timedjoin.c: Likewise.
10972
10973         * pthread_cond_wait.c: Revert order in which internal lock are dropped
10974         and the condvar's mutex are retrieved.
10975         * pthread_cond_timedwait.c: Likewise.
10976         Reported by dice@saros.East.Sun.COM.
10977
10978 2002-10-07  Ulrich Drepper  <drepper@redhat.com>
10979
10980         * pthreadP.h: Cut out all type definitions and move them...
10981         * sysdeps/unix/sysv/linux/internaltypes.h: ...here.  New file.
10982         * pthreadP.h: Include <internaltypes.h>.
10983
10984         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h (lll_sem_post): Little
10985         performance tweaks.
10986
10987         * sem_trywait.c: Shuffle #includes around to get right order.
10988         * sem_timedwait.c: Likewise.
10989         * sem_post.c: Likewise.
10990         * sem_wait.c: Likewise.
10991
10992         * nptl 0.3 released.
10993
10994         * Makefile (tests): Add tst-signal3.
10995         * tst-signal3.c: New file.
10996
10997 2002-10-05  Ulrich Drepper  <drepper@redhat.com>
10998
10999         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Tell the compiler that
11000         the asms modify the sem object.
11001         (__lll_sem_timedwait): Now takes struct sem* as first parameter.
11002
11003         * sysdeps/unix/sysv/linux/i386/bits/semaphore.h (sem_t): Don't expose
11004         the actual members.
11005         * pthreadP.h (struct sem): New type.  Actual semaphore type.
11006         * semaphoreP.h: Include pthreadP.h.
11007         * sem_getvalue.c: Adjust to sem_t change.
11008         * sem_init.c: Likewise.
11009         * sem_open.c: Likewise.
11010         * sem_post.c: Likewise.
11011         * sem_timedwait.c: Likewise.
11012         * sem_trywait.c: Likewise.
11013         * sem_wait.c: Likewise.
11014
11015 2002-10-04  Ulrich Drepper  <drepper@redhat.com>
11016
11017         * Makefile (tests): Add tst-basic2, tst-exec1, tst-exec3, tst-exec3.
11018         * tst-basic2.c: New file.
11019         * tst-exec1.c: New file.
11020         * tst-exec2.c: New file.
11021         * tst-exec3.c: New file.
11022
11023         * tst-fork1.c: Remove extra */.
11024
11025         * nptl 0.2 released.  The API for IA-32 is complete.