* sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
[platform/upstream/glibc.git] / nptl / ChangeLog
1 2006-03-01  Ulrich Drepper  <drepper@redhat.com>
2
3         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S
4         (__lll_robust_lock_wait): Also set FUTEX_WAITERS bit if we got the
5         mutex.
6         (__lll_robust_timedlock_wait): Likewise.
7         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S
8         (__lll_robust_lock_wait): Likewise.
9         (__lll_robust_timedlock_wait): Likewise.
10         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c
11         (__lll_robust_lock_wait): Likewise.
12         (__lll_robust_timedlock_wait): Likewise.
13
14 2006-03-01  Jakub Jelinek  <jakub@redhat.com>
15
16         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (lll_robust_mutex_dead,
17         lll_robust_mutex_trylock, lll_robust_mutex_lock,
18         lll_robust_mutex_cond_lock, lll_robust_mutex_timedlock,
19         lll_robust_mutex_unlock): Define.
20         (__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes.
21
22 2006-02-28  H.J. Lu  <hongjiu.lu@intel.com>
23
24         * sysdeps/unix/sysv/linux/ia64/clone2.S: Include <clone2.S>
25         instead of <clone.S>.
26
27 2006-02-27  Jakub Jelinek  <jakub@redhat.com>
28
29         * Makefile (libpthread-routines): Add
30         pthread_mutexattr_[sg]etprotocol, pthread_mutexattr_[sg]etprioceiling
31         and pthread_mutex_[sg]etprioceiling.
32         * Versions (GLIBC_2.4): Export pthread_mutexattr_getprotocol,
33         pthread_mutexattr_setprotocol, pthread_mutexattr_getprioceiling,
34         pthread_mutexattr_setprioceiling, pthread_mutex_getprioceiling and
35         pthread_mutex_setprioceiling.
36         * sysdeps/pthread/pthread.h (PTHREAD_PRIO_NONE, PTHREAD_PRIO_INHERIT,
37         PTHREAD_PRIO_PROTECT): New enum values.
38         (pthread_mutexattr_getprotocol, pthread_mutexattr_setprotocol,
39         pthread_mutexattr_getprioceiling, pthread_mutexattr_setprioceiling,
40         pthread_mutex_getprioceiling, pthread_mutex_setprioceiling): New
41         prototypes.
42         * pthreadP.h (PTHREAD_MUTEX_PRIO_INHERIT_PRIVATE_NP,
43         PTHREAD_MUTEX_PRIO_PROTECT_PRIVATE_NP): New enum values.
44         (PTHREAD_MUTEX_PRIO_CEILING_SHIFT, PTHREAD_MUTEX_PRIO_CEILING_MASK):
45         Define.
46         (PTHREAD_MUTEXATTR_PROTOCOL_SHIFT, PTHREAD_MUTEXATTR_PROTOCOL_MASK,
47         PTHREAD_MUTEXATTR_PRIO_CEILING_SHIFT,
48         PTHREAD_MUTEXATTR_PRIO_CEILING_MASK): Define.
49         (PTHREAD_MUTEXATTR_FLAG_BITS): Or in PTHREAD_MUTEXATTR_PROTOCOL_MASK
50         and PTHREAD_MUTEXATTR_PRIO_CEILING_MASK.
51         * pthread_mutex_init.c (__pthread_mutex_init): For the time being
52         return ENOTSUP for PTHREAD_PRIO_INHERIT or PTHREAD_PRIO_PROTECT
53         protocol mutexes.
54         * pthread_mutex_getprioceiling.c: New file.
55         * pthread_mutex_setprioceiling.c: New file.
56         * pthread_mutexattr_getprioceiling.c: New file.
57         * pthread_mutexattr_setprioceiling.c: New file.
58         * pthread_mutexattr_getprotocol.c: New file.
59         * pthread_mutexattr_setprotocol.c: New file.
60
61 2006-02-27  Daniel Jacobowitz  <dan@codesourcery.com>
62
63         * sysdeps/unix/sysv/linux/aio_misc.h: Include <limits.h>.
64
65 2006-02-27  Roland McGrath  <roland@redhat.com>
66
67         * sysdeps/pthread/Subdirs: List nptl here too.
68         * configure (libc_add_on_canonical): New variable.
69
70         * sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h: Use #include_next.
71
72         * sysdeps/unix/sysv/linux/sleep.c: Use #include_next after #include of
73         self to get main source tree's file.
74         * sysdeps/unix/sysv/linux/alpha/clone.S: Likewise.
75         * sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
76         * sysdeps/unix/sysv/linux/i386/vfork.S: Likewise.
77         * sysdeps/unix/sysv/linux/ia64/clone2.S: Likewise.
78         * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: Likewise.
79         * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Likewise.
80         * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Likewise.
81         * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Likewise.
82         * sysdeps/unix/sysv/linux/sh/clone.S: Likewise.
83         * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: Likewise.
84         * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Likewise.
85         * sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
86         * sysdeps/unix/sysv/linux/x86_64/vfork.S: Likewise.
87
88         * Makefile: Use $(sysdirs) in vpath directive.
89
90         * sysdeps/pthread/Makefile (CFLAGS-libc-start.c): Variable removed.
91         (CPPFLAGS-timer_routines.c): Likewise.
92
93         * Makeconfig (includes): Variable removed.
94
95 2006-02-26  Roland McGrath  <roland@redhat.com>
96
97         * sysdeps/generic/pt-raise.c: Moved to ...
98         * pt-raise.c: ... here.
99         * sysdeps/generic/lowlevellock.h: Moved to ...
100         * lowlevellock.h: ... here.
101
102 2006-02-23  Roland McGrath  <roland@redhat.com>
103
104         * descr.h (struct pthread): Add final member `end_padding'.
105         (PTHREAD_STRUCT_END_PADDING): Use it.
106
107 2006-02-20  Roland McGrath  <roland@redhat.com>
108
109         * sysdeps/mips: Directory removed, saved in ports repository.
110         * sysdeps/unix/sysv/linux/mips: Likewise.
111
112 2006-02-18  Ulrich Drepper  <drepper@redhat.com>
113
114         * tst-robust1.c: Add second mutex to check that the mutex list is
115         handled correctly.
116
117 2006-02-17  Jakub Jelinek  <jakub@redhat.com>
118
119         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_robust_mutex_dead,
120         lll_robust_mutex_trylock, lll_robust_mutex_lock,
121         lll_robust_mutex_cond_lock, lll_robust_mutex_timedlock,
122         lll_robust_mutex_unlock): New macros.
123         (__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes.
124         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
125         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
126         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
127         * sysdeps/unix/sysv/linux/lowlevelrobustlock.c: New file.
128
129 2006-02-17  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
130
131         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Add lll_robust_mutex_*
132         definitions.
133         * sysdeps/unix/sysv/linux/sh/lowlevelrobustlock.S: New file.
134
135 2006-02-17  Ulrich Drepper  <drepper@redhat.com>
136
137         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
138         (lll_robust_mutex_unlock): Avoid unnecessary wakeups.
139         * sysdeps/unix/sysv/linux/i386/lowlevellock.h
140         (lll_robust_mutex_unlock): Likewise.
141
142 2006-02-13  Jakub Jelinek  <jakub@redhat.com>
143
144         * descr.h [!__PTHREAD_MUTEX_HAVE_PREV] (DEQUEUE_MUTEX):
145         Set robust_list.__next rather than robust_list.
146         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
147         (__pthread_list_t): New typedef.
148         (pthread_mutex_t): Replace __next and __prev fields with __list.
149         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h
150         (__pthread_list_t): New typedef.
151         (pthread_mutex_t): Replace __next and __prev fields with __list.
152         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
153         (__pthread_list_t, __pthread_slist_t): New typedefs.
154         (pthread_mutex_t): Replace __next and __prev fields with __list.
155         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h
156         (__pthread_list_t, __pthread_slist_t): New typedefs.
157         (pthread_mutex_t): Replace __next and __prev fields with __list.
158         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
159         (__pthread_list_t, __pthread_slist_t): New typedefs.
160         (pthread_mutex_t): Replace __next and __prev fields with __list.
161         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h
162         (__pthread_slist_t): New typedef.
163         (pthread_mutex_t): Replace __next field with __list.
164
165 2006-02-15  Ulrich Drepper  <drepper@redhat.com>
166
167         * pthreadP.h: Define PTHREAD_MUTEX_INCONSISTENT instead of
168         PTHREAD_MUTEX_OWNERDEAD.
169         (PTHREAD_MUTEX_ROBUST_PRIVATE_NP): Define as 16, not 256.
170         Define FUTEX_WAITERS, FUTEX_OWNER_DIED, FUTEX_TID_MASK.
171         * Makefile (libpthread-routines): Add lowlevelrobustlock.
172         * pthread_create.c (start_thread): Very much simplify robust_list loop.
173         * pthread_mutex_consistent.c: Inconsistent mutex have __owner now set
174         to PTHREAD_MUTEX_INCONSISTENT.
175         * pthread_mutex_destroy.c: Allow destroying of inconsistent mutexes.
176         * pthread_mutex_lock.c: Reimplement robust mutex handling.
177         * pthread_mutex_trylock.c: Likewise.
178         * pthread_mutex_timedlock.c: Likewise.
179         * pthread_mutex_unlock.c: Likewise.
180         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise.
181         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
182         lowlevelrobustlock.sym.
183         * sysdeps/unix/sysv/linux/lowlevelrobustlock.sym: New file.
184         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Add lll_robust_mutex_*
185         definitions.
186         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
187         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrobustlock.S: New file.
188         * sysdeps/unix/sysv/linux/i386/i586/lowlevelrobustlock.S: New file.
189         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrobustlock.S: New file.
190         * sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: New file.
191
192 2006-02-12  Ulrich Drepper  <drepper@redhat.com>
193
194         * allocatestack.c (allocate_stack): Initialize robust_list.
195         * init.c (__pthread_initialize_minimal_internal): Likewise.
196         * descr.h (struct xid_command): Pretty printing.
197         (struct pthread): Use __pthread_list_t or __pthread_slist_t for
198         robust_list.  Adjust macros.
199         * pthread_create.c (start_thread): Adjust robust_list handling.
200         * phtread_mutex_unlock.c: Don't allow unlocking from any thread
201         but the owner for all robust mutex types.
202         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Define
203         __pthread_list_t and __pthread_slist_t.  Use them in pthread_mutex_t.
204         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
205         * sysdeps/pthread/pthread.h: Adjust mutex initializers.
206
207         * sysdeps/unix/sysv/linux/i386/not-cancel.h: Define openat_not_cancel,
208         openat_not_cancel_3, openat64_not_cancel, and openat64_not_cancel_3.
209
210 2006-02-08  Jakub Jelinek  <jakub@redhat.com>
211
212         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait,
213         lll_futex_timedwait, lll_wait_tid): Add "memory" clobber.
214
215 2006-01-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
216
217         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_futex_wait):
218         Return status.
219         (lll_futex_timed_wait): Define.
220
221 2006-01-19  Ulrich Drepper  <drepper@redhat.com>
222
223         * tst-cancel4.c: Test ppoll.
224
225 2006-01-18  Andreas Jaeger  <aj@suse.de>
226
227         [BZ #2167]
228         * sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h
229         (pthread_mutex_t): Follow changes for other archs.  Based on patch
230         by Jim Gifford <patches@jg555.com>.
231
232 2006-01-13  Richard Henderson  <rth@redhat.com>
233
234         * sysdeps/alpha/tls.h (tcbhead_t): Rename member to __private.
235
236 2006-01-10  Roland McGrath  <roland@redhat.com>
237
238         * sysdeps/alpha/jmpbuf-unwind.h: File moved to main source tree.
239         * sysdeps/i386/jmpbuf-unwind.h: Likewise.
240         * sysdeps/mips/jmpbuf-unwind.h: Likewise.
241         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
242         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
243         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
244         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
245         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Likewise.
246         * sysdeps/x86_64/jmpbuf-unwind.h: Likewise.
247         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
248
249 2006-01-09  Roland McGrath  <roland@redhat.com>
250
251         * tst-initializers1-c89.c: New file.
252         * tst-initializers1-c99.c: New file.
253         * tst-initializers1-gnu89.c: New file.
254         * tst-initializers1-gnu99.c: New file.
255         * Makefile (tests): Add them.
256         (CFLAGS-tst-initializers1-c89.c): New variable.
257         (CFLAGS-tst-initializers1-c99.c): New variable.
258         (CFLAGS-tst-initializers1-gnu89.c): New variable.
259         (CFLAGS-tst-initializers1-gnu99.c): New variable.
260
261         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
262         Use __extension__ on anonymous union definition.
263         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
264         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
265         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
266         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
267         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
268
269 2006-01-08  Jakub Jelinek  <jakub@redhat.com>
270
271         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_mutex_t):
272         Don't give the union a name because it changes the mangled name.
273         Instead name the struct for __data.
274         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_mutex_t):
275         Likewise.
276         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_mutex_t):
277         Likewise.
278
279 2006-01-09  Jakub Jelinek  <jakub@redhat.com>
280
281         * sysdeps/sparc/sparc64/jmpbuf-unwind.h (_JMPBUF_UNWINDS_ADJ): Add
282         stack bias to mc_ftp field.
283
284 2006-01-07  Ulrich Drepper  <drepper@redhat.com>
285
286         * sysdeps/pthread/aio_misc.h (AIO_MISC_WAIT): Work around gcc
287         being too clever and reloading the futex value where it shouldn't.
288
289 2006-01-06  Ulrich Drepper  <drepper@redhat.com>
290
291         * descr.h [!__PTHREAD_MUTEX_HAVE_PREV] (DEQUEUE_MUTEX): Use
292         correct type.
293
294 2006-01-06  Jakub Jelinek  <jakub@redhat.com>
295
296         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h (PSEUDO):
297         Add cfi directives.
298
299 2006-01-06  Ulrich Drepper  <drepper@redhat.com>
300
301         * sysdeps/ia64/tls.h (tcbhead_t): Rename private member to __private.
302         * sysdeps/ia64/tcb-offsets.sym: Adjust for private->__private
303         rename in tcbhead_t.
304
305         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
306         Don't give the union a name because it changes the mangled name.
307         Instead name the struct for __data.
308         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
309         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
310         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
311         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
312         * pthread_create.c (start_thread): Adjust robust mutex free loop.
313         * descr.h (ENQUEUE_MUTEX, DEQUEUE_MUTEX): Adjust.
314
315 2006-01-05  Ulrich Drepper  <drepper@redhat.com>
316
317         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
318         Return status.
319         (lll_futex_timed_wait): Define.
320         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
321         * sysdeps/pthread/aio_misc.h: New file.
322
323 2006-01-03  Joseph S. Myers  <joseph@codesourcery.com>
324
325         * Makefile ($(objpfx)$(multidir)): Use mkdir -p.
326
327 2006-01-03  Steven Munroe  <sjmunroe@us.ibm.com>
328
329         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
330         (PSEUDO): Remove redundant cfi_startproc and cfi_endproc directives.
331         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
332
333 2006-01-04  Ulrich Drepper  <drepper@redhat.com>
334
335         * tst-cancel24.cc: Use C headers instead of C++ headers.
336
337 2006-01-03  Jakub Jelinek  <jakub@redhat.com>
338
339         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Remove #error for
340         sparc-linux configured glibc.
341         (lll_futex_wake_unlock): Define to 1 for sparc-linux configured glibc.
342         (__lll_mutex_trylock, __lll_mutex_cond_trylock, __lll_mutex_lock,
343         __lll_mutex_cond_lock, __lll_mutex_timedlock): Use
344         atomic_compare_and_exchange_val_24_acq instead of
345         atomic_compare_and_exchange_val_acq.
346         (lll_mutex_unlock, lll_mutex_unlock_force): Use atomic_exchange_24_rel
347         instead of atomic_exchange_rel.
348         * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c: New file.
349         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_init.c: New
350         file.
351         * sysdeps/unix/sysv/linux/sparc/sparc32/pthread_barrier_wait.c: New
352         file.
353         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c: New file.
354         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c: New file.
355         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c: New file.
356         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c: New file.
357         * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c: New file.
358         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_init.c:
359         New file.
360         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/pthread_barrier_wait.c:
361         New file.
362         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c: New file.
363         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c: New file.
364         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c: New
365         file.
366         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_trywait.c: New
367         file.
368         * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c: New file.
369
370 2006-01-03  Ulrich Drepper  <drepper@redhat.com>
371
372         * sysdeps/pthread/pthread.h [__WORDSIZE==64]: Don't use cast in
373         mutex initializers.
374
375 2006-01-02  Jakub Jelinek  <jakub@redhat.com>
376
377         * sysdeps/sparc/tls.h (tcbhead_t): Add pointer_guard field.
378         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
379         THREAD_COPY_POINTER_GUARD): Define.
380         * sysdeps/sparc/tcb-offsets.sym (POINTER_GUARD): Define.
381         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Revert 2005-12-27 changes.
382
383 2006-01-01  Ulrich Drepper  <drepper@redhat.com>
384
385         * version.c: Update copyright year.
386
387 2005-12-29  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
388
389         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Remove explicit
390         .eh_frame section, use cfi_* directives.
391         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Add cfi instrumentation.
392
393 2005-12-30  Ulrich Drepper  <drepper@redhat.com>
394
395         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Undo last change for
396         now.
397
398 2005-12-29  Ulrich Drepper  <drepper@redhat.com>
399
400         * sysdeps/pthread/sigaction.c: Removed.
401         * sigaction.c: New file.
402         * sysdeps/unix/sysv/linux/Makefile: Define CFLAGS-sigaction.c.
403
404 2005-12-28  Ulrich Drepper  <drepper@redhat.com>
405
406         * Makefile (tests): Add tst-signal7.
407         * tst-signal7.c: New file.
408
409 2005-12-27  Roland McGrath  <roland@redhat.com>
410
411         * sysdeps/x86_64/jmpbuf-unwind.h (_jmpbuf_sp): New inline function.
412         (_JMPBUF_UNWINDS_ADJ): Use it, to PTR_DEMANGLE before comparison.
413         * sysdeps/alpha/jmpbuf-unwind.h: Likewise.
414         * sysdeps/i386/jmpbuf-unwind.h: Likewise.
415         * sysdeps/mips/jmpbuf-unwind.h: Likewise.
416         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
417         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
418         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
419         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
420         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: Likewise.
421         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
422
423 2005-12-27  Jakub Jelinek  <jakub@redhat.com>
424
425         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Add __next
426         and __prev field to pthread_mutex_t.
427         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
428         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
429         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
430         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
431         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Add __next field
432         to pthread_mutex_t.
433
434 2005-12-26  Ulrich Drepper  <drepper@redhat.com>
435
436         * pthreadP.h: Define PTHREAD_MUTEX_ROBUST_PRIVATE_NP,
437         PTHREAD_MUTEX_ROBUST_PRIVATE_RECURSIVE_NP,
438         PTHREAD_MUTEX_ROBUST_PRIVATE_ERRORCHECK_NP,
439         PTHREAD_MUTEX_ROBUST_PRIVATE_ADAPTIVE_NP,
440         PTHREAD_MUTEXATTR_FLAG_ROBUST, PTHREAD_MUTEXATTR_FLAG_PSHARED,
441         and PTHREAD_MUTEXATTR_FLAG_BITS.
442         * descr.h (struct pthread): Add robust_list field and define
443         ENQUEUE_MUTEX and DEQUEUE_MUTEX macros.
444         * pthread_mutexattr_getrobust.c: New file.
445         * pthread_mutexattr_setrobust.c: New file.
446         * pthread_mutex_consistent.c: New file.
447         * sysdeps/pthread/pthread.h: Declare pthread_mutexattr_getrobust,
448         pthread_mutexattr_setrobust, and pthread_mutex_consistent.
449         Define PTHREAD_MUTEX_STALLED_NP and PTHREAD_MUTEX_ROBUST_NP.
450         Adjust pthread_mutex_t initializers.
451         * nptl/sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Add __next
452         field to pthread_mutex_t.
453         * nptl/sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Add __next
454         and __prev field to pthread_mutex_t.
455         * Versions [GLIBC_2.4]: Export pthread_mutexattr_getrobust_np,
456         pthread_mutexattr_setrobust_np, and pthread_mutex_consistent_np.
457         * pthread_mutexattr_getpshared.c: Use PTHREAD_MUTEXATTR_FLAG_PSHARED
458         and PTHREAD_MUTEXATTR_FLAG_BITS macros instead of magic numbers.
459         * pthread_mutexattr_gettype.c: Likewise.
460         * pthread_mutexattr_setpshared.c: Likewise.
461         * pthread_mutexattr_settype.c: Likewise.
462         * pthread_mutex_init.c: Reject robust+pshared attribute for now.
463         Initialize mutex kind according to robust flag.
464         * pthread_mutex_lock.c: Implement local robust mutex.
465         * pthread_mutex_timedlock.c: Likewise.
466         * pthread_mutex_trylock.c: Likewise.
467         * pthread_mutex_unlock.c: Likewise.
468         * pthread_create.c (start_thread): Mark robust mutexes which remained
469         locked as dead.
470         * tst-robust1.c: New file.
471         * tst-robust2.c: New file.
472         * tst-robust3.c: New file.
473         * tst-robust4.c: New file.
474         * tst-robust5.c: New file.
475         * tst-robust6.c: New file.
476         * tst-robust7.c: New file.
477         * Makefile (libpthread-routines): Add pthread_mutexattr_getrobust,
478         pthread_mutexattr_setrobust, and pthread_mutex_consistent.
479         (tests): Add tst-robust1, tst-robust2, tst-robust3, tst-robust4,
480         tst-robust5, tst-robust6, and tst-robust7.
481
482         * tst-typesizes.c: New file.
483         * Makefile (tests): Add tst-typesizes.
484
485         * tst-once3.c: More debug output.
486
487 2005-12-24  Ulrich Drepper  <drepper@redhat.com>
488
489         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Add break
490         missing after last change.
491
492         * version.c: Update copyright year.
493
494 2005-12-23  Ulrich Drepper  <drepper@redhat.com>
495
496         * pthread_mutex_destroy.c: Set mutex type to an invalid value.
497         * pthread_mutex_lock.c: Return EINVAL for invalid mutex type.
498         * pthread_mutex_trylock.c: Likewise.
499         * pthread_mutex_timedlock.c: Likewise.
500         * pthread_mutex_unlock.c: Likewise.
501
502 2005-12-22  Roland McGrath  <roland@redhat.com>
503
504         * sysdeps/pthread/sigaction.c: Use "" instead of <> to include self,
505         so that #include_next's search location is not reset to the -I..
506         directory where <nptl/...> can be found.
507
508 2005-12-22  Ulrich Drepper  <drepper@redhat.com>
509
510         [BZ #1913]
511         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
512         Fix unwind info.  Remove useless branch prediction prefix.
513         * tst-cancel24.cc: New file.
514         * Makefile: Add rules to build and run tst-cancel24.
515
516 2005-12-21  Roland McGrath  <roland@redhat.com>
517
518         * libc-cancellation.c: Use <> rather than "" #includes.
519         * pt-cleanup.c: Likewise.
520         * pthread_create.c: Likewise.
521         * pthread_join.c: Likewise.
522         * pthread_timedjoin.c: Likewise.
523         * pthread_tryjoin.c: Likewise.
524         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Likewise.
525         * sysdeps/unix/sysv/linux/register-atfork.c: Likewise.
526         * sysdeps/unix/sysv/linux/unregister-atfork.c: Likewise.
527         * unwind.c: Likewise.
528
529 2005-12-19  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
530
531         * sysdeps/sh/tcb-offsets.sym: Add POINTER_GUARD.
532         * sysdeps/sh/tls.h (tcbhead_t): Remove private and add pointer_guard.
533         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
534         THREAD_COPY_POINTER_GUARD): Define.
535
536 2005-12-19  Jakub Jelinek  <jakub@redhat.com>
537
538         * sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): Make room for 2 uintptr_t's
539         rather than one.
540         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
541         THREAD_COPY_POINTER_GUARD): Define.
542         * sysdeps/powerpc/tcb-offsets.sym (POINTER_GUARD): Add.
543         * sysdeps/powerpc/tls.h (tcbhead_t): Add pointer_guard field.
544         (THREAD_GET_POINTER_GUARD, THREAD_SET_POINTER_GUARD,
545         THREAD_COPY_POINTER_GUARD): Define.
546         * sysdeps/s390/tcb-offsets.sym (STACK_GUARD): Add.
547         * sysdeps/s390/tls.h (THREAD_GET_POINTER_GUARD,
548         THREAD_SET_POINTER_GUARD, THREAD_COPY_POINTER_GUARD): Define.
549         * sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S (__ia64_longjmp):
550         Use PTR_DEMANGLE for B0 if defined.
551
552 2005-12-17  Ulrich Drepper  <drepper@redhat.com>
553
554         * pthread_create.c (__pthread_create_2_1): Use
555         THREAD_COPY_POINTER_GUARD if available.
556         * sysdeps/i386/tcb-offsets.sym: Add POINTER_GUARD.
557         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
558         * sysdeps/i386/tls.h (tcbhead_t): Add pointer_guard.
559         Define THREAD_SET_POINTER_GUARD and THREAD_COPY_POINTER_GUARD.
560         * sysdeps/x86_64/tls.h: Likewise.
561
562 2005-12-15  Roland McGrath  <roland@redhat.com>
563
564         * sysdeps/unix/sysv/linux/mq_notify.c: Don't use sysdeps/generic.
565
566 2005-12-13  Ulrich Drepper  <drepper@redhat.com>
567
568         * sysdeps/pthread/sigfillset.c: Adjust for files moved out of
569         sysdeps/generic.
570         * errno-loc.c: New file.
571
572 2005-12-12  Roland McGrath  <roland@redhat.com>
573
574         * init.c (__pthread_initialize_minimal_internal): Do __static_tls_size
575         adjustments before choosing stack size.  Update minimum stack size
576         calculation to match allocate_stack change.
577
578 2005-12-12  Ulrich Drepper  <drepper@redhat.com>
579
580         * allocatestack.c (allocate_stack): Don't demand that there is an
581         additional full page available on the stack beside guard, TLS, the
582         minimum stack.
583
584 2005-11-24  Ulrich Drepper  <drepper@redhat.com>
585
586         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
587         (__cleanup_fct_attribute): Use __regparm__ not regparm.
588
589         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: When
590         compiling 32-bit code we must define __cleanup_fct_attribute.
591
592 005-11-24  Jakub Jelinek  <jakub@redhat.com>
593
594         [BZ #1920]
595         * sysdeps/pthread/pthread.h (__pthread_unwind_next): Use
596         __attribute__ instead of __attribute.
597         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h
598         (__cleanup_fct_attribute): Likewise.
599
600 2005-11-17  Jakub Jelinek  <jakub@redhat.com>
601
602         * sysdeps/pthread/unwind-forcedunwind.c (pthread_cancel_init): Put
603         a write barrier before writing libgcc_s_getcfa.
604
605 2005-11-06  Ulrich Drepper  <drepper@redhat.com>
606
607         * sysdeps/unix/sysv/linux/configure: Removed.
608
609 2005-11-05  Ulrich Drepper  <drepper@redhat.com>
610
611         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Remove trace of
612         optional init_array/fini_array support.
613
614 2005-10-24  Roland McGrath  <roland@redhat.com>
615
616         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Remove unnecessary
617         versioned_symbol use.
618
619 2005-10-16  Roland McGrath  <roland@redhat.com>
620
621         * init.c (__pthread_initialize_minimal_internal): Even when using a
622         compile-time default stack size, apply the minimum that allocate_stack
623         will require, and round up to page size.
624
625 2005-10-10  Daniel Jacobowitz  <dan@codesourcery.com>
626
627         * Makefile ($(test-modules)): Remove static pattern rule.
628
629 2005-10-14  Jakub Jelinek  <jakub@redhat.com>
630             Ulrich Drepper  <drepper@redhat.com>
631
632         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Fix stack
633         alignment in callback function.
634         * Makefile: Add rules to build and run tst-align3.
635         * tst-align3.c: New file.
636
637 2005-10-03  Jakub Jelinek  <jakub@redhat.com>
638
639         * allocatestack.c (setxid_signal_thread): Add
640         INTERNAL_SYSCALL_DECL (err).
641
642 2005-10-02  Jakub Jelinek  <jakub@redhat.com>
643
644         * allocatestack.c (setxid_signal_thread): Need to use
645         atomic_compare_and_exchange_bool_acq.
646
647 2005-10-01  Ulrich Drepper  <drepper@redhat.com>
648             Jakub Jelinek  <jakub@redhat.com>
649
650         * descr.h: Define SETXID_BIT and SETXID_BITMASK.  Adjust
651         CANCEL_RESTMASK.
652         (struct pthread): Move specific_used field to avoid padding.
653         Add setxid_futex field.
654         * init.c (sighandler_setxid): Reset setxid flag and release the
655         setxid futex.
656         * allocatestack.c (setxid_signal_thread): New function.  Broken
657         out of the bodies of the two loops in __nptl_setxid.  For undetached
658         threads check whether they are exiting and if yes, don't send a signal.
659         (__nptl_setxid): Simplify loops by using setxid_signal_thread.
660         * pthread_create.c (start_thread): For undetached threads, check
661         whether setxid bit is set.  If yes, wait until signal has been
662         processed.
663
664         * allocatestack.c (STACK_VARIABLES): Initialize them.
665         * pthread_create.c (__pthread_create_2_1): Initialize pd.
666
667 2004-09-02  Jakub Jelinek  <jakub@redhat.com>
668
669         * pthread_cond_destroy.c (__pthread_cond_destroy): If there are
670         waiters, awake all waiters on the associated mutex.
671
672 2005-09-22  Roland McGrath  <roland@redhat.com>
673
674         * perf.c [__x86_64__] (HP_TIMING_NOW): New macro (copied from
675         ../sysdeps/x86_64/hp-timing.h).
676
677 2005-08-29  Jakub Jelinek  <jakub@redhat.com>
678
679         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_WAKE_OP,
680         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
681         (lll_futex_wake_unlock): Define.
682         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (FUTEX_WAKE_OP,
683         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
684         (lll_futex_wake_unlock): Define.
685         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (FUTEX_WAKE_OP,
686         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
687         (lll_futex_wake_unlock): Define.
688         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_WAKE_OP,
689         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
690         (lll_futex_wake_unlock): Define.
691         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (FUTEX_WAKE_OP,
692         FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
693         (lll_futex_wake_unlock): Define.
694         * sysdeps/pthread/pthread_cond_signal.c (__pthread_cond_signal): Use
695         lll_futex_wake_unlock.
696         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
697         (FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
698         (__pthread_cond_signal): Use FUTEX_WAKE_OP.
699         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
700         (FUTEX_WAKE_OP, FUTEX_OP_CLEAR_WAKE_IF_GT_ONE): Define.
701         (__pthread_cond_signal): Use FUTEX_WAKE_OP.
702
703 2005-09-05  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
704
705         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_mutex_lock_wait):
706         Fix typo in register name.
707
708 2005-08-23  Ulrich Drepper  <drepper@redhat.com>
709
710         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
711         Use __sigfillset.  Document that sigfillset does the right thing wrt
712         to SIGSETXID.
713
714 2005-07-11  Jakub Jelinek  <jakub@redhat.com>
715
716         [BZ #1102]
717         * sysdeps/pthread/pthread.h (PTHREAD_MUTEX_INITIALIZER,
718         PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
719         PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP,
720         PTHREAD_MUTEX_ADAPTIVE_NP, PTHREAD_RWLOCK_INITIALIZER,
721         PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP,
722         PTHREAD_COND_INITIALIZER): Supply zeros for all fields
723         in the structure.
724         * Makefile (tests): Add tst-initializers1.
725         (CFLAGS-tst-initializers1.c): Set.
726         * tst-initializers1.c: New test.
727
728 2005-07-11  Jakub Jelinek  <jakub@redhat.com>
729
730         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_rwlock_t):
731         Make sure __flags are located at offset 48 from the start of the
732         structure.
733
734 2005-07-02  Roland McGrath  <roland@redhat.com>
735
736         * Makeconfig: Comment fix.
737
738 2005-07-05  Jakub Jelinek  <jakub@redhat.com>
739
740         * descr.h (PTHREAD_STRUCT_END_PADDING): Define.
741         * sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): If PTHREAD_STRUCT_END_PADDING
742         is smaller than 8 bytes, increase TLS_PRE_TCB_SIZE by 16 bytes.
743         (THREAD_SYSINFO, THREAD_SELF, DB_THREAD_SELF): Don't assume
744         TLS_PRE_TCB_SIZE is sizeof (struct pthread).
745         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
746         * sysdeps/ia64/tcb-offsets.sym (PID, TID, MULTIPLE_THREADS_OFFSET):
747         Use TLS_PRE_TCB_SIZE instead of sizeof (struct pthread).
748         * sysdeps/unix/sysv/linux/ia64/createthread.c (TLS_VALUE): Don't
749         assume TLS_PRE_TCB_SIZE is sizeof (struct pthread).
750
751 2005-06-25  Jakub Jelinek  <jakub@redhat.com>
752
753         * sysdeps/i386/tls.h (tcbhead_t): Add stack_guard field.
754         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
755         * sysdeps/x86_64/tls.h (tcbhead_t): Add sysinfo and stack_guard
756         fields.
757         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
758         * sysdeps/s390/tls.h (tcbhead_t): Add stack_guard
759         field.  Put in sysinfo field unconditionally.
760         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
761         * sysdeps/powerpc/tls.h (tcbhead_t): Add stack_guard field.
762         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
763         * sysdeps/sparc/tls.h (tcbhead_t): Add sysinfo and stack_guard
764         fields.
765         (THREAD_SET_STACK_GUARD, THREAD_COPY_STACK_GUARD): Define.
766         * pthread_create.c (__pthread_create_2_1): Use
767         THREAD_COPY_STACK_GUARD macro.
768         * Makefile: Add rules to build and run tst-stackguard1{,-static}
769         tests.
770         * tst-stackguard1.c: New file.
771         * tst-stackguard1-static.c: New file.
772
773 2005-06-14  Alan Modra  <amodra@bigpond.net.au>
774
775         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
776         Invoke CGOTSETUP and CGOTRESTORE.
777         (CGOTSETUP, CGOTRESTORE): Define.
778
779 2005-05-29  Richard Henderson  <rth@redhat.com>
780
781         * tst-cancel4.c (WRITE_BUFFER_SIZE): New.
782         (tf_write, tf_writev): Use it.
783         (do_test): Use socketpair instead of pipe.  Set SO_SNDBUF to
784         the system minimum.
785
786 2005-05-23  Jakub Jelinek  <jakub@redhat.com>
787
788         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
789         [IS_IN_librt] (CENABLE, CDISABLE): Use JUMPTARGET instead of
790         __librt_*_asynccancel@local.
791
792 2005-05-17  Alan Modra  <amodra@bigpond.net.au>
793
794         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Delete
795         all occurrences of JUMPTARGET.  Instead append @local to labels.
796
797 2005-05-20  Jakub Jelinek  <jakub@redhat.com>
798
799         * sysdeps/i386/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN): Define to
800         size/alignment of struct pthread rather than tcbhead_t.
801         * sysdeps/x86_64/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
802         Likewise.
803         * sysdeps/s390/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
804         Likewise.
805         * sysdeps/sparc/tls.h (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN):
806         Likewise.
807
808 2005-05-19  Richard Henderson  <rth@redhat.com>
809
810         * sysdeps/ia64/pthread_spin_lock.c (pthread_spin_lock): Use
811         __sync_val_compare_and_swap, not explicit _si variant.
812         * sysdeps/ia64/pthread_spin_trylock.c (pthread_spin_trylock): Likewise.
813
814 2005-05-03  Ulrich Drepper  <drepper@redhat.com>
815
816         [BZ #915]
817         * sysdeps/pthread/pthread.h: Avoid empty initializers.
818
819 2005-05-03  Jakub Jelinek  <jakub@redhat.com>
820
821         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Remove explicit
822         .eh_frame section, use cfi_* directives.
823
824 2005-04-27  Jakub Jelinek  <jakub@redhat.com>
825
826         * sysdeps/unix/sysv/linux/pthread_getcpuclockid.c: Use <> instead
827         of "" includes.
828
829 2005-04-27  Ulrich Drepper  <drepper@redhat.com>
830
831         [BZ #1075]
832         * tst-cancel17.c (do_test): Add arbitrary factor to make sure
833         aio_write blocks.
834
835 2005-04-27  Roland McGrath  <roland@redhat.com>
836
837         * Makefile (tests): Remove tst-clock2.
838
839         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Handle
840         CLOCK_PROCESS_CPUTIME_ID and CLOCK_PROCESS_THREAD_ID specially,
841         translating to the kernel clockid_t for our own process/thread clock.
842
843         * sysdeps/unix/sysv/linux/pthread_getcpuclockid.c: New file.
844
845 2005-04-15  Jakub Jelinek  <jakub@redhat.com>
846
847         * old_pthread_cond_init.c: Include <errno.h>.
848         (__pthread_cond_init_2_0): Fail with EINVAL if COND_ATTR is
849         process shared or uses clock other than CLOCK_REALTIME.
850         * pthread_cond_init.c (__pthread_cond_init): Remove bogus comment.
851
852 2005-04-13  David S. Miller  <davem@davemloft.net>
853
854         * sysdeps/sparc/sparc64/jmpbuf-unwind.h: New file.
855         * sysdeps/sparc/sparc64/clone.S: New file.
856
857 2005-04-05  Jakub Jelinek  <jakub@redhat.com>
858
859         [BZ #1102]
860         * sysdeps/pthread/pthread.h (__pthread_cleanup_routine): Use
861         __inline instead of inline.
862         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_routine): Likewise.
863
864 2005-03-31  Jakub Jelinek  <jakub@redhat.com>
865
866         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Use
867         functionally equivalent, but shorter instructions.
868         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
869         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
870         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
871         Likewise.
872         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Likewise.
873         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
874         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
875         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
876         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
877         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
878         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
879         Likewise.
880         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
881         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
882         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
883         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
884         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
885
886 2005-03-28  Daniel Jacobowitz  <dan@codesourcery.com>
887
888         * sysdeps/mips/Makefile: New file.
889         * sysdeps/mips/nptl-sysdep.S: New file.
890         * sysdeps/mips/tcb-offsets.sym: New file.
891         * sysdeps/mips/pthread_spin_lock.S: New file.
892         * sysdeps/mips/pthread_spin_trylock.S: New file.
893         * sysdeps/mips/pthreaddef.h: New file.
894         * sysdeps/mips/tls.h: New file.
895         * sysdeps/mips/jmpbuf-unwind.h: New file.
896         * sysdeps/unix/sysv/linux/mips/lowlevellock.h: New file.
897         * sysdeps/unix/sysv/linux/mips/bits/pthreadtypes.h: New file.
898         * sysdeps/unix/sysv/linux/mips/bits/semaphore.h: New file.
899         * sysdeps/unix/sysv/linux/mips/pthread_once.c: New file.
900         * sysdeps/unix/sysv/linux/mips/fork.c: New file.
901         * sysdeps/unix/sysv/linux/mips/pt-vfork.S: New file.
902         * sysdeps/unix/sysv/linux/mips/vfork.S: New file.
903         * sysdeps/unix/sysv/linux/mips/clone.S: New file.
904         * sysdeps/unix/sysv/linux/mips/createthread.c: New file.
905         * sysdeps/unix/sysv/linux/mips/sysdep-cancel.h: New file.
906
907 2005-03-23  Ulrich Drepper  <drepper@redhat.com>
908
909         [BZ #1112]
910         * pthread_create.c (__pthread_create_2_1): Rename syscall error
911         variable to scerr.
912
913 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
914
915         * tst-getpid1.c (do_test): Align stack passed to clone{2,}.
916
917 2005-02-25  Roland McGrath  <roland@redhat.com>
918
919         * alloca_cutoff.c: Correct license text.
920         * tst-unload.c: Likewise.
921         * sysdeps/pthread/allocalim.h: Likewise.
922         * sysdeps/pthread/pt-initfini.c: Likewise.
923         * sysdeps/pthread/bits/libc-lock.h: Likewise.
924         * sysdeps/pthread/bits/sigthread.h: Likewise.
925         * sysdeps/unix/sysv/linux/bits/local_lim.h: Likewise.
926         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
927
928 2005-02-16  Roland McGrath  <roland@redhat.com>
929
930         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
931         Use unsigned int * for ptr_nthreads.
932
933 2005-02-14  Alan Modra  <amodra@bigpond.net.au>
934
935         [BZ #721]
936         * sysdeps/powerpc/tcb-offsets.sym (thread_offsetof): Redefine to suit
937         gcc4.
938
939 2005-02-07  Richard Henderson  <rth@redhat.com>
940
941         [BZ #787]
942         * sysdeps/pthread/pthread.h (__sigsetjmp): Use pointer as first
943         argument.
944
945 2004-11-03  Marcus Brinkmann  <marcus@gnu.org>
946
947         * sysdeps/generic/lowlevellock.h (__generic_mutex_unlock): Fix
948         order of arguments in invocation of atomic_add_zero.
949
950 2005-01-26  Jakub Jelinek  <jakub@redhat.com>
951
952         [BZ #737]
953         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S (__new_sem_trywait):
954         Use direct %gs segment access or, if NO_TLS_DIRECT_SEG_REFS,
955         at least gotntpoff relocation and addition.
956         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
957         Likewise.
958         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
959         Likewise.
960         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
961         Likewise.
962
963 2005-01-06  Ulrich Drepper  <drepper@redhat.com>
964
965         * allocatestack.c (init_one_static_tls): Adjust initialization of DTV
966         entry for static tls deallocation fix.
967         * sysdeps/alpha/tls.h (dtv_t): Change pointer type to be struct which
968         also contains information whether the memory pointed to is static
969         TLS or not.
970         * sysdeps/i386/tls.h: Likewise.
971         * sysdeps/ia64/tls.h: Likewise.
972         * sysdeps/powerpc/tls.h: Likewise.
973         * sysdeps/s390/tls.h: Likewise.
974         * sysdeps/sh/tls.h: Likewise.
975         * sysdeps/sparc/tls.h: Likewise.
976         * sysdeps/x86_64/tls.h: Likewise.
977
978 2004-12-27  Ulrich Drepper  <drepper@redhat.com>
979
980         * init.c (__pthread_initialize_minimal_internal): Use __sigemptyset.
981
982 2004-12-21  Jakub Jelinek  <jakub@redhat.com>
983
984         * sysdeps/i386/tls.h (CALL_THREAD_FCT): Maintain 16 byte alignment of
985         %esp.
986         * Makefile (tests): Add tst-align2.
987         * tst-align2.c: New test.
988         * sysdeps/i386/Makefile (CFLAGS-tst-align{,2}.c): Add
989         -mpreferred-stack-boundary=4.
990
991 2004-12-18  Roland McGrath  <roland@redhat.com>
992
993         * sysdeps/unix/sysv/linux/powerpc/powerpc64/bits/local_lim.h:
994         New file removed withdrawn for the moment.
995
996 2004-12-17  Richard Henderson  <rth@redhat.com>
997
998         * sysdeps/unix/sysv/linux/alpha/clone.S: New file.
999         * sysdeps/alpha/tcb-offsets.sym (TID_OFFSET): New.
1000
1001 2004-12-16  Ulrich Drepper  <drepper@redhat.com>
1002
1003         * sysdeps/unix/sysv/linux/powerpc/powerpc64/bits/local_lim.h: New file.
1004         Increased PTHREAD_STACK_MIN.
1005
1006         * tst-context1.c (stacks): Use bigger stack size.
1007
1008 2004-12-16  Jakub Jelinek  <jakub@redhat.com>
1009
1010         * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: New file.
1011         * sysdeps/sparc/tcb-offsets.sym: Add TID.
1012
1013 2004-12-15  Jakub Jelinek  <jakub@redhat.com>
1014
1015         * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: New file.
1016         * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: New file.
1017         * sysdeps/s390/tcb-offsets.sym (TID): Add.
1018
1019 2004-12-15  Ulrich Drepper  <drepper@redhat.com>
1020
1021         * sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S: New file.
1022
1023 2004-12-14  Ulrich Drepper  <drepper@redhat.com>
1024
1025         * sysdeps/powerpc/tcb-offsets.sym: Add TID.
1026         * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: New file.
1027
1028         * tst-getpid1.c: If child crashes, report this first.  Print which
1029         signal.
1030
1031 2004-12-09  Ulrich Drepper  <drepper@redhat.com>
1032
1033         * init.c (__pthread_initialize_minimal_internal): Also unblock
1034         SIGSETXID.
1035
1036 2004-12-01  Jakub Jelinek  <jakub@redhat.com>
1037
1038         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_CPUTIME,
1039         _POSIX_THREAD_CPUTIME): Define to 0.
1040         * sysdeps/pthread/timer_create.c (timer_create): Remove unused code
1041         handling CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID.
1042         * sysdeps/pthread/timer_routines.c (__timer_signal_thread_pclk,
1043         __timer_signal_thread_tclk): Remove.
1044         (init_module): Remove their initialization.
1045         (thread_cleanup): Remove their cleanup assertions.
1046         * sysdeps/pthread/posix-timer.h (__timer_signal_thread_pclk,
1047         __timer_signal_thread_tclk): Remove.
1048         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Removed.
1049         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Removed.
1050         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Removed.
1051
1052 2004-12-07  Jakub Jelinek  <jakub@redhat.com>
1053
1054         * sysdeps/ia64/tcb-offsets.sym (TID): Add.
1055         * sysdeps/unix/sysv/linux/ia64/clone2.S: New file.
1056
1057         * Makefile (tests): Add tst-getpid2.
1058         * tst-getpid1.c (TEST_CLONE_FLAGS): Define.
1059         (do_test): Use it.  Use __clone2 instead of clone on ia64.
1060         * tst-getpid2.c: New test.
1061
1062 2004-12-07  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1063
1064         * sysdeps/unix/sysv/linux/sh/clone.S: New file.
1065
1066 2004-12-04  Ulrich Drepper  <drepper@redhat.com>
1067
1068         * Makefile (tests): Add tst-getpid1.
1069         * tst-getpid1.c: New file.
1070         * sysdeps/unix/sysv/linux/i386/clone.S: New file.
1071         * sysdeps/unix/sysv/linux/x86_64/clone.S: New file.
1072
1073 2004-12-02  Roland McGrath  <roland@redhat.com>
1074
1075         * Makefile (libpthread-nonshared): Variable removed.
1076         ($(objpfx)libpthread_nonshared.a): Target removed.
1077         ($(inst_libdir)/libpthread_nonshared.a): Likewise.
1078         These are now handled by generic magic from
1079         libpthread-static-only-routines being set.
1080
1081 2004-11-27  Ulrich Drepper  <drepper@redhat.com>
1082
1083         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_PRIORITIZED_IO,
1084         _POSIX2_CHAR_TERM, _POSIX_THREAD_PRIO_INHERIT,
1085         _POSIX_THREAD_PRIO_PROTECT): Define.
1086         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
1087         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
1088         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
1089
1090 2004-11-26  Jakub Jelinek  <jakub@redhat.com>
1091
1092         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_ADVISORY_INFO,
1093         _POSIX_SPORADIC_SERVER, _POSIX_THREAD_SPORADIC_SERVER, _POSIX_TRACE,
1094         _POSIX_TRACE_EVENT_FILTER, _POSIX_TRACE_INHERIT, _POSIX_TRACE_LOG,
1095         _POSIX_TYPED_MEMORY_OBJECTS, _POSIX_IPV6, _POSIX_RAW_SOCKETS): Define.
1096         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
1097         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
1098         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
1099
1100 2004-11-24  Ulrich Drepper  <drepper@redhat.com>
1101
1102         * sysdeps/x86_64/Makefile [nptl]: Define CFLAGS-pthread_create.c.
1103
1104         * Makefile (libpthread-routines): Add pthread_setschedprio.
1105         * Versions [libpthread, GLIBC_2.3.4]: Add pthread_setschedprio.
1106         * sysdeps/pthread/pthread.h: Declare pthread_setschedprio.
1107         * pthread_setschedprio.c: New file.
1108
1109 2004-11-20  Jakub Jelinek  <jakub@redhat.com>
1110
1111         * pthread_create.c (pthread_cancel): Add PTHREAD_STATIC_FN_REQUIRE.
1112         * pthread_cancel.c (pthread_create): Likewise.
1113
1114         * Makefile (libpthread-routines): Add vars.
1115         * sysdeps/pthread/createthread.c (__pthread_multiple_threads): Remove.
1116         * init.c (__default_stacksize, __is_smp): Remove.
1117         * vars.c: New file.
1118         * pthreadP.h (__find_thread_by_id): If !SHARED, add weak_function
1119         and define a wrapper macro.
1120         (PTHREAD_STATIC_FN_REQUIRE): Define.
1121         * allocatestack.c (__find_thread_by_id): Undefine.
1122         * pthread_create (__pthread_keys): Remove.
1123         (pthread_mutex_lock, pthread_mutex_unlock, pthread_once,
1124         pthread_key_create, pthread_setspecific, pthread_getspecific): Add
1125         PTHREAD_STATIC_FN_REQUIRE.
1126
1127 2004-11-18  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1128
1129         * sysdeps/sh/tls.h (DB_THREAD_SELF): Set the correct bias
1130         parameter to REGISTER macro.
1131
1132 2004-11-17  Roland McGrath  <roland@redhat.com>
1133
1134         * sysdeps/unix/sysv/linux/timer_routines.c (__start_helper_thread):
1135         Make sure SIGCANCEL is blocked as well.
1136
1137 2004-11-10  Jakub Jelinek  <jakub@redhat.com>
1138
1139         * sysdeps/pthread/setxid.h: New file.
1140         * sysdeps/pthread/pthread-functions.h (HAVE_PTR__NPTL_SETXID): Remove.
1141         (struct xid_command): Add forward decl.
1142         (struct pthread_functions): Change return type of __nptl_setxid hook
1143         to int.
1144         * pthreadP.h (__nptl_setxid): Change return type to int.
1145         * allocatestack.c (__nptl_setxid): Call INTERNAL_SYSCALL_NCS in the
1146         calling thread, return its return value and set errno on failure.
1147         * descr.h (struct xid_command): Change id type to long array.
1148
1149         * Makefile: Add rules to build and test tst-setuid1 and
1150         tst-setuid1-static.
1151         * tst-setuid1.c: New test.
1152         * tst-setuid1-static.c: New test.
1153
1154 2004-11-10  Jakub Jelinek  <jakub@redhat.com>
1155
1156         * Makefile (tests): Add tst-exit3.
1157         * tst-exit3.c: New test.
1158
1159 2004-11-09  Ulrich Drepper  <drepper@redhat.com>
1160
1161         * Makefile (tests): Add tst-exit2.
1162         * tst-exit2.c: New file.
1163
1164 2004-11-09  Roland McGrath  <roland@redhat.com>
1165
1166         [BZ #530]
1167         * sysdeps/pthread/createthread.c (do_clone): Increment __nptl_nthreads
1168         here, before calling clone.
1169         * pthread_create.c (start_thread): Don't do it here.
1170
1171 2004-11-02  Jakub Jelinek  <jakub@redhat.com>
1172
1173         * sysdeps/unix/sysv/linux/smp.h: Include <errno.h>.
1174
1175 2004-10-29  Kaz  Kojima  <kkojima@rr.iij4u.or.jp>
1176
1177         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait):
1178         Set ETIMEDOUT to errno when time is up.  Tweak to avoid
1179         assembler warning.
1180
1181 2004-10-28  Jakub Jelinek  <jakub@redhat.com>
1182
1183         * pthread_create.c (__pthread_create_2_1): Avoid leaking stacks
1184         if sched_priority is not between minprio and maxprio.
1185
1186 2004-10-25  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1187
1188         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
1189         (__pthread_cond_timedwait): Use clock_gettime syscall if exists.
1190
1191         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
1192         (__lll_mutex_timedlock_wait): Fix a bad branch condition.
1193
1194 2004-10-24  Ulrich Drepper  <drepper@redhat.com>
1195
1196         * sysdeps/unix/sysv/linux/smp.h (is_smp_system): Use
1197         not-cancelable I/O functions.
1198
1199 2004-10-21  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1200
1201         * sysdeps/unix/sysv/linux/sh/lowlevellock.S
1202         (__lll_mutex_timedlock_wait): If woken but cannot get the lock,
1203         make sure 2 is stored in the futex and we looked at the old value.
1204         Fix a few other problems to return the correct value.
1205
1206 2004-10-14  Richard Henderson  <rth@redhat.com>
1207
1208         * sysdeps/alpha/tcb-offsets.sym (thread_offsetof): Redefine to
1209         make gcc4 happy.
1210
1211 2004-10-06  Jakub Jelinek  <jakub@redhat.com>
1212
1213         * sysdeps/unix/sysv/linux/jmp-unwind.c: Include pthreadP.h instead
1214         of pthread-functions.h and pthreaddef.h.
1215         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Likewise.
1216
1217         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
1218         Change __data.__nwaiters from int to unsigned int.
1219
1220         * tst-clock2.c (do_test): Don't fail if _POSIX_THREAD_CPUTIME == 0 and
1221         sysconf (_SC_THREAD_CPUTIME) returns negative value.
1222
1223         * allocatestack.c (__find_thread_by_id): Move attribute_hidden
1224         before return type.
1225
1226         * sysdeps/s390/jmpbuf-unwind.h: Include bits/wordsize.h.
1227         (JMPBUF_CFA_UNWINDS_ADJ): Subtract 96 resp. 160 bytes from CFA.
1228
1229 2004-10-06  Ulrich Drepper  <drepper@redhat.com>
1230
1231         * tst-cancel4.c (tf_msgrcv): Check for failure in msgget.  If the
1232         test fails, remove message queue.
1233         (tf_msgsnd): Likewise.
1234
1235 2004-10-05  Jakub Jelinek  <jakub@redhat.com>
1236
1237         * tst-clock1.c: Change #ifdef to #if defined.
1238         * tst-clock2.c: Likewise.
1239         * tst-cond11.c: Likewise.
1240
1241         * sysdeps/pthread/timer_create.c (timer_create): Use
1242         defined _POSIX_CPUTIME && _POSIX_CPUTIME >= 0 instead of
1243         defined CLOCK_PROCESS_CPUTIME_ID #ifs and similarly for
1244         THREAD_CPUTIME.
1245
1246 2004-10-05  Jakub Jelinek  <jakub@redhat.com>
1247
1248         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h (_POSIX_CPUTIME,
1249         _POSIX_THREAD_CPUTIME): Define to 0.
1250
1251 2004-10-04  Ulrich Drepper  <drepper@redhat.com>
1252
1253         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Define _POSIX_CPUTIME
1254         and _POSIX_THREAD_CPUTIME to zero.
1255         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Likewise.
1256         * tst-barrier2.c: Fix testing for POSIX feature.
1257         * tst-clock1.c: Likewise.
1258         * tst-clock2.c: Likewise.
1259         * tst-cond11.c: Likewise.
1260         * tst-cond4.c: Likewise.
1261         * tst-cond6.c: Likewise.
1262         * tst-flock2.c: Likewise.
1263         * tst-mutex4.c: Likewise.
1264         * tst-mutex9.c: Likewise.
1265         * tst-rwlock12.c: Likewise.
1266         * tst-rwlock4.c: Likewise.
1267         * tst-signal1.c: Likewise.
1268         * tst-spin2.c: Likewise.
1269         * sysdeps/pthread/posix-timer.h: Likewise.
1270         * sysdeps/pthread/timer_create.c: Likewise.
1271         * sysdeps/pthread/timer_routines.c: Likewise.
1272
1273 2004-10-01  Ulrich Drepper  <drepper@redhat.com>
1274
1275         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
1276         (__lll_mutex_timedlock_wait): Address futex correctly.
1277
1278         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
1279         (__lll_mutex_timedlock_wait): If woken but cannot get the lock,
1280         make sure 2 is stored in the futex and we looked at the old value.
1281         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
1282         (__lll_mutex_timedlock_wait): Likewise.  Fix a few other problems
1283         which might very well made the code not working at all before.
1284         [BZ #417]
1285
1286 2004-09-28  Ulrich Drepper  <drepper@redhat.com>
1287
1288         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): Don't
1289         allow SIGSETXID to be sent.
1290         * sysdeps/pthread/sigaction.c (__sigaction): Don't allow action
1291         for SIGSETXID to be defined.
1292         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Make sure
1293         SIGSETXID cannot be blocked.
1294
1295         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
1296         Add __extension__ to long long types.
1297         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
1298         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
1299         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
1300         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
1301         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Likewise.
1302         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
1303         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
1304
1305 2004-09-25  Ulrich Drepper  <drepper@redhat.com>
1306
1307         * descr.h (struct pthread): Add stopped_start field.
1308         * sysdeps/pthread/createthread.c (create_thread): Set
1309         start_stopped flag in descriptor for new thread appropriately.
1310         * pthread_create.c (start_thread): Only take lock to be stopped on
1311         startup if stopped_start flag says so.
1312
1313 2004-09-24  Ulrich Drepper  <drepper@redhat.com>
1314
1315         * pthread_create.c (__pthread_create_2_1): Remember whether thread
1316         is created detached and if yes, do not try to free the stack in case
1317         the thread creation failed.
1318         * sysdeps/pthread/createthread.c (do_clone): Free stack here if clone
1319         call fails.  Don't depend on INTERNAL_SYSCALL_ERRNO return zero in
1320         case there has been no error.  [BZ #405]
1321
1322         * pthread_create.c (start_thread): Don't wait for scheduler data
1323         etc to be set at the beginning of the function.  The cancellation
1324         infrastructure must have been set up.  And enable async
1325         cancellation before potentially going to sleep.  [BZ #401]
1326
1327 2004-09-20  Ulrich Drepper  <drepper@redhat.com>
1328
1329         * Versions: Remove exports for pthread_set*id_np functions.
1330         * sysdeps/pthread/pthread.h: Remove pthread_set*id_np prototypes
1331         for now.
1332         * Makefile: Don't build pthread_set*id code for now.
1333
1334 2004-09-19  Ulrich Drepper  <drepper@redhat.com>
1335
1336         * sysdeps/unix/sysv/linux/allocrtsig.c: Allocate second signal for
1337         internal use.
1338         * allocatestack.c (__nptl_setxid): New function.
1339         * descr.h (struct xid_command): Define type.
1340         * init.c (pthread_functions): Add ptr__nptl_setxid initialization.
1341         (sighandler_setxid): New function.
1342         (__pthread_initialize_minimal): Register sighandler_setxid for
1343         SIGCANCEL.
1344         * pt-allocrtsig.c: Update comment.
1345         * pthreadP.h: Define SIGSETXID.  Declare __xidcmd variable.
1346         Declare __nptl_setxid.
1347         * sysdeps/pthread/pthread-functions.h: Add ptr__nptl_setxid.
1348         * sysdeps/pthread/pthread.h: Declare pthread_setgid_np,
1349         pthread_setuid_np, pthread_setegid_np, pthread_seteuid_np,
1350         pthread_setregid_np, pthread_setreuid_np, pthread_setresgid_np,
1351         and pthread_setresuid_np.
1352         * pthread_setgid_np.c: New file.
1353         * pthread_setuid_np.c: New file.
1354         * pthread_setegid_np.c: New file.
1355         * pthread_seteuid_np.c: New file.
1356         * pthread_setregid_np.c: New file.
1357         * pthread_setreuid_np.c: New file.
1358         * pthread_setresgid_np.c: New file.
1359         * pthread_setresuid_np.c: New file.
1360         * Versions [libpthread, GLIBC_2.3.4]: Add pthread_setgid_np,
1361         pthread_setuid_np, pthread_setegid_np, pthread_seteuid_np,
1362         pthread_setregid_np, pthread_setreuid_np, pthread_setresgid_np,
1363         and pthread_setresuid_np.
1364         * Makefile (libpthread-routines): Add pthread_setuid, pthread_seteuid,
1365         pthread_setreuid, pthread_setresuid, pthread_setgid, pthread_setegid,
1366         pthread_setregid, and pthread_setresgid.
1367
1368 2004-09-18  Ulrich Drepper  <drepper@redhat.com>
1369
1370         * allocatestack.c (allocate_stack): Return EAGAIN instead of
1371         ENOMEM when out of memory.
1372
1373 2004-09-10  Roland McGrath  <roland@redhat.com>
1374
1375         [BZ #379]
1376         * allocatestack.c (allocate_stack): Remove [__ASSUME_CLONE_STOPPED]
1377         code, since we don't try to use the broken CLONE_STOPPED any more.
1378         * pthread_create.c (start_thread): Likewise.
1379
1380 2004-09-15  Richard Henderson  <rth@redhat.com>
1381
1382         * sysdeps/unix/sysv/linux/alpha/vfork.S: Use libc_hidden_def.
1383
1384 2004-09-01  David Mosberger  <davidm@hpl.hp.com>
1385
1386         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h
1387         (__libc_unwind_longjmp): Delete macro and declare as function.
1388         * sysdeps/unix/sysv/linux/ia64/Makefile (sysdep_routines): Mention
1389         __ia64_longjmp, sigstack_longjmp, and __sigstack_longjmp for
1390         nptl directory.
1391         * sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S: New file.
1392         * sysdeps/unix/sysv/linux/ia64/__sigstack_longjmp.c: New file.
1393         * sysdeps/unix/sysv/linux/ia64/unwind_longjmp.c: New file.
1394
1395 2004-09-12  Ulrich Drepper  <drepper@redhat.com>
1396
1397         * sysdeps/pthread/pthread.h: Make rwlock prototypes available also
1398         for __USE_XOPEN2K.
1399         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Define rwlock
1400         types also for __USE_XOPEN2K.
1401         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
1402         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
1403         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
1404         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
1405         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
1406         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
1407         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
1408         [BZ #320]
1409
1410 2004-09-08  Ulrich Drepper  <drepper@redhat.com>
1411
1412         * sysdeps/pthread/pthread.h
1413         (PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP): Make safe for C++.
1414         (PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP): Likewise.
1415         (PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP): Likewise.
1416         (PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP): Likewise.
1417         [BZ #375]
1418
1419 2004-09-07  Ulrich Drepper  <drepper@redhat.com>
1420
1421         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Allow
1422         PSEUDO to be used with . prefix.
1423
1424         * sysdeps/unix/sysv/linux/alpha/pthread_once.c (__pthread_once):
1425         Use atomic_increment instead of atomic_exchange_and_add.
1426         * sysdeps/unix/sysv/linux/sparc/pthread_once.c (__pthread_once):
1427         Likewise.
1428         * sysdeps/unix/sysv/linux/ia64/pthread_once.c (__pthread_once):
1429         Likewise.
1430         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
1431         Likewise.
1432
1433         * allocatestack.c (allocate_stack): Use atomic_increment_val
1434         instead of atomic_exchange_and_add.
1435         * sysdeps/unix/sysv/linux/sem_post.c (__new_sem_post): Likewise.
1436         * sysdeps/unix/sysv/linux/powerpc/sem_post.c (__new_sem_post):
1437         Likewise.
1438         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
1439         Likewise.
1440
1441         * sysdeps/pthread/pthread.h (pthread_once): Remove __THROW since
1442         the initialization function might throw.
1443
1444 2005-09-05  Richard Henderson  <rth@redhat.com>
1445
1446         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (SINGLE_THREAD_P):
1447         Move definition inside libpthread, libc, librt check.  Provide
1448         definition for rtld.
1449
1450 2004-09-02  Ulrich Drepper  <drepper@redhat.com>
1451
1452         * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp.
1453         * sysdeps/i386/jmpbuf-unwind.h: Likewise
1454         * sysdeps/powerpc/jmpbuf-unwind.h: Likewise.
1455         * sysdeps/s390/jmpbuf-unwind.h: Likewise.
1456         * sysdeps/sh/jmpbuf-unwind.h: Likewise.
1457         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: Likewise.
1458         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Likewise.
1459         * sysdeps/x86_64/jmpbuf-unwind.h: Likewise.
1460         * unwind.c: Use it.
1461
1462         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
1463         Rename __data.__clock to __data.__nwaiters, make it unsigned int.
1464         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
1465         Likewise.
1466         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
1467         Decrement __nwaiters.  If pthread_cond_destroy has been called and
1468         this is the last waiter, signal pthread_cond_destroy caller and
1469         avoid using the pthread_cond_t structure after unlock.
1470         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
1471         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
1472         Read clock type from the least significant bits of __nwaiters instead
1473         of __clock.
1474         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
1475         * sysdeps/unix/sysv/linux/internaltypes.h: Define COND_CLOCK_BITS.
1476
1477 2004-08-31  Jakub Jelinek  <jakub@redhat.com>
1478
1479         [BZ #342]
1480         * Makefile (tests): Add tst-cond20 and tst-cond21.
1481         * tst-cond20.c: New test.
1482         * tst-cond21.c: New test.
1483         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h
1484         (pthread_cond_t): Rename __data.__clock to __data.__nwaiters, make
1485         it unsigned int.
1486         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
1487         Likewise.
1488         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
1489         (pthread_cond_t): Likewise.
1490         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_cond_t):
1491         Likewise.
1492         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
1493         Likewise.
1494         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_cond_t):
1495         Likewise.
1496         * sysdeps/unix/sysv/linux/lowlevelcond.sym (cond_clock): Remove.
1497         (cond_nwaiters): New.
1498         (clock_bits): New.
1499         * pthread_cond_destroy.c (__pthread_cond_destroy): Return EBUSY
1500         if there are waiters not signalled yet.
1501         Wait until all already signalled waiters wake up.
1502         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Decrement
1503         __nwaiters.  If pthread_cond_destroy has been called and this is the
1504         last waiter, signal pthread_cond_destroy caller and avoid using
1505         the pthread_cond_t structure after unlock.
1506         (__pthread_cond_wait): Increment __nwaiters in the beginning,
1507         decrement it when leaving.  If pthread_cond_destroy has been called
1508         and this is the last waiter, signal pthread_cond_destroy caller.
1509         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
1510         Likewise.  Read clock type from the least significant bits of
1511         __nwaiters instead of __clock.
1512         * pthread_condattr_setclock.c (pthread_condattr_setclock): Check
1513         whether clock ID can be encoded in COND_CLOCK_BITS bits.
1514         * pthread_condattr_getclock.c (pthread_condattr_getclock): Decode
1515         clock type just from the last COND_CLOCK_BITS bits of value.
1516         * pthread_cond_init.c (__pthread_cond_init): Initialize __nwaiters
1517         instead of __clock, just from second bit of condattr's value.
1518
1519 2004-08-30  Jakub Jelinek  <jakub@redhat.com>
1520
1521         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Include
1522         bits/wordsize.h.  Make the header match i386 header when __WORDSIZE
1523         != 64.
1524         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
1525
1526 2004-08-15  Roland McGrath  <roland@frob.com>
1527
1528         * pthread_atfork.c: Update copyright terms including special exception
1529         for these trivial files, which are statically linked into executables
1530         that use dynamic linking for the significant library code.
1531
1532 2004-08-09  Jakub Jelinek  <jakub@redhat.com>
1533
1534         * DESIGN-rwlock.txt: Add decreasing of nr_readers_queued to
1535         pthread_rwlock_rdlock.
1536         * sysdeps/pthread/pthread_rwlock_rdlock (__pthread_rwlock_rdlock):
1537         Decrease __nr_readers_queued after reacquiring lock.
1538         * sysdeps/pthread/pthread_rwlock_timedrdlock
1539         (pthread_rwlock_timedrdlock): Likewise.
1540         Reported by Bob Cook <bobcook47@hotmail.com>.
1541
1542 2004-08-11  Jakub Jelinek  <jakub@redhat.com>
1543
1544         * tst-rwlock14.c (tf): Read main thread handle from *ARG
1545         before pthread_barrier_wait.
1546
1547 2004-08-07  Ulrich Drepper  <drepper@redhat.com>
1548
1549         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
1550         Remove unnecessary exception handling data.
1551
1552 2004-07-23  Jakub Jelinek  <jakub@redhat.com>
1553
1554         [BZ #284]
1555         * sysdeps/pthread/pthread.h (pthread_getcpuclockid): Use __clockid_t
1556         instead of clockid_t.
1557
1558 2004-07-21  Roland McGrath  <roland@redhat.com>
1559
1560         * Makefile ($(objpfx)multidir.mk): Use $(make-target-directory).
1561
1562 2004-07-19  Roland McGrath  <roland@redhat.com>
1563
1564         * tst-cancel4.c (tf_waitid): Use WEXITED flag bit if available.
1565
1566 2004-07-02  Roland McGrath  <roland@redhat.com>
1567
1568         * configure: Don't exit.
1569
1570 2004-07-14  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1571
1572         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
1573         (__pthread_cond_timedwait): Check for invalid nanosecond in
1574         timeout value.
1575
1576 2004-07-07  Ulrich Drepper  <drepper@redhat.com>
1577
1578         * Makefile: Add rules to build and run tst-fini1.
1579         * tst-fini1.c: New file.
1580         * tst-fini1mod.c: New file.
1581
1582 2004-07-05  Ulrich Drepper  <drepper@redhat.com>
1583
1584         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define NO_CANCELLATION
1585         if no cancellation support is needed.
1586         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
1587         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
1588         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
1589         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
1590         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
1591         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
1592         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
1593         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: Likewise.
1594         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: Likewise.
1595
1596         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Define __NR_futex
1597         only if not already defined.
1598
1599 2004-07-05  Jakub Jelinek  <jakub@redhat.com>
1600
1601         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_unlock): Use
1602         constraint "m" instead of "0" for futex.
1603
1604         * shlib-versions: Add powerpc64-.*-linux.*.
1605
1606 2004-07-04  Jakub Jelinek  <jakub@redhat.com>
1607
1608         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S
1609         (pthread_rwlock_timedrdlock): Use cmpq instead of cmpl to check
1610         for valid tv_nsec.
1611         * tst-rwlock14.c (do_test): Test for invalid tv_nsec equal to
1612         1 billion and 64-bit tv_nsec which is valid when truncated to 32
1613         bits.
1614
1615 2004-06-29  Roland McGrath  <roland@redhat.com>
1616
1617         * Banner: NPTL no longer has its own version number.
1618         * Makefile (nptl-version): Variable removed.
1619         * sysdeps/pthread/Makefile (CFLAGS-confstr.c): Set LIBPTHREAD_VERSION
1620         using $(version), the glibc version number.
1621
1622 2004-06-29  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1623
1624         * sysdeps/unix/sysv/linux/sh/pthread_once.S (__pthread_once):
1625         Fix branch offset for a PLT entry.
1626         * sysdeps/unix/sysv/linux/sh/sem_post.S (__new_sem_post):
1627         Likewise.
1628         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S (sem_timedwait):
1629         Likewise.
1630         * sysdeps/unix/sysv/linux/sh/sem_trywait.S (__new_sem_trywait):
1631         Likewise.
1632         * sysdeps/unix/sysv/linux/sh/sem_wait.S (__new_sem_wait):
1633         Likewise.
1634
1635 2004-06-28  Jakub Jelinek  <jakub@redhat.com>
1636
1637         * sysdeps/alpha/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Define
1638         unconditionally.
1639
1640 2004-06-28  Jakub Jelinek  <jakub@redhat.com>
1641
1642         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
1643         (pthread_rwlock_timedwrlock): Return EINVAL if tv_nsec is negative,
1644         instead of tv_sec.
1645         * sysdeps/pthread/pthread_rwlock_timedrdlock.c
1646         (pthread_rwlock_timedrdlock): Likewise.
1647
1648 2004-06-22  Jakub Jelinek  <jakub@redhat.com>
1649
1650         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue):
1651         Set __r7 to val, not mutex.
1652
1653 2004-06-27  Ulrich Drepper  <drepper@redhat.com>
1654
1655         * Makefile: Add rules to build tst-rwlock14.
1656         * tst-rwlock14.c: New file.
1657
1658 2004-06-24  Boris Hu  <boris.hu@intel.com>
1659
1660         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Add timeout validation
1661         check.
1662         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
1663
1664 2004-06-19  Andreas Jaeger  <aj@suse.de>
1665
1666         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Fix
1667         assembler in last patch.
1668
1669 2004-06-17  Ulrich Drepper  <drepper@redhat.com>
1670
1671         * sysdeps/pthread/pthread_cond_timedwait.c
1672         (__pthread_cond_timedwait): Also check for negativ nanoseconds.
1673         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
1674         (__pthread_cond_timedwait): Check for invalid nanosecond in
1675         timeout value.
1676         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
1677         * tst-cond19.c: New file.
1678         * Makefile: Add rules to build and run tst-cond19.
1679
1680 2004-06-15  Steven Munroe  <sjmunroe@us.ibm.com>
1681
1682         * tst-context1.c (GUARD_PATTERN): Defined.
1683         (tst_context_t): Define struct containing ucontext_t & guard words.
1684         (ctx): Declare as an array of tst_context_t.
1685         (fct): Verify uc_link & guard words are still valid.
1686         (tf): Initialize guard words in ctx.  Adjust ctx refs for new struct.
1687
1688 2004-06-13  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1689
1690         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
1691         Add __data.__futex field, reshuffle __data.__clock.
1692         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
1693         (__pthread_cond_signal): Increment __futex at the same time as
1694         __wakeup_seq or __total_seq.  Pass address of __futex instead of
1695         address of low 32-bits of __wakeup_seq to futex syscall.
1696         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
1697         (__pthread_cond_wait): Likewise.  Pass __futex value from before
1698         releasing internal lock to FUTEX_WAIT.
1699         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
1700         (__pthread_cond_timedwait): Likewise.
1701         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
1702         (FUTEX_CMP_REQUEUE): Define.
1703         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
1704         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
1705         Pass __futex value from before the unlock and __futex address instead
1706         of address of low 32-bits of __wakeup_seq to futex syscall.
1707         Fallback to FUTEX_WAKE all on any errors.
1708
1709 2004-06-08  Jakub Jelinek  <jakub@redhat.com>
1710
1711         * pthread_mutexattr_getpshared.c (pthread_mutex_getpshared): Fix
1712         comment typo.
1713         * pthread_mutexattr_gettype.c (pthread_mutexattr_gettype): Likewise.
1714         * pthread_mutexattr_init.c (__pthread_mutexattr_init): Likewise.
1715         * pthread_mutexattr_settype.c (__pthread_mutexattr_settype): Likewise.
1716         * pthread_mutexattr_setpshared.c (pthread_mutexattr_setpshared):
1717         Likewise.  Reported by Bob Cook <bobcook47@hotmail.com>.
1718
1719 2004-06-11  Martin Schwidefsky  <schwidefsky@de.ibm.com>
1720
1721         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_compare_and_swap):
1722         Add memory clobber to inline assembly.
1723         (__lll_mutex_trylock): Likewise.
1724         (__lll_mutex_cond_trylock): Likewise.
1725
1726 2004-06-07  Martin Schwidefsky  <schwidefsky@de.ibm.com>
1727
1728         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (lll_futex_requeue):
1729         Pass val argument as 6th system call argument in %r7.
1730
1731 2004-05-21  Jakub Jelinek  <jakub@redhat.com>
1732
1733         * Makefile (tests): Add tst-cond16.
1734         * sysdeps/unix/sysv/linux/lowlevelcond.sym (cond_futex): Add.
1735         * pthread_cond_init.c (__pthread_cond_init): Clear __data.__futex.
1736         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
1737         Add __data.__futex field, reshuffle __data.__clock.
1738         * sysdeps/unix/sysv/linux/i386/pthread_cond_signal.S
1739         (__pthread_cond_signal): Increment __futex at the same time as
1740         __wakeup_seq or __total_seq.  Pass address of __futex instead of
1741         address of low 32-bits of __wakeup_seq to futex syscall.
1742         * sysdeps/unix/sysv/linux/i386/pthread_cond_wait.S
1743         (__pthread_cond_wait): Likewise.  Pass __futex value from before
1744         releasing internal lock to FUTEX_WAIT.
1745         * sysdeps/unix/sysv/linux/i386/pthread_cond_timedwait.S
1746         (__pthread_cond_timedwait): Likewise.
1747         * sysdeps/unix/sysv/linux/i386/pthread_cond_broadcast.S
1748         (FUTEX_CMP_REQUEUE): Define.
1749         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
1750         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
1751         Pass __futex value from before the unlock and __futex address instead
1752         of address of low 32-bits of __wakeup_seq to futex syscall.
1753         Fallback to FUTEX_WAKE all on any errors.
1754         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (FUTEX_CMP_REQUEUE):
1755         Define.
1756         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
1757         internally.  Return non-zero if error, zero if success.
1758         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_cond_t):
1759         Add __data.__futex field, reshuffle __data.__clock.
1760         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_CMP_REQUEUE):
1761         Define.
1762         (lll_futex_requeue): Add val argument, return 1 unconditionally
1763         for the time being.
1764         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
1765         Add __data.__futex field, reshuffle __data.__clock.
1766         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_CMP_REQUEUE):
1767         Define.
1768         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
1769         internally.  Return non-zero if error, zero if success.
1770         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
1771         (pthread_cond_t): Add __data.__futex field, reshuffle __data.__clock.
1772         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (FUTEX_CMP_REQUEUE):
1773         Define.
1774         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
1775         internally.  Return non-zero if error, zero if success.
1776         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h (pthread_cond_t):
1777         Add __data.__futex field, reshuffle __data.__clock.
1778         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (FUTEX_CMP_REQUEUE):
1779         Define.
1780         (lll_futex_requeue): Add val argument, use FUTEX_CMP_REQUEUE
1781         internally.  Return non-zero if error, zero if success.
1782         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h (pthread_cond_t):
1783         Add __data.__futex field, reshuffle __data.__clock.
1784         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h (pthread_cond_t):
1785         Add __data.__futex field, reshuffle __data.__clock.
1786         * sysdeps/pthread/pthread_cond_signal.c (__pthread_cond_signal):
1787         Increment __futex at the same time as __wakeup_seq or __total_seq.
1788         Pass address of __futex instead of address of low 32-bits of
1789         __wakeup_seq to futex syscall.
1790         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
1791         Pass __futex value from before releasing internal lock
1792         to FUTEX_WAIT.
1793         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
1794         Likewise.  Avoid unnecessary shadowing of variables.
1795         * sysdeps/pthread/pthread_cond_broadcast.c (__pthread_cond_broadcast):
1796         Set __futex to 2 * __total_seq.  Pass __futex value from before the
1797         unlock and __futex address instead of address of low 32-bits of
1798         __wakeup_seq to futex_requeue macro, adjust for new return value
1799         meaning.
1800         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S
1801         (__pthread_cond_signal): Increment __futex at the same time as
1802         __wakeup_seq or __total_seq.  Pass address of __futex instead of
1803         address of low 32-bits of __wakeup_seq to futex syscall.
1804         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
1805         (__pthread_cond_wait): Likewise.  Pass __futex value from before
1806         releasing internal lock to FUTEX_WAIT.
1807         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
1808         (__pthread_cond_timedwait): Likewise.
1809         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
1810         (FUTEX_CMP_REQUEUE): Define.
1811         (__pthread_cond_broadcast): Set __futex to 2 * __total_seq.
1812         Use FUTEX_CMP_REQUEUE operation instead of FUTEX_REQUEUE.
1813         Pass __futex value from before the unlock and __futex address instead
1814         of address of low 32-bits of __wakeup_seq to futex syscall.
1815         Fallback to FUTEX_WAKE all on any errors.
1816
1817 2004-06-03  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1818
1819         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_mutex_lock):
1820         Add nop to align the end of critical section.
1821         (lll_mutex_cond_lock, lll_mutex_timedlock): Likewise.
1822
1823 2004-06-01  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1824
1825         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
1826         Add __broadcast_seq field.
1827         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Mark
1828         all waiters as woken with woken_seq and bump broadcast counter.
1829         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Use new
1830         __broadcast_seq.  Increment __woken_seq correctly when cleanuped.
1831         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
1832         Comment typo fixes.  Avoid returning -ETIMEDOUT.
1833
1834 2004-06-01  Ulrich Drepper  <drepper@redhat.com>
1835
1836         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
1837         (__condvar_tw_cleanup): Fix access to saved broadcast_seq value.
1838         Reported by Kaz Kojima.
1839
1840 2004-05-25  Jakub Jelinek  <jakub@redhat.com>
1841
1842         * sysdeps/unix/sysv/linux/aio_misc.h: New file.
1843
1844 2004-05-21  Jakub Jelinek  <jakub@redhat.com>
1845
1846         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Compare
1847         __broadcast_seq with bc_seq after acquiring internal lock instead of
1848         before it.
1849
1850 2004-05-18  Jakub Jelinek  <jakub@redhat.com>
1851
1852         * Makefile (.NOTPARALLEL): Only serialize make check/xcheck, not
1853         compilation.
1854         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
1855         (__pthread_cond_timedwait): Avoid returning -ETIMEDOUT.
1856         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
1857         (pthread_cond_t): Add __data.__broadcast_seq field.
1858         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
1859         (FRAME_SIZE): Define.
1860         (__pthread_cond_timedwait): Use it.  Store/check broadcast_seq.
1861         Comment typo fixes.
1862         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (FRAME_SIZE):
1863         Define.
1864         (__pthread_cond_wait): Use it.  Store/check broadcast_seq.  Comment
1865         typo fixes.
1866         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
1867         (__pthread_cond_broadcast): Increment broadcast_seq.  Comment typo
1868         fixes.
1869
1870 2004-05-18  Ulrich Drepper  <drepper@redhat.com>
1871
1872         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add broadcast_seq entry.
1873         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_cond_t):
1874         Add __broadcast_seq field.
1875         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
1876         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
1877         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
1878         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
1879         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
1880         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Mark
1881         all waiters as woken with woken_seq and bump broadcast counter.
1882         * sysdeps/pthread/pthread_cond_broadcast.c: Likewise.
1883         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use new
1884         __broadcast_seq field.
1885         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
1886         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
1887         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
1888         * pthread_cond_init.c: Initialize __broadcast_seq field.
1889         * Makefile (tests): Add tst-cond17 and tst-cond18.
1890         Add .NOTPARALLEL goal.
1891         * tst-cond16.c: New file.  From Jakub.
1892         * tst-cond17.c: New file.  From Jakub.
1893         * tst-cond18.c: New file.  From Jakub.
1894
1895 2004-05-16  Ulrich Drepper  <drepper@redhat.com>
1896
1897         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Correct some
1898         unwind info.
1899
1900         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S:
1901         Parametrize frame size.  Correct some unwind info.
1902         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
1903
1904 2004-05-04  Jakub Jelinek  <jakub@redhat.com>
1905
1906         * tst-stack3.c: Note testing functionality beyond POSIX.
1907
1908 2004-05-04  Jakub Jelinek  <jakub@redhat.com>
1909
1910         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (USE___THREAD):
1911         Change conditional from ifdef to if.
1912
1913 2004-04-23  Jakub Jelinek  <jakub@redhat.com>
1914
1915         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (SYSDEP_CANCEL_ERRNO,
1916         SYSDEP_CANCEL_ERROR): Define.
1917         (PSEUDO): Use it.
1918
1919 2004-05-01  Jakub Jelinek  <jakub@redhat.com>
1920
1921         * Versions (libpthread): Remove __pthread_cleanup_upto@@GLIBC_PRIVATE.
1922
1923 2004-04-20  Jakub Jelinek  <jakub@redhat.com>
1924
1925         * sem_unlink.c (sem_unlink): Change EPERM into EACCES.
1926
1927 2004-04-19  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1928
1929         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Add frame info.
1930         Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
1931         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Remove unneeded frame
1932         info.  Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
1933
1934 2004-04-19  Ulrich Drepper  <drepper@redhat.com>
1935
1936         * sysdeps/unix/sysv/linux/timer_routines.c: Make sure helper
1937         thread has all signals blocked.
1938
1939 2004-04-18  Andreas Jaeger  <aj@suse.de>
1940
1941         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h
1942         (SEM_VALUE_MAX): Add missing brace.
1943
1944 2004-04-17  Jakub Jelinek  <jakub@redhat.com>
1945
1946         * sysdeps/pthread/Makefile (tests): Add tst-mqueue8x
1947         in rt subdir.
1948         (CFLAGS-tst-mqueue8x.c): Add -fexceptions.
1949         * sysdeps/pthread/tst-mqueue8x.c: New test.
1950         * tst-cancel4.c: Update comment about message queues.
1951
1952         * sysdeps/pthread/timer_gettime.c (timer_gettime): For expired timer
1953         return it_value { 0, 0 }.
1954         * sysdeps/pthread/timer_create.c (timer_create): Handle SIGEV_NONE
1955         like SIGEV_SIGNAL.
1956         * sysdeps/pthread/timer_routines.c (thread_expire_timer): Remove
1957         assertion for SIGEV_NONE.
1958         (thread_attr_compare): Compare all attributes, not just a partial
1959         subset.
1960
1961 2004-04-17  Jakub Jelinek  <jakub@redhat.com>
1962
1963         * sysdeps/unix/sysv/linux/mq_notify.c: Include stdlib.h.
1964
1965 2004-04-17  Ulrich Drepper  <drepper@redhat.com>
1966
1967         * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h (SEM_VALUE_MAX):
1968         Just use a plain number.
1969         * sysdeps/unix/sysv/linux/i386/bits/semaphore.h: Likewise.
1970         * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: Likewise.
1971         * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: Likewise.
1972         * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: Likewise.
1973         * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: Likewise.
1974         * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: Likewise.
1975         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: Likewise.
1976
1977 2004-04-16  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
1978
1979         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Remove unneeded
1980         frame info.
1981         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
1982
1983 2004-04-15  Jakub Jelinek  <jakub@redhat.com>
1984
1985         * sysdeps/unix/sysv/linux/timer_routines.c: Include errno.h.
1986         (timer_helper_thread): Use inline rt_sigtimedwait syscall instead
1987         of calling sigwaitinfo.
1988
1989 2004-04-16  Ulrich Drepper  <drepper@redhat.com>
1990
1991         * allocatestack.c (allocate_stack): Set reported_guardsize
1992         unconditionally.
1993         * pthread_getattr_np.c (pthread_getattr_np): Use
1994         reported_guardsize instead of guardsize.
1995         * descr.h (struct pthread): Add reported_guardsize field.
1996
1997 2004-04-13  Jakub Jelinek  <jakub@redhat.com>
1998
1999         * sysdeps/unix/sysv/linux/mq_notify.c: Shut up GCC warning.
2000
2001 2004-04-12  Ulrich Drepper  <drepper@redhat.com>
2002
2003         * sysdeps/unix/sysv/linux/mq-notify.c: New file.
2004
2005 2004-04-08  Jakub Jelinek  <jakub@redhat.com>
2006
2007         * sysdeps/unix/sysv/linux/bits/local_lim.h (MQ_PRIO_MAX): Define.
2008         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h (MQ_PRIO_MAX): Define.
2009         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h (MQ_PRIO_MAX): Define.
2010         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h (MQ_PRIO_MAX): Define.
2011         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_MESSAGE_PASSING):
2012         Define.
2013         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h
2014         (_POSIX_MESSAGE_PASSING): Define.
2015         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h
2016         (_POSIX_MESSAGE_PASSING): Define.
2017         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h
2018         (_POSIX_MESSAGE_PASSING): Define.
2019
2020 2004-04-04  Ulrich Drepper  <drepper@redhat.com>
2021
2022         * tst-context1.c (fct): Check whether correct stack is used.
2023
2024 2004-04-03  Ulrich Drepper  <drepper@redhat.com>
2025
2026         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Never use
2027         matching constraints for asm mem parameters.
2028
2029         * tst-clock2.c (tf): Don't define unless needed.
2030
2031 2004-03-30  H.J. Lu  <hongjiu.lu@intel.com>
2032
2033         * Makefile (link-libc-static): Use $(static-gnulib) instead of
2034         $(gnulib).
2035
2036 2004-03-30  Ulrich Drepper  <drepper@redhat.com>
2037
2038         * sysdeps/pthread/pthread-functions.h: Add ptr__nptl_deallocate_tsd.
2039         * init.c (pthread_functions): Add ptr__nptl_deallocate_tsd.
2040         * pthreadP.h: Declare __nptl_deallocate_tsd.
2041         * pthread_create.c (deallocate_tsd): Remove to __nptl_deallocate_tsd.
2042         Adjust caller.
2043
2044         * Makefile (tests): Add tst-tsd5.
2045         * tst-tsd5.c: New file.
2046
2047 2004-03-29  Ulrich Drepper  <drepper@redhat.com>
2048
2049         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
2050         (__pthread_attr_setaffinity_old): Prepend GLIBC_ to version names
2051         is SHLIB_COMPAT check.
2052         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
2053         (__pthread_attr_getaffinity_old): Likewise.
2054         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
2055         (__pthread_getaffinity_old): Likewise.
2056         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
2057         (__pthread_setaffinity_old): Likewise.
2058
2059 2004-03-26  Ulrich Drepper  <drepper@redhat.com>
2060
2061         * allocatestack.c (_make_stacks_executable): Call
2062         _dl_make_stack_executable first.
2063
2064 2004-03-24  Roland McGrath  <roland@redhat.com>
2065
2066         * sysdeps/i386/pthread_spin_lock.c (pthread_spin_lock): Use "m"
2067         constraint instead of "0".
2068
2069 2004-03-24  Ulrich Drepper  <drepper@redhat.com>
2070
2071         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
2072         (lll_mutex_cond_trylock): Define as wrapper around __lll_cond_trylock.
2073
2074         * sysdeps/unix/sysv/linux/getpid.c (really_getpid): Reorganize
2075         code to avoid warning.
2076
2077 2004-03-24  Andreas Jaeger  <aj@suse.de>
2078
2079         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
2080         (__pthread_attr_setaffinity_old): Remove const.
2081
2082 2004-03-23  Ulrich Drepper  <drepper@redhat.com>
2083
2084         * sysdeps/unix/sysv/linux/smp.h: New file.
2085         * sysdeps/unix/sysv/linux/sh/smp.h: New file.
2086         * init.c: Define __is_smp.
2087         (__pthread_initialize_minimal_internal): Call is_smp_system to
2088         initialize __is_smp.
2089         * pthreadP.h: Declare __is_smp.
2090         Define MAX_ADAPTIVE_COUNT is necessary.
2091         * pthread_mutex_init.c: Add comment regarding __spins field.
2092         * pthread_mutex_lock.c: Implement adaptive mutex type.
2093         * pthread_mutex_timedlock.c: Likewise.
2094         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Likewise.
2095         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h (pthread_mutex_t):
2096         Add __spins field.
2097         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
2098         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
2099         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
2100         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
2101         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
2102         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
2103         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
2104         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Define
2105         lll_mutex_cond_trylock.
2106         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
2107         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
2108         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
2109         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
2110         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
2111         Define BUSY_WAIT_NOP.
2112         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
2113         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
2114
2115         * tst-mutex5.c: Add support for testing adaptive mutexes.
2116         * tst-mutex7.c: Likewise.
2117         * tst-mutex5a.c: New file.
2118         * tst-mutex7a.c: New file.
2119         * Makefile (tests): Add tst-mutex5a and tst-mutex7a.
2120
2121         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
2122         (__lll_mutex_timedlock_wait): Preserve r8 and r9 since the
2123         vgettimeofday call might destroy the content.
2124
2125         * sysdeps/ia64/pthread_spin_lock.c (pthread_spin_lock): Use hint
2126         @pause in the loop.
2127
2128         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_mutex_trylock):
2129         No need to restrict type of ret.  Make it int.  Add comment.
2130
2131         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_mutex_trylock):
2132         Remove unnecessary setne instruction.
2133
2134 2004-03-22  Jakub Jelinek  <jakub@redhat.com>
2135
2136         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
2137         (__pthread_getaffinity_new): Use INT_MAX instead of UINT_MAX.
2138         * pthread_getattr_np.c (pthread_getattr_np): Double size every cycle.
2139         If realloc fails, break out of the loop.
2140
2141 2004-03-20  Andreas Jaeger  <aj@suse.de>
2142
2143         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
2144         (__pthread_setaffinity_old): Fix interface.
2145         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
2146         (__pthread_getaffinity_old): Likewise.
2147
2148         * sysdeps/unix/sysv/linux/pthread_setaffinity.c
2149         (__pthread_setaffinity_new): Remove duplicate declaration.
2150
2151 2004-03-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2152
2153         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (CENABLE): Save
2154         the return value to a safe register.
2155         (CDISABLE): Set the function argument correctly.
2156
2157 2004-03-17  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2158
2159         * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h (XCHG): Define.
2160         * sysdeps/unix/sysv/linux/sh/lowlevellock.S (__lll_mutex_lock_wait):
2161         Rewrite so that only one locked memory operation per round is needed.
2162         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S
2163         (pthread_barrier_wait): After wakeup, release lock only when the
2164         last thread stopped using the barrier object.
2165         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
2166         (__pthread_cond_wait): Don't store mutex address if the current
2167         value is ~0l.  Add correct cleanup support and unwind info.
2168         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
2169         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
2170         (__pthread_cond_broadcast): Don't use requeue for pshared condvars.
2171         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Update comment.
2172         * sysdeps/unix/sysv/linux/sh/pthread_once.S (__pthread_once):
2173         Add correct cleanup support and unwind info.
2174         * sysdeps/unix/sysv/linux/sh/sem_wait.S (__new_sem_wait): Likewise.
2175         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Add unwind
2176         information for syscall wrappers.
2177
2178 2004-03-18  Ulrich Drepper  <drepper@redhat.com>
2179
2180         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_attr): Add
2181         cpusetsize field, remove next.
2182         * sysdeps/pthread/pthread.h (pthread_getaffinity_np): Add new second
2183         parameter for size of the CPU set.
2184         (pthread_setaffinity_np): Likewise.
2185         (pthread_attr_getaffinity_np): Likewise.
2186         (pthread_attr_setaffinity_np): Likewise.
2187         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c: Implement
2188         interface change, keep compatibility code.
2189         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c: Likewise.
2190         * sysdeps/unix/sysv/linux/pthread_getaffinity.c: Likewise.
2191         * sysdeps/unix/sysv/linux/pthread_setaffinity.c: Likewise.
2192         * pthreadP.h: Remove hidden_proto for pthread_getaffinity_np.  Declare
2193         __pthread_getaffinity_np.
2194         * Versions: Add version for changed interfaces.
2195         * tst-attr3.c: Adjust test for interface change.
2196         * pthread_getattr_np.c: Query the kernel about the affinity mask with
2197         increasing buffer sizes.
2198         * pthread_attr_destroy.c: Remove unused list handling.
2199         * pthread_attr_init.c: Likewise.
2200
2201 2004-03-17  Roland McGrath  <roland@redhat.com>
2202
2203         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Pass missing
2204         first argument to clock_getres so we ever enable kernel timers.
2205
2206 2004-03-15  Ulrich Weigand  <uweigand@de.ibm.com>
2207
2208         * init.c (nptl_version): Add __attribute_used__ to nptl_version.
2209
2210 2004-03-12  Richard Henderson  <rth@redhat.com>
2211
2212         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: Propagate
2213         oldvalue from CENABLE to CDISABLE.
2214
2215 2004-03-12  Ulrich Drepper  <drepper@redhat.com>
2216
2217         * sysdeps/unix/sysv/linux/bits/local_lim.h: Define HOST_NAME_MAX.
2218         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: Likewise.
2219         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: Likewise.
2220         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: Likewise.
2221
2222 2004-03-11  Richard Henderson  <rth@redhat.com>
2223
2224         * sysdeps/alpha/tcb-offsets.sym (PID_OFFSET): New.
2225         * sysdeps/unix/sysv/linux/alpha/pt-vfork.S: Save/restore PID.
2226         * sysdeps/unix/sysv/linux/alpha/vfork.S: New file.
2227
2228 2004-03-11  Jakub Jelinek  <jakub@redhat.com>
2229
2230         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S (__vfork): Use jgnl
2231         instead of jnl instruction to jump to SYSCALL_ERROR_LABEL.
2232         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S (__vfork): Likewise.
2233
2234 2004-03-11  Jakub Jelinek  <jakub@redhat.com>
2235
2236         * forward.c (__pthread_cond_broadcast_2_0,
2237         __pthread_cond_destroy_2_0, __pthread_cond_init_2_0,
2238         __pthread_cond_signal_2_0, __pthread_cond_wait_2_0,
2239         __pthread_cond_timedwait_2_0): Use return 0 as defaction instead of 0.
2240
2241 2004-03-11  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2242
2243         * sysdeps/sh/tcb-offsets.sym: Add PID.
2244         * sysdeps/unix/sysv/linux/sh/pt-vfork.S: Properly handle PID cache.
2245         * sysdeps/unix/sysv/linux/sh/vfork.S: New file.
2246
2247 2004-03-10  Ulrich Drepper  <drepper@redhat.com>
2248
2249         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: No need to
2250         include <sysdep-cancel.h>, vfork is no cancellation point.
2251         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: Likewise.
2252         * sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S: Likewise.
2253         * sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S: Likewise.
2254
2255 2004-03-10  Jakub Jelinek  <jakub@redhat.com>
2256
2257         * sysdeps/unix/sysv/linux/s390/s390-32/vfork.S (__vfork): Add
2258         libc_hidden_def.
2259         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S (__vfork): Likewise.
2260         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S (__vfork):
2261         Likewise.
2262         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S (__vfork):
2263         Likewise.
2264         * sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S (__vfork): Likewise.
2265         * sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S (__vfork): Likewise.
2266         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Include tcb-offsets.h.
2267         * sysdeps/unix/sysv/linux/ia64/vfork.S (__vfork): Use DO_CALL instead
2268         of DO_CALL_VIA_BREAK.  Work around a gas problem.
2269
2270         * sysdeps/unix/sysv/linux/powerpc/pt-vfork.S: Remove.
2271         * sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: New file.
2272         * sysdeps/unix/sysv/linux/powerpc/powerpc32/pt-vfork.S: New file.
2273         * sysdeps/unix/sysv/linux/powerpc/powerpc64/vfork.S: New file.
2274         * sysdeps/unix/sysv/linux/powerpc/powerpc64/pt-vfork.S: New file.
2275         * sysdeps/powerpc/tcb-offsets.sym: Add PID.
2276
2277         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S (__vfork): Don't use
2278         a local register for saving old PID.  Negate PID in parent upon exit.
2279
2280         * sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: Include
2281         tcb-offsets.h.
2282         (__vfork): Negate PID if non-zero and set to INT_MIN if zero
2283         before syscall, set to the old value in the parent afterwards.
2284         * sysdeps/unix/sysv/linux/s390/s390-32/vfork.S: New file.
2285         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S: Include
2286         tcb-offsets.h.
2287         (__vfork): Negate PID if non-zero and set to INT_MIN if zero
2288         before syscall, set to the old value in the parent afterwards.
2289         * sysdeps/unix/sysv/linux/s390/s390-64/vfork.S: New file.
2290         * sysdeps/s390/tcb-offsets.sym: Add PID.
2291
2292         * sysdeps/unix/sysv/linux/sparc/pt-vfork.S: Remove.
2293         * sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: New file.
2294         * sysdeps/unix/sysv/linux/sparc/sparc32/pt-vfork.S: New file.
2295         * sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: New file.
2296         * sysdeps/unix/sysv/linux/sparc/sparc64/pt-vfork.S: New file.
2297         * sysdeps/sparc/tcb-offsets.sym: Add PID.
2298
2299 2004-03-10  Andreas Schwab  <schwab@suse.de>
2300
2301         * sysdeps/ia64/tcb-offsets.sym: Add PID.
2302         * sysdeps/unix/sysv/linux/ia64/vfork.S: New file.
2303         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Properly handle PID cache.
2304
2305 2004-03-09  Jakub Jelinek  <jakub@redhat.com>
2306
2307         * tst-cancel20.c (do_one_test): Clear in_sh_body first.
2308         * tst-cancel21.c (do_one_test): Likewise.
2309         Reported by Gordon Jin <gordon.jin@intel.com>.
2310
2311 2004-02-09  Jakub Jelinek  <jakub@redhat.com>
2312
2313         * sysdeps/unix/sysv/linux/i386/vfork.S (SAVE_PID): Negate PID
2314         if non-zero and set to INT_MIN if zero.
2315         * sysdeps/unix/sysv/linux/x86_64/vfork.S (SAVE_PID): Likewise.
2316         * sysdeps/unix/sysv/linux/i386/pt-vfork.S: Include tcb-offsets.h.
2317         (SAVE_PID, RESTORE_PID): Define.
2318         (__vfork): Use it.
2319         * sysdeps/unix/sysv/linux/x86_64/pt-vfork.S: Include tcb-offsets.h.
2320         Use relative path to avoid including NPTL i386/vfork.S.
2321         (SAVE_PID, RESTORE_PID): Define.
2322         * sysdeps/unix/sysv/linux/raise.c: Include limits.h.
2323         (raise): Handle THREAD_SELF->pid INT_MIN the same as 0.
2324         * Makefile (tests): Add tst-vfork1, tst-vfork2, tst-vfork1x and
2325         tst-vfork2x.
2326         (tests-reverse): Add tst-vfork1x and tst-vfork2x.
2327         * tst-vfork1.c: New test.
2328         * tst-vfork2.c: New test.
2329         * tst-vfork1x.c: New test.
2330         * tst-vfork2x.c: New test.
2331
2332 2004-03-08  Ulrich Drepper  <drepper@redhat.com>
2333
2334         * sysdeps/i386/tcb-offsets.sym: Add PID.
2335         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
2336         * sysdeps/unix/sysv/linux/i386/vfork.S: New file.
2337         * sysdeps/unix/sysv/linux/x86_64/vfork.S: New file.
2338
2339 2004-03-08  Steven Munroe  <sjmunroe@us.ibm.com>
2340
2341         * sysdeps/unix/sysv/linux/powerpc/Versions: Remove leading tabs.
2342
2343 2004-03-08  H.J. Lu  <hongjiu.lu@intel.com>
2344
2345         * sysdeps/s390/tls.h (INIT_SYSINFO): _dl_sysinfo is now in
2346         _rtld_global_ro.
2347
2348 2004-03-07  Ulrich Drepper  <drepper@redhat.com>
2349
2350         * sysdeps/ia64/tls.h (INIT_SYSINFO): _dl_sysinfo is now in
2351         _rtld_global_ro.
2352
2353         * tst-once4.c: Remove unnecessary macro definition.
2354
2355         * tst-mutex7.c (do_test): Limit thread stack size.
2356         * tst-once2.c (do_test): Likewise.
2357         * tst-tls3.c (do_test): Likewise.
2358         * tst-tls1.c (do_test): Likewise.
2359         * tst-signal3.c (do_test): Likewise.
2360         * tst-kill6.c (do_test): Likewise.
2361         * tst-key4.c (do_test): Likewise.
2362         * tst-join4.c (do_test): Likewise.
2363         * tst-fork1.c (do_test): Likewise.
2364         * tst-context1.c (do_test): Likewise.
2365         * tst-cond2.c (do_test): Likewise.
2366         * tst-cond10.c (do_test): Likewise.
2367         * tst-clock2.c (do_test): Likewise.
2368         * tst-cancel10.c (do_test): Likewise.
2369         * tst-basic2.c (do_test): Likewise.
2370         * tst-barrier4.c (do_test): Likewise.
2371
2372 2004-03-05  Ulrich Drepper  <drepper@redhat.com>
2373
2374         * sysdeps/i386/tls.h: Use GLRO instead of GL where appropriate.
2375
2376 2004-03-01  Ulrich Drepper  <drepper@redhat.com>
2377
2378         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
2379         (__pthread_cond_timedwait): Optimize wakeup test.
2380         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
2381         (__pthread_cond_wait): Likewise.
2382         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
2383         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
2384         Likewise.
2385
2386 2004-02-29  Ulrich Drepper  <drepper@redhat.com>
2387
2388         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
2389         (__lll_mutex_lock_wait): Optimize a bit more.  Just one copy of
2390         the atomic instruction needed.
2391         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
2392         (__lll_mutex_lock_wait): Likewise.
2393
2394 2004-02-28  Ulrich Drepper  <drepper@redhat.com>
2395
2396         * Makefile (tests): Add tst-cond14 and tst-cond15.
2397         * tst-cond14.c: New file.
2398         * tst-cond15.c: New file.
2399
2400 2004-02-27  Ulrich Drepper  <drepper@redhat.com>
2401
2402         * sysdeps/pthread/createthread.c (create_thread): Remove use of
2403         CLONE_STOPPED.  We cannot use SIGCONT which means CLONE_STOPPED
2404         needs to be implemented differently to be useful.
2405
2406 2004-02-26  Ulrich Drepper  <drepper@redhat.com>
2407
2408         * pthread_attr_setschedparam.c: Don't test priority against limits
2409         here.  Set ATTR_FLAG_SCHED_SET flag.
2410         * pthread_attr_setschedpolicy.c: Set ATTR_FLAG_POLICY_SET flag.
2411         * pthread_create.c (__pthread_create_2_1): Copy scheduling attributes
2412         from parent thread to child.  If attribute is used and scheduling
2413         parameters are not inherited, copy parameters from attribute or
2414         compute them.  Check priority value.
2415         * pthread_getschedparam.c: If the parameters aren't known yet get
2416         them from the kernel.
2417         * pthread_setschedparam.c: Set ATTR_FLAG_SCHED_SET and
2418         ATTR_FLAG_POLICY_SET flag for thread.
2419         * sysdeps/unix/sysv/linux/internaltypes.h: Define ATTR_FLAG_SCHED_SET
2420         and ATTR_FLAG_POLICY_SET.
2421
2422         * sysdeps/pthread/createthread.c: Use tgkill if possible.
2423
2424         * pthread_attr_getstackaddr.c (__pthread_attr_getstackaddr): Don't
2425         fail if stack address hasn't been set.  Just return 0.
2426
2427 2004-02-25  Ulrich Drepper  <drepper@redhat.com>
2428
2429         * Makefile (tests-nolibpthread): Add tst-unload.  Don't link with
2430         libpthread for the files in this list.
2431         (CFLAGS-tst-unload): Removed.
2432         * tst-unload.c (do_test): Don't use complete path for
2433         LIBPHREAD_SO.
2434
2435         * Makefile: Define sonames for tst-tls5mod, tst-_res1mod1, and
2436         tst-_res1mod2.
2437
2438 2004-02-22  Ulrich Drepper  <drepper@redhat.com>
2439
2440         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
2441         (__lll_mutex_lock_wait): Rewrite so that only one locked memory
2442         operation per round is needed.
2443         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
2444         (__lll_mutex_lock_wait): Likewise.
2445
2446 2004-02-20  Ulrich Drepper  <drepper@redhat.com>
2447
2448         * tst-cancel9.c (cleanup): Don't print to stderr.
2449
2450 2004-02-20  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2451
2452         * sysdeps/sh/jmpbuf-unwind.h (_JMPBUF_UNWINDS_ADJ): Fix variable name.
2453
2454 2004-02-20  Jakub Jelinek  <jakub@redhat.com>
2455
2456         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h
2457         (__syscall_error_handler2): Call CDISABLE.
2458         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h
2459         (__syscall_error_handler2): Call CDISABLE.
2460
2461         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
2462         Release lock before the loop, don't reacquire it.
2463
2464         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h (DL_ARGV_NOT_RELRO): Define.
2465
2466 2004-02-19  Andreas Schwab  <schwab@suse.de>
2467
2468         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
2469         Fix last change.
2470
2471 2004-02-18  Ulrich Drepper  <drepper@redhat.com>
2472
2473         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
2474         (pthread_barrier_wait): After wakeup, release lock only when the
2475         last thread stopped using the barrier object.
2476         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S
2477         (pthread_barrier_wait): Likewise.
2478         * sysdeps/pthread/pthread_barrier_wait.c (pthread_barrier_wait):
2479         Likewise.
2480         * Makefile (tests): Add tst-barrier4.
2481         * tst-barrier4.c: New file.
2482
2483         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
2484         (__pthread_cond_timedwait): Perform timeout test while holding
2485         internal lock to prevent wakeup race.
2486         Patch by Dinakar Guniguntala <dgunigun@in.ibm.com>.
2487         * sysdeps/pthread/pthread_cond_timedwait.c
2488         (__pthread_cond_timedwait): Likewise.
2489         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
2490         (__pthread_cond_timedwait): Likewise.
2491
2492 2004-02-18  Jakub Jelinek  <jakub@redhat.com>
2493
2494         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S
2495         (__pthread_rwlock_unlock): Access WRITER as 32-bit value.
2496         * Makefile (tests): Add tst-rwlock13.
2497         * tst-rwlock13.c: New test.
2498
2499 2004-02-16  Ulrich Drepper  <drepper@redhat.com>
2500
2501         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
2502         (__condvar_tw_cleanup): Little optimization.
2503         Patch by Dinakar Guniguntala <dgunigun@in.ibm.com>.
2504
2505 2004-02-16  Steven Munroe  <sjmunroe@us.ibm.com>
2506
2507         * sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: Replace libc with
2508         libpthread as "lib" parameter to SHLIB_COMPAT.
2509         (__novmx_siglongjmp): Fix typo in function name.
2510         (__novmx_longjmp): Fix typo in function name.
2511
2512 2004-02-13  Ulrich Drepper  <drepper@redhat.com>
2513
2514         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Add a
2515         __builtin_expect.
2516
2517         * sysdeps/generic/pt-longjmp.c: Moved to...
2518         * sysdeps/pthread/pt-longjmp.c: ...here.  New file.
2519
2520 2004-01-29  Steven Munroe  <sjmunroe@us.ibm.com>
2521
2522         * Makefile (libpthread-routines): Add pt-cleanup.
2523         * pt-longjmp.c: Removed.
2524         * pt-cleanup.c: Copied __pthread_cleanup_upto to here. New file.
2525         * sysdeps/generic/pt-longjmp.c: Copied longjmp to here. New file.
2526         * sysdeps/unix/sysv/linux/powerpc/Versions: New file.
2527         Version longjmp, siglongjmp for GLIBC_2.3.4.
2528         * sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: New File.
2529
2530 2004-02-13  Ulrich Drepper  <drepper@redhat.com>
2531
2532         * sysdeps/pthread/pthread_cond_timedwait.c
2533         (__pthread_cond_timedwait): Optimize.  Drop internal lock earlier.
2534         Reuse code.  Add __builtin_expects.
2535
2536         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
2537         (__pthread_cond_timedwait): Get internal lock in case timeout has
2538         passed before the futex syscall.
2539         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
2540
2541 2004-01-20  Ulrich Drepper  <drepper@redhat.com>
2542
2543         * allocatestack.c: Pretty printing.
2544
2545         * sysdeps/pthread/createthread.c (create_thread): Don't add
2546         CLONE_DETACHED bit if it is not necessary.
2547
2548 2004-01-16  Ulrich Drepper  <drepper@redhat.com>
2549
2550         * pthread_getattr_np.c: Include ldsodefs.h.
2551
2552 2004-01-16  Richard Henderson  <rth@redhat.com>
2553
2554         * allocatestack.c: Don't declare __libc_stack_end.
2555         * init.c (__pthread_initialize_minimal_internal): Likewise.
2556         * pthread_getattr_np.c (pthread_getattr_np): Likewise.
2557
2558 2004-01-15  Richard Henderson  <rth@redhat.com>
2559
2560         * sysdeps/alpha/tls.h (tcbhead_t): Add private.
2561         (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN, TLS_TCB_SIZE,
2562         TLS_PRE_TCB_SIZE, TLS_TCB_ALIGN, INSTALL_DTV, INSTALL_NEW_DTV,
2563         GET_DTV, THREAD_DTV, THREAD_SELF, DB_THREAD_SELF): Match ia64.
2564         (TLS_TCB_OFFSET, THREAD_ID, NO_TLS_OFFSET): Remove.
2565         (THREAD_GETMEM, THREAD_GETMEM_NC): Simplify.
2566         (THREAD_SETMEM, THREAD_SETMEM_NC): Likewise.
2567         * sysdeps/unix/sysv/linux/alpha/createthread.c (TLS_VALUE): Match ia64.
2568
2569 2004-01-14  Ulrich Drepper  <drepper@redhat.com>
2570
2571         * init.c (pthread_functions): Make array const.
2572
2573 2004-01-13  Ulrich Drepper  <drepper@redhat.com>
2574
2575         * allocatestack.c (__make_stacks_executable): Change interface.
2576         Check parameters.  Pass parameter on to libc counterpart.
2577         * pthreadP.h: Change declaration.
2578
2579 2004-01-13  Richard Henderson  <rth@redhat.com>
2580
2581         * pthread_attr_setstack.c (__old_pthread_attr_setstack): Use
2582         prototype form.
2583         * pthread_attr_setstacksize.c (__old_pthread_attr_setstacksize):
2584         Likewise.
2585
2586         * sysdeps/alpha/Makefile: New file.
2587         * sysdeps/alpha/tcb-offsets.sym: New file.
2588         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h (SINGLE_THREAD_P):
2589         Use MULTIPLE_THREADS_OFFSET to implement !libpthread !libc version.
2590
2591         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Rewrite based
2592         on powerpc version.
2593
2594 2004-01-08  Jakub Jelinek  <jakub@redhat.com>
2595
2596         * Makefile (tests): Add tst-backtrace1.
2597         * tst-backtrace1.c: New test.
2598
2599 2003-12-11  Ulrich Weigand  <uweigand@de.ibm.com>
2600
2601         * sysdeps/alpha/tls.h (DB_THREAD_SELF): Pass bit size of thread
2602         register as second parameter to the REGISTER macro.
2603         * sysdeps/ia64/tls.h (DB_THREAD_SELF): Likewise.
2604         * sysdeps/powerpc/tls.h (DB_THREAD_SELF): Likewise.
2605         * sysdeps/sh/tls.h (DB_THREAD_SELF): Likewise.
2606         * sysdeps/sparc/tls.h (DB_THREAD_SELF): Likewise.
2607         * sysdeps/s390/tls.h (DB_THREAD_SELF): Pass __WORDSIZE as bit size
2608         of thread register as second parameter to REGISTER macro in 64 case.
2609
2610 2004-01-03  Ulrich Drepper  <drepper@redhat.com>
2611
2612         * sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Removed.
2613         (CFLAGS-getpid.o): Defined.
2614         (CFLAGS-getpid.os): Defined.
2615
2616 2003-12-31  Ulrich Drepper  <drepper@redhat.com>
2617
2618         * pthread_getattr_np.c (pthread_getattr_np): Make sure stack info
2619         returned for main thread does not overlap with any other VMA.
2620         Patch by Jakub Jelinek.
2621
2622 2003-12-29  Jakub Jelinek  <jakub@redhat.com>
2623
2624         * tst-raise1.c: Include stdio.h.
2625
2626 2003-12-23  Jakub Jelinek  <jakub@redhat.com>
2627
2628         * sysdeps/unix/sysv/linux/raise.c (raise): Protect pid = selftid
2629         setting with __ASSUME_TGKILL || defined __NR_tgkill.
2630         If pid is 0, set it to selftid.
2631         * sysdeps/unix/sysv/linux/getpid.c (really_getpid): Make inline.
2632         Don't set self->pid but self->tid.  If self->pid == 0 and self->tid
2633         != 0, return self->tid without doing a syscall.
2634         * descr.h (struct pthread): Move pid field after tid.
2635
2636         * Makefile (tests): Add tst-raise1.
2637         * tst-raise1.c: New file.
2638
2639 2003-12-23  Roland McGrath  <roland@redhat.com>
2640
2641         * tst-oddstacklimit.c: New file.
2642         * Makefile (tests): Add it.
2643         (tst-oddstacklimit-ENV): New variable.
2644
2645         * init.c (__pthread_initialize_minimal_internal): Round stack rlimit
2646         value up to page size for __default_stacksize.
2647
2648 2003-12-21  Ulrich Drepper  <drepper@redhat.com>
2649
2650         * Makefile (tests): Add tst-eintr5.
2651         * tst-eintr5.c: New file.
2652
2653         * eintr.c (eintr_source): Prevent sending signal to self.
2654
2655         * tst-eintr2.c (tf1): Improve error message.
2656
2657 2003-12-20  Ulrich Drepper  <drepper@redhat.com>
2658
2659         * sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Define.
2660         * sysdeps/unix/sysv/linux/getpid.c: New file.
2661         * pthread_cancel.c: Add comment explaining use of PID field.
2662         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
2663         * pthread_getattr_np.c: Use abs() when comparing PID and TID fields.
2664         * sysdeps/unix/sysv/linux/fork.c: Negate PID field of parent
2665         temporarily to signal the field must not be relied on and updated
2666         by getpid().
2667         * sysdeps/unix/sysv/linux/pt-raise.c: Handle case where PID is
2668         temporarily negative.
2669         * sysdeps/unix/sysv/linux/raise.c: Likewise.
2670
2671 2003-12-19  Ulrich Drepper  <drepper@redhat.com>
2672
2673         * eintr.c (setup_eintr): Add new parameter.  Pass to thread function.
2674         (eintr_source): If ARG != NULL, use pthread_kill.
2675         * tst-eintr1.c: Adjust for this change.
2676         * tst-eintr2.c: Likewise.
2677         * Makefile (tests): Add tst-eintr3 and tst-eintr4.
2678         * tst-eintr3.c: New file.
2679         * tst-eintr4.c: New file.
2680
2681 2003-12-19  Jakub Jelinek  <jakub@redhat.com>
2682
2683         * libc-cancellation.c (__libc_enable_asynccancel): Don't cancel
2684         if CANCELSTATE_BITMASK is set.
2685         * sysdeps/pthread/librt-cancellation.c (__librt_enable_asynccancel):
2686         Likewise.
2687
2688         * Makefile (tests): Add tst-cancel22 and tst-cancel23.
2689         (tests-reverse): Add tst-cancel23.
2690         * tst-cancel22.c: New test.
2691         * tst-cancel23.c: New test.
2692
2693 2003-12-18  Ulrich Drepper  <drepper@redhat.com>
2694
2695         * tst-eintr1.c: Better error messages.
2696
2697         * Makefile (tests): Add tst-eintr2.
2698         * tst-eintr2.c: New file.
2699
2700 2003-12-18  Jakub Jelinek  <jakub@redhat.com>
2701
2702         * Makefile (tests): Add tst-cancel21 and tst-cancelx21.
2703         (CFLAGS-tst-cancelx21.c): Set.
2704         * tst-cancel21.c: New test.
2705         * tst-cancelx21.c: New test.
2706
2707         * unwind.c (FRAME_LEFT): Add adj argument.  Subtract it from each
2708         comparison operand.
2709         (unwind_stop): Use _JMPBUF_CFA_UNWINDS_ADJ macro instead of
2710         _JMPBUF_CFA_UNWINDS.  Adjust FRAME_LEFT invocations.
2711         * pt-longjmp.c: Include jmpbuf-unwind.h.
2712         (__pthread_cleanup_upto): Use _JMPBUF_UNWINDS_ADJ macro instead of
2713         _JMPBUF_UNWINDS.  Adjust compared pointers.
2714         * init.c (__pthread_initialize_minimal_internal): Initialize
2715         pd->stackblock_size.
2716         * sysdeps/pthread/jmpbuf-unwind.h: Removed.
2717         * sysdeps/alpha/jmpbuf-unwind.h: New file.
2718         * sysdeps/i386/jmpbuf-unwind.h: New file.
2719         * sysdeps/powerpc/jmpbuf-unwind.h: New file.
2720         * sysdeps/s390/jmpbuf-unwind.h: New file.
2721         * sysdeps/sh/jmpbuf-unwind.h: New file.
2722         * sysdeps/sparc/sparc32/jmpbuf-unwind.h: New file.
2723         * sysdeps/x86_64/jmpbuf-unwind.h: New file.
2724         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: Include stdint.h.
2725         (_JMPBUF_CFA_UNWINDS): Remove.
2726         (_JMPBUF_CFA_UNWINDS_ADJ, _JMPBUF_UNWINDS_ADJ): Define.
2727
2728 2003-12-12  Jakub Jelinek  <jakub@redhat.com>
2729
2730         * Makefile (tests): Add tst-cancel20 and tst-cancelx20.
2731         (CFLAGS-tst-cancelx20.c): Set.
2732         * tst-cancel20.c: New test.
2733         * tst-cancelx20.c: New test.
2734
2735 2003-12-17  Ulrich Drepper  <drepper@redhat.com>
2736
2737         * init.c (__pthread_initialize_minimal_internal): Don't treat
2738         architectures with separate register stack special here when
2739         computing default stack size.
2740
2741 2003-12-17  Roland McGrath  <roland@redhat.com>
2742
2743         * Makefile (tst-cancelx7-ARGS): New variable.
2744         Reportd by Greg Schafer <gschafer@zip.com.au>.
2745
2746 2003-12-17  Jakub Jelinek  <jakub@redhat.com>
2747
2748         * Makefile (tests): Add tst-stack3.  Depend on $(objpfx)tst-stack3-mem.
2749         (generated): Add tst-stack3.mtrace and tst-stack3-mem.
2750         (tst-stack3-ENV): Set.
2751         ($(objpfx)tst-stack3-mem): New.
2752         * tst-stack3.c: New test.
2753
2754 2003-12-10  David Mosberger  <davidm@hpl.hp.com>
2755
2756         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c (_init_EPILOG_BEGINS):
2757         Add unwind directives.  Drop unused .regstk directive.
2758         (_fini_EPILOG_BEGINS): Add unwind directives.
2759
2760 2003-12-11  Ulrich Drepper  <drepper@redhat.com>
2761
2762         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_futex_wait):
2763         Assume parameter is a pointer.
2764         (lll_futex_wake): Likewise.
2765         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_futex_wait):
2766         Likewise.
2767         (lll_futex_wake): Likewise.
2768         Reported by Boris Hu.
2769         * sysdeps/unix/sysv/linux/unregister-atfork.c
2770         (__unregister_atfork): Pass pointer to refcntr to lll_futex_wait.
2771
2772         * sysdeps/unix/sysv/linux/sem_wait.c (__new_sem_wait): Simplify a bit.
2773
2774 2003-12-10  Ulrich Drepper  <drepper@redhat.com>
2775
2776         * sysdeps/pthread/bits/libc-lock.h (__rtld_lock_initialize): Define.
2777         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Call
2778         __rtld_lock_initialize for ld.so lock.
2779         Patch in part by Adam Li <adam.li@intel.com>.
2780
2781 2003-12-02  David Mosberger  <davidm@hpl.hp.com>
2782
2783         * Makefile (link-libc-static): Remove -lgcc_eh---it's already mentioned
2784         in $(gnulib).  Also, remove stale comment.
2785
2786 2003-11-12  David Mosberger  <davidm@hpl.hp.com>
2787
2788         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Take
2789         advantage of new syscall stub and optimize accordingly.
2790
2791         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__NR_futex): Rename
2792         from SYS_futex, to match expectations of
2793         sysdep.h:DO_INLINE_SYSCALL.
2794         (lll_futex_clobbers): Remove.
2795         (lll_futex_timed_wait): Rewrite in terms of DO_INLINE_SYSCALL.
2796         (lll_futex_wake): Likewise.
2797         (lll_futex_requeue): Likewise.
2798         (__lll_mutex_trylock): Rewrite to a macro, so we can include this
2799         file before DO_INLINE_SYSCALL is defined (proposed by Jakub
2800         Jelinek).
2801         (__lll_mutex_lock): Likewise.
2802         (__lll_mutex_cond_lock): Likewise.
2803         (__lll_mutex_timed_lock): Likewise.
2804         (__lll_mutex_unlock): Likewise.
2805         (__lll_mutex_unlock_force): Likewise.
2806
2807         * sysdeps/ia64/tls.h: Move declaration of __thread_self up so it
2808         comes before the include of <sysdep.h>.
2809         (THREAD_SELF_SYSINFO): New macro.
2810         (THREAD_SYSINFO): Likewise.
2811         (INIT_SYSINFO): New macro.
2812         (TLS_INIT_TP): Call INIT_SYSINFO.
2813
2814         * sysdeps/ia64/tcb-offsets.sym: Add SYSINFO_OFFSET.
2815
2816         * sysdeps/pthread/createthread.c (create_thread): Use
2817         THREAD_SELF_SYSINFO and THREAD_SYSINFO instead of open code.
2818         * allocatestack.c (allocate_stack): Use THREAD_SYSINFO and
2819         THREAD_SELF_SYSINFO instead of open code.
2820         * sysdeps/i386/tls.h (THREAD_SELF_SYSINFO): New macro.
2821         (THREAD_SYSINFO): Likewise.
2822
2823         * sysdeps/unix/sysv/linux/ia64/dl-sysdep.h: New file.
2824
2825         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: Work around gas problem.
2826
2827 2003-12-06  Ulrich Drepper  <drepper@redhat.com>
2828
2829         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Use .init_array
2830         instead of .init.  Patch by David Mosberger.
2831
2832 2003-11-30  Thorsten Kukuk  <kukuk@suse.de>
2833
2834         * sysdeps/pthread/configure.in: Remove broken declaration in C
2835         cleanup handling check.
2836
2837 2003-11-30  Andreas Jaeger  <aj@suse.de>
2838
2839         * Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time).
2840         * sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s):
2841         Likewise.
2842
2843 2003-11-27  Jakub Jelinek  <jakub@redhat.com>
2844
2845         * sysdeps/unix/sysv/linux/internaltypes.h (ATTR_FLAG_OLDATTR): Define.
2846         * pthread_attr_destroy.c: Include shlib-compat.h.
2847         (__pthread_attr_destroy): Return immediately if ATTR_FLAG_OLDATTR
2848         is set in iattr->flags.
2849         * pthread_attr_init.c (__pthread_attr_init_2_0): Set ATTR_FLAG_OLDATTR.
2850
2851 2003-11-21  Jakub Jelinek  <jakub@redhat.com>
2852
2853         * Makefile (distribute): Add tst-cleanup4aux.c.
2854
2855         * tst-cond12.c (prepare): Add prototype.  Move after test-skeleton.c
2856         include.
2857
2858 2003-11-21  Ulrich Drepper  <drepper@redhat.com>
2859
2860         * tst-cond12.c (do_test): If USE_COND_SIGNAL is defined, use
2861         pthread_cond_signal.
2862
2863         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Don't
2864         store mutex address if the current value is ~0l.
2865         * sysdeps/pthread/pthread_cond_timedwait.c
2866         (__pthread_cond_timedwait): Likewise.
2867         * sysdeps/pthread/pthread_cond_broadcast.c
2868         (__pthread_cond_broadcast): Don't use requeue for pshared
2869         condvars.
2870
2871         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
2872         (__pthread_cond_wait): Don't store mutex address if the current
2873         value is ~0l.
2874         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S
2875         (__pthread_cond_timedwait): Likewise.
2876         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S
2877         (__pthread_cond_broadcast): Don't use requeue for pshared
2878         condvars.
2879
2880         * pthread_cond_init.c (__pthread_cond_init): Initialize __mutex
2881         element with ~0l for pshared condvars, with NULL otherwise.
2882
2883         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
2884         (__pthread_cond_wait): Don't store mutex address if the current
2885         value is ~0l.
2886         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
2887         (__pthread_cond_timedwait): Likewise.
2888         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
2889         (__pthread_cond_broadcast): Don't use requeue for pshared
2890         condvars.
2891
2892         * Makefile: Add rules to build and run tst-cond12 and tst-cond13.
2893         * tst-cond12.c: New file.
2894         * tst-cond13.c: New file.
2895
2896 2003-11-17  Ulrich Drepper  <drepper@redhat.com>
2897
2898         * sysdeps/pthread/configure.in: Make missing forced unwind support
2899         fatal.
2900
2901 2003-11-11  Ulrich Drepper  <drepper@redhat.com>
2902
2903         * pthreadP.h: Don't declare __pthread_unwind as weak inside libpthread.
2904
2905 2003-11-06  Ulrich Drepper  <drepper@redhat.com>
2906
2907         * Makefile: Add magic to clean up correctly.
2908
2909 2003-11-05  Jakub Jelinek  <jakub@redhat.com>
2910
2911         * unwind.c (FRAME_LEFT): Define.
2912         (unwind_stop): Handle old style cleanups here.
2913         (__pthread_unwind): Handle old style cleanups only if
2914         !HAVE_FORCED_UNWIND.
2915         * Makefile (tests): Add tst-cleanup4 and tst-cleanupx4.
2916         (CFLAGS-tst-cleanupx4.c): Add -fexceptions.
2917         ($(objpfx)tst-cleanup4): Depend on $(objpfx)tst-cleanup4aux.o.
2918         ($(objpfx)tst-cleanupx4): Likewise.
2919         * tst-cleanup4.c: New test.
2920         * tst-cleanup4aux.c: New.
2921         * tst-cleanupx4.c: New test.
2922
2923 2003-11-04  Ulrich Drepper  <drepper@redhat.com>
2924
2925         * sysdeps/pthread/bits/stdio-lock.h: Use lll_*lock instead of
2926         lll_mutex_*lock macros to skip atomic operations on some archs.
2927
2928 2003-11-03  Ulrich Drepper  <drepper@redhat.com>
2929
2930         * sysdeps/pthread/tst-timer.c (main): Initialize
2931         sigev2.sigev_value as well.
2932
2933 2003-10-15  Roland McGrath  <roland@redhat.com>
2934
2935         * sysdeps/pthread/configure.in: Barf if visibility attribute support
2936         is missing.
2937         * sysdeps/pthread/configure: Regenerated.
2938
2939 2003-10-09  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
2940
2941         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Completely revamp the
2942         locking macros.  No distinction between normal and mutex locking
2943         anymore.
2944         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Rewrite mutex locking.
2945         Merge bits from lowlevelmutex.S we still need.
2946         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Remove.
2947         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Likewise.
2948         * sysdeps/unix/sysv/linux/sh/not-cancel.h: New file.
2949         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Adjust for
2950         new mutex implementation.
2951         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Likewise.
2952         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise.
2953         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
2954         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
2955         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
2956         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
2957         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
2958         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
2959         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
2960         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h (PSEUDO): Also defined
2961         symbol for entry point to avoid cancellation.
2962
2963 2003-10-07  Jakub Jelinek  <jakub@redhat.com>
2964
2965         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Backout 2003-10-02
2966         changes.
2967         (SAVE_OLDTYPE_0): Fix a typo.
2968
2969 2003-10-03  Ulrich Drepper  <drepper@redhat.com>
2970
2971         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once):
2972         Check __sigsetjmp return value.  Reported by Daniel Jacobowitz.
2973
2974 2003-10-02  Ulrich Drepper  <drepper@redhat.com>
2975
2976         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (DOCARGS_1): Use
2977         correct offset.
2978
2979 2003-10-02  Jakub Jelinek  <jakub@redhat.com>
2980
2981         * Makefile (tests): Add tst-cancel19.
2982         * tst-cancel19.c: New test.
2983
2984 2003-10-02  Ulrich Drepper  <drepper@redhat.com>
2985
2986         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Fix saving and
2987         restoring of the old cancellation type.
2988
2989 2003-09-30  Jakub Jelinek  <jakub@redhat.com>
2990
2991         * sysdeps/pthread/malloc-machine.h: Remove misleading comment.
2992
2993 2003-09-27  Wolfram Gloger  <wg@malloc.de>
2994
2995         * sysdeps/pthread/malloc-machine.h: New file
2996
2997 2003-09-24  Roland McGrath  <roland@redhat.com>
2998
2999         * allocatestack.c (__make_stacks_executable): Don't ignore return
3000         value from _dl_make_stack_executable.
3001
3002 2003-09-24  Ulrich Drepper  <drepper@redhat.com>
3003
3004         * allocatestack.c (__make_stacks_executable): Also change
3005         permission of the currently unused stacks.
3006
3007         * allocatestack.c (change_stack_perm): Split out from
3008         __make_stacks_executable.
3009         (allocate_stack): If the required permission changed between the time
3010         we started preparing the stack and queueing it, change the permission.
3011         (__make_stacks_executable): Call change_stack_perm.
3012
3013         * Makefile: Build tst-execstack-mod locally.
3014         * tst-execstack-mod.c: New file.
3015
3016 2003-09-23  Jakub Jelinek  <jakub@redhat.com>
3017
3018         * Makefile (tests): Only add tst-execstack if have-z-execstack is yes.
3019
3020 2003-09-23  Roland McGrath  <roland@redhat.com>
3021
3022         * tst-execstack.c: New file.
3023         * Makefile (tests): Add it.
3024         ($(objpfx)tst-execstack, $(objpfx)tst-execstack.out): New targets.
3025         (LDFLAGS-tst-execstack): New variable.
3026
3027         * allocatestack.c (allocate_stack): Use GL(dl_stack_flags) to decide
3028         whether to use PROT_EXEC for stack mmap.
3029         (__make_stacks_executable): New function.
3030         * pthreadP.h: Declare it.
3031         * init.c (__pthread_initialize_minimal_internal): Set
3032         GL(dl_make_stack_executable_hook) to that.
3033
3034 2003-09-22  Ulrich Drepper  <drepper@redhat.com>
3035
3036         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Adjust for latest
3037         recommendation from AMD re avoidance of lock prefix.
3038
3039 2003-09-22  Jakub Jelinek  <jakub@redhat.com>
3040
3041         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait): Use
3042         lll_futex_timed_wait instead of lll_futex_wait.
3043         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Removed.
3044         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: Removed.
3045         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: Removed.
3046         * sysdeps/unix/sysv/linux/s390/libc-lowlevelmutex.c: Removed.
3047         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Removed.
3048         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Removed.
3049         * sysdeps/unix/sysv/linux/s390/sem_post.c: Removed.
3050         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Removed.
3051         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Include atomic.h.
3052         Completely revamp the locking macros.  No distinction between
3053         normal and mutex locking anymore.
3054         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
3055         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_lock_wait,
3056         __lll_lock_timedwait): Fix prototypes.
3057         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_lock_wait,
3058         __lll_lock_timedwait): Likewise.
3059         (lll_mutex_lock, lll_mutex_cond_lock): Use _val instead of _bool
3060         macros, add __builtin_expect.
3061         (lll_mutex_timedlock): Likewise.  Fix return value.
3062         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Removed.
3063         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevelmutex.S: Removed.
3064         * sysdeps/unix/sysv/linux/i386/i586/lowlevelmutex.S: Removed.
3065         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevelmutex.S: Removed.
3066         * sysdeps/unix/sysv/linux/i386/i686/lowlevelmutex.S: Removed.
3067         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevelmutex.S: Removed.
3068         * sysdeps/unix/sysv/linux/lowlevelmutex.c: Removed.
3069         * sysdeps/unix/sysv/linux/libc-lowlevelmutex.c: Removed.
3070
3071 2003-09-22  Ulrich Drepper  <drepper@redhat.com>
3072
3073         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
3074         (__lll_mutex_lock_wait): Minor optimization to avoid one atomic
3075         operation if possible.
3076
3077         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Don't play tricks
3078         like jumping over the lock prefix.
3079
3080 2003-09-21  Ulrich Drepper  <drepper@redhat.com>
3081
3082         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Completely revamp the
3083         locking macros.  No distinction between normal and mutex locking
3084         anymore.
3085         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
3086         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
3087         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
3088         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Rewrite mutex
3089         locking.  Merge bits from lowlevelmutex.S we still need.
3090         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
3091         * sysdeps/unix/sysv/linux/lowlevellock.c: Likewise.
3092         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Removed.
3093         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Removed.
3094         * Makefile (routines): Remove libc-lowlevelmutex.
3095         (libpthread-rountines): Remove lowlevelmutex.
3096         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Adjust
3097         for new mutex implementation.
3098         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
3099         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
3100         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
3101         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
3102         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
3103         Likewise.
3104         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
3105         Likewise.
3106         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
3107         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
3108         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Likewise
3109         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
3110         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
3111         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
3112         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
3113         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
3114         Likewise.
3115         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
3116         Likewise.
3117         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Likewise.
3118         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
3119         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
3120         Don't use requeue.
3121         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
3122         * sysdeps/pthread/pthread_cond_signal.c: Don't use requeue.
3123
3124 2003-09-20  Ulrich Drepper  <drepper@redhat.com>
3125
3126         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Don't match memory
3127         in parameters of asm with output parameters.
3128
3129         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Change
3130         type of DECR parameter to int.
3131         * pthreadP.h: Adjust prototype of __pthread_mutex_unlock_usercnt.
3132
3133 2003-09-18  Jakub Jelinek  <jakub@redhat.com>
3134
3135         * tst-attr3.c (tf, do_test): Print stack start/end/size and
3136         guardsize for each thread.
3137
3138 2003-09-17  Jakub Jelinek  <jakub@redhat.com>
3139
3140         * sysdeps/pthread/pthread.h (pthread_getattr_np): Clarify usage.
3141         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c
3142         (pthread_attr_setaffinity_np): Handle cpuset == NULL.
3143
3144         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c
3145         (pthread_attr_getaffinity_np): Don't segfault if iattr->cpuset is
3146         NULL.
3147         * pthread_getattr_np.c: Set cpuset using pthread_getaffinity_np.
3148         * pthreadP.h (pthread_getaffinity_np): Add hidden_proto.
3149         * sysdeps/unix/sysv/linux/pthread_getaffinity.c
3150         (pthread_getaffinity_np): Add hidden_def.
3151
3152         * Makefile (tests): Add tst-attr3.
3153         * tst-attr3.c: New test.
3154
3155         * sysdeps/i386/Makefile (CFLAGS-tst-align.c): Remove.
3156
3157 2003-09-15  Jakub Jelinek  <jakub@redhat.com>
3158
3159         * sysdeps/i386/Makefile (CFLAGS-pthread_create.c,
3160         CFLAGS-tst-align.c): Add -mpreferred-stack-boundary=4.
3161
3162 2003-09-17  Jakub Jelinek  <jakub@redhat.com>
3163
3164         * Makefile (CFLAGS-tst-align.c): Add $(stack-align-test-flags).
3165         * tst-align.c: Include tst-stack-align.h.
3166         (tf, do_test): Use TEST_STACK_ALIGN macro.
3167
3168 2003-09-17  Ulrich Drepper  <drepper@redhat.com>
3169
3170         * pthread_attr_init.c (__pthread_attr_init_2_0): Remove unused
3171         variable.
3172
3173 2003-09-16  Ulrich Drepper  <drepper@redhat.com>
3174
3175         * pthread_getattr_np.c (pthread_getattr_np): Correctly fill in the
3176         stack-related values for the initial thread.
3177
3178 2003-09-15  Jakub Jelinek  <jakub@redhat.com>
3179
3180         * Makefile (CFLAGS-pthread_once.c): Add $(uses-callbacks).
3181
3182 2003-09-11  Ulrich Drepper  <drepper@redhat.com>
3183
3184         * pthread_mutex_lock.c: Minor code rearrangements.
3185
3186 2003-09-05  Roland McGrath  <roland@redhat.com>
3187
3188         * pthread_create.c (__pthread_pthread_sizeof_descr): Removed.
3189         Instead, include ../nptl_db/db_info.c to do its magic.
3190         * pthread_key_create.c (__pthread_pthread_keys_max): Removed.
3191         (__pthread_pthread_key_2ndlevel_size): Likewise.
3192         * sysdeps/alpha/tls.h (DB_THREAD_SELF): New macro.
3193         * sysdeps/i386/tls.h (DB_THREAD_SELF): New macro.
3194         * sysdeps/ia64/tls.h (DB_THREAD_SELF): New macro.
3195         * sysdeps/powerpc/tls.h (DB_THREAD_SELF): New macro.
3196         * sysdeps/s390/tls.h (DB_THREAD_SELF): New macro.
3197         * sysdeps/sh/tls.h (DB_THREAD_SELF): New macro.
3198         * sysdeps/sparc/tls.h (DB_THREAD_SELF): New macro.
3199         * sysdeps/x86_64/tls.h (DB_THREAD_SELF): New macro.
3200         * sysdeps/alpha/td_ta_map_lwp2thr.c: File removed.
3201         * sysdeps/generic/td_ta_map_lwp2thr.c: File removed.
3202         * sysdeps/i386/td_ta_map_lwp2thr.c: File removed.
3203         * sysdeps/ia64/td_ta_map_lwp2thr.c: File removed.
3204         * sysdeps/powerpc/td_ta_map_lwp2thr.c: File removed.
3205         * sysdeps/s390/td_ta_map_lwp2thr.c: File removed.
3206         * sysdeps/sh/td_ta_map_lwp2thr.c: File removed.
3207         * sysdeps/sparc/td_ta_map_lwp2thr.c: File removed.
3208         * sysdeps/x86_64/td_ta_map_lwp2thr.c: File removed.
3209
3210 2003-09-08  Ulrich Drepper  <drepper@redhat.com>
3211
3212         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Change type
3213         of pthread_t to be compatible with LT.
3214         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: Likewise.
3215         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
3216         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3217         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3218         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: Likewise.
3219         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
3220         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Likewise.
3221
3222 2003-09-04  Ulrich Drepper  <drepper@redhat.com>
3223
3224         * sysdeps/unix/sysv/linux/i386/not-cancel.h (fcntl_not_cancel): Define.
3225
3226 2003-09-04  Jakub Jelinek  <jakub@redhat.com>
3227
3228         * unwind-forcedunwind.c: Move to...
3229         * sysdeps/pthread/unwind-forcedunwind.c: ...here.
3230         (pthread_cancel_init): Use ARCH_CANCEL_INIT if defined.
3231         * sysdeps/pthread/jmpbuf-unwind.h: New file.
3232         * sysdeps/unix/sysv/linux/ia64/unwind-forcedunwind.c: New file.
3233         * sysdeps/unix/sysv/linux/ia64/jmpbuf-unwind.h: New file.
3234         * unwind.c: Include jmpbuf-unwind.h.
3235         (unwind_stop): Use _JMPBUF_CFA_UNWINDS macro.
3236
3237 2003-09-02  Jakub Jelinek  <jakub@redhat.com>
3238
3239         * sysdeps/unix/sysv/linux/ia64/bits/local_lim.h: New file.
3240         * sysdeps/unix/sysv/linux/ia64/Versions (libpthread): Export
3241         pthread_attr_setstack and pthread_attr_setstacksize @@GLIBC_2.3.3.
3242         * sysdeps/unix/sysv/linux/alpha/bits/local_lim.h: New file.
3243         * sysdeps/unix/sysv/linux/alpha/Versions: New file.
3244         * sysdeps/unix/sysv/linux/sparc/bits/local_lim.h: New file.
3245         * sysdeps/unix/sysv/linux/sparc/Versions: New file.
3246         * pthread_attr_setstack.c (__old_pthread_attr_setstack): New function.
3247         (pthread_attr_setstack): If PTHREAD_STACK_MIN != 16384, export
3248         as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.2.
3249         * pthread_attr_setstacksize.c (__old_pthread_attr_setstacksize): New
3250         function.
3251         (pthread_attr_setstacksize): If PTHREAD_STACK_MIN != 16384, export
3252         as @@GLIBC_2.3.2 and also export compatibility @GLIBC_2.1.
3253         * Makefile (tests): Add tst-stack2.
3254         * tst-stack2.c: New test.
3255         * tst-stack1.c: Include limits.h and sys/param.h.
3256         (do_test): Set size to MAX (4 * getpagesize (), PTHREAD_STACK_MIN).
3257
3258         * pthread_condattr_setpshared.c: Include errno.h.
3259         (pthread_condattr_setpshared): Return EINVAL if pshared
3260         is neither PTHREAD_PROCESS_PRIVATE nor PTHREAD_PROCESS_SHARED.
3261
3262         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO): Also
3263         defined symbol for entry point to avoid cancellation.
3264         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO):
3265         Likewise.
3266         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (PSEUDO):
3267         Likewise.
3268         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (PSEUDO):
3269         Likewise.
3270         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h (PSEUDO):
3271         Likewise.
3272         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h (PSEUDO):
3273         Likewise.
3274         * sysdeps/unix/sysv/linux/i386/not-cancel.h (__open_nocancel,
3275         __close_nocancel, __read_nocancel, __write_nocancel,
3276         __waitpid_nocancel): Add attribute_hidden.  If not in libc.so,
3277         libpthread.so or librt.so, define to corresponding function
3278         without _nocancel suffix.
3279         * sysdeps/unix/sysv/linux/s390/not-cancel.h: New file.
3280         * sysdeps/unix/sysv/linux/powerpc/not-cancel.h: New file.
3281         * sysdeps/unix/sysv/linux/sparc/not-cancel.h: New file.
3282
3283         * sysdeps/unix/sysv/linux/x86_64/not-cancel.h: Fix a typo.
3284
3285 2003-09-02  Ulrich Drepper  <drepper@redhat.com>
3286
3287         * sysdeps/unix/sysv/linux/i386/not-cancel.h: New file.
3288         * sysdeps/unix/sysv/linux/x86_64/not-cancel.h: New file.
3289
3290         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Make sure the code
3291         in subsections has a symbol associated with it.
3292
3293         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (PSEUDO): Also
3294         defined symbol for entry point to avoid cancellation.
3295         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (PSEUDO): Likewise.
3296
3297 2003-09-01  Jakub Jelinek  <jakub@redhat.com>
3298
3299         * Makefile (tests): Add tst-tls5.
3300         (module-names): Add tst-tls5mod{,a,b,c,d,e,f}.
3301         ($(objpfx)tst-tls5mod{,a,b,c,d,e,f}.so-no-z-defs): Set to yes.
3302         ($(objpfx)tst-tls5): New.
3303         ($(objpfx)tst-tls6.out): Likewise.
3304         (tests): Depend on $(objpfx)tst-tls6.out.
3305         * tst-tls3.c: Include stdint.h and pthreaddef.h.
3306         (do_test): Check pthread_self () return value alignment.
3307         * tst-tls3mod.c: Include stdint.h and pthreaddef.h.
3308         (tf): Check pthread_self () return value alignment.
3309         * tst-tls5.c: New test.
3310         * tst-tls5.h: New.
3311         * tst-tls5mod.c: New.
3312         * tst-tls5moda.c: New.
3313         * tst-tls5modb.c: New.
3314         * tst-tls5modc.c: New.
3315         * tst-tls5modd.c: New.
3316         * tst-tls5mode.c: New.
3317         * tst-tls5modf.c: New.
3318         * tst-tls6.sh: New test.
3319
3320         * sysdeps/pthread/pthread-functions.h (struct pthread_functions): Add
3321         ptr___pthread_cond_timedwait and ptr___pthread_cond_timedwait_2_0.
3322         * init.c (pthread_functions): Initialize them.
3323         * forward.c (pthread_cond_timedwait@GLIBC_2.0,
3324         pthread_cond_timedwait@@GLIBC_2.3.2): New forwards.
3325         * Versions (libc): Export pthread_cond_timedwait@GLIBC_2.0,
3326         pthread_cond_timedwait@@GLIBC_2.3.2.
3327
3328 2003-09-01  Jakub Jelinek  <jakub@redhat.com>
3329
3330         * sysdeps/unix/sysv/linux/alpha/timer_create.c: New file.
3331         * sysdeps/unix/sysv/linux/alpha/timer_delete.c: New file.
3332         * sysdeps/unix/sysv/linux/alpha/timer_getoverr.c: New file.
3333         * sysdeps/unix/sysv/linux/alpha/timer_gettime.c: New file.
3334         * sysdeps/unix/sysv/linux/alpha/timer_settime.c: New file.
3335         * sysdeps/unix/sysv/linux/alpha/Versions: New file.
3336
3337         * sysdeps/unix/sysv/linux/alpha/aio_cancel.c: New file.
3338
3339         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: Define
3340         _POSIX_THREAD_PRIORITY_SCHEDULING.
3341         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: Likewise.
3342
3343 2003-08-31  Ulrich Drepper  <drepper@redhat.com>
3344
3345         * sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock): Avoid
3346         nested function, use static inline function from libio.h.
3347         Code by Richard Henderson.
3348
3349         * sysdeps/pthread/bits/libc-lock.h: Mark pthread_setcancelstate as
3350         weak.
3351
3352 2003-08-30  Jakub Jelinek  <jakub@redhat.com>
3353
3354         * sysdeps/unix/sysv/linux/sparc/sparc64/Versions: New file.
3355         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_create.c: New file.
3356         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_delete.c: New file.
3357         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_getoverr.c: New file.
3358         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_gettime.c: New file.
3359         * sysdeps/unix/sysv/linux/sparc/sparc64/timer_settime.c: New file.
3360         * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h: New file.
3361         * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h: New file.
3362         * sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h: New file.
3363         * sysdeps/unix/sysv/linux/sparc/bits/semaphore.h: New file.
3364         * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: New file.
3365         * sysdeps/unix/sysv/linux/sparc/pthread_once.c: New file.
3366         * sysdeps/unix/sysv/linux/sparc/pt-vfork.S: New file.
3367         * sysdeps/unix/sysv/linux/sparc/fork.c: New file.
3368         * sysdeps/unix/sysv/linux/sparc/aio_cancel.c: New file.
3369         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_lock.c: New file.
3370         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_trylock.c: New file.
3371         * sysdeps/sparc/sparc32/sparcv9/pthread_spin_unlock.c: New file.
3372         * sysdeps/sparc/sparc32/pthread_spin_lock.c: New file.
3373         * sysdeps/sparc/sparc32/pthread_spin_trylock.c: New file.
3374         * sysdeps/sparc/sparc32/pthreaddef.h: New file.
3375         * sysdeps/sparc/sparc64/pthread_spin_lock.c: New file.
3376         * sysdeps/sparc/sparc64/pthread_spin_trylock.c: New file.
3377         * sysdeps/sparc/sparc64/pthread_spin_unlock.c: New file.
3378         * sysdeps/sparc/sparc64/pthreaddef.h: New file.
3379         * sysdeps/sparc/tls.h: New file.
3380         * sysdeps/sparc/tcb-offsets.sym: New file.
3381         * sysdeps/sparc/Makefile: New file.
3382         * sysdeps/sparc/td_ta_map_lwp2thr.c: New file.
3383         * init.c [__sparc__] (__NR_set_tid_address): Define.
3384
3385 2003-08-29  Jakub Jelinek  <jakub@redhat.com>
3386
3387         * sysdeps/pthread/bits/stdio-lock.h (_IO_acquire_lock,
3388         _IO_release_lock): Define.
3389
3390 2003-08-29  Jakub Jelinek  <jakuB@redhat.com>
3391
3392         * tst-cancel4.c (tf_sigwait, tf_sigwaitinfo, tf_sigtimedwait): Add
3393         sigemptyset before sigaddset.  Reported by jreiser@BitWagon.com.
3394
3395 2003-08-27  Ulrich Drepper  <drepper@redhat.com>
3396
3397         * sysdeps/pthread/pthread.h (pthread_exit): Remove __THROW.
3398         (__pthread_cleanup_class): Add missing return types of member
3399         functions.
3400
3401 2003-08-26  Steven Munroe <sjmunroe@us.ibm.com>
3402
3403         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
3404         (lll_mutex_unlock_force): Add memory barrier between store and futex
3405         syscall.
3406
3407 2003-08-25  Ulrich Drepper  <drepper@redhat.com>
3408
3409         * tst-cancel4.c (do_test): Also unlink tempfname and remove
3410         tempmsg in first loop.
3411
3412 2003-08-18  Ulrich Drepper  <drepper@redhat.com>
3413
3414         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
3415         _POSIX_THREAD_PRIORITY_SCHEDULING.
3416         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
3417
3418 2003-08-07  Jakub Jelinek  <jakub@redhat.com>
3419
3420         * sysdeps/pthread/bits/libc-lock.h [_LIBC && SHARED]
3421         (__rtld_lock_default_lock_recursive,
3422         __rtld_lock_default_unlock_recursive): Define.
3423         [_LIBC && SHARED] (__rtld_lock_lock_recursive,
3424         __rtld_lock_unlock_recursive): Define using
3425         GL(_dl_rtld_*lock_recursive).
3426         * init.c (__pthread_initialize_minimal_internal): Initialize
3427         _dl_rtld_lock_recursive and _dl_rtld_unlock_recursive.
3428         Lock GL(_dl_load_lock) the same number of times as
3429         GL(_dl_load_lock) using non-mt implementation was nested.
3430
3431         * pthreadP.h (__pthread_cleanup_upto): Add hidden_proto.
3432         * pt-longjmp.c (__pthread_cleanup_upto): Add hidden_def.
3433
3434 2003-08-06  Jakub Jelinek  <jakub@redhat.com>
3435
3436         * tst-cancel17.c (do_test): Make len2 maximum of page size and
3437         PIPE_BUF.
3438
3439 2003-08-07  Jakub Jelinek  <jakub@redhat.com>
3440
3441         * pthread_create.c (__pthread_create_2_0): Clear new_attr.cpuset.
3442
3443 2003-08-03  Jakub Jelinek  <jakub@redhat.com>
3444
3445         * sysdeps/pthread/createthread.c (do_clone): Move error handling
3446         to first syscall error check.  Move syscall error check for tkill
3447         into __ASSUME_CLONE_STOPPED #ifdef.
3448
3449 2003-08-02  Ulrich Drepper  <drepper@redhat.com>
3450
3451         * sysdeps/pthread/createthread.c (do_clone): If __ASSUME_CLONE_STOPPED
3452         is not defined, do explicit synchronization.
3453         (create_thread): Do not lock pd->lock here.  If __ASSUME_CLONE_STOPPED
3454         is not defined also unlock pd->lock for non-debugging case in case
3455         it is necessary.
3456         * pthread_create.c (start_thread): Always get and release pd->lock
3457         if __ASSUME_CLONE_STOPPED is not defined.
3458         (start_thread_debug): Removed.  Adjust users.
3459         * allocatestack.c (allocate_stack): Always initialize lock if
3460         __ASSUME_CLONE_STOPPED is not defined.
3461         * Makefile (tests): Add tst-sched1.
3462         * tst-sched1.c: New file.
3463
3464         * sysdeps/pthread/createthread.c (do_clone): Only use
3465         sched_setschduler and pass correct parameters.
3466
3467 2003-07-31  Jakub Jelinek  <jakub@redhat.com>
3468
3469         * sysdeps/pthread/pthread.h (pthread_attr_setstackaddr,
3470         pthread_attr_setstacksize): Change PTHREAD_STACK_SIZE to
3471         PTHREAD_STACK_MIN in comments.
3472
3473 2003-07-31  Jakub Jelinek  <jakub@redhat.com>
3474
3475         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
3476         Shut up warnings if INTERNAL_SYSCALL_ERROR_P does not use its first
3477         argument.
3478         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Likewise.
3479         * pthread_condattr_setclock.c (pthread_condattr_setclock): Likewise.
3480         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: Include pthreaddef.h.
3481         (__pthread_cleanup_upto): Fix prototype.
3482         (_longjmp_unwind): Adjust caller.
3483         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_mutex_timedlock):
3484         Change second argument to const struct pointer.
3485         * tst-sem8.c (main): Remove unused s2 and s3 variables.
3486         * tst-sem9.c (main): Likewise.
3487         * unwind.c: Include string.h for strlen prototype.
3488
3489 2003-07-31  Ulrich Drepper  <drepper@redhat.com>
3490
3491         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
3492         (__pthread_cond_timedwait): Don't use cmov unless HAVE_CMOV is defined.
3493         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S:
3494         Define HAVE_CMOV.
3495         Patch by Nicholas Miell <nmiell@attbi.com>.
3496
3497 2003-07-30  Jakub Jelinek  <jakub@redhat.com>
3498
3499         * init.c (__pthread_initialize_minimal_internal): Initialize
3500         GL(dl_init_static_tls).
3501         * pthreadP.h (__pthread_init_static_tls): New prototype.
3502         * allocatestack.c (init_one_static_tls, __pthread_init_static_tls):
3503         New functions.
3504         * Makefile (tests): Add tst-tls4.
3505         (modules-names): Add tst-tls4moda and tst-tls4modb.
3506         ($(objpfx)tst-tls4): Link against libdl and libpthread.
3507         ($(objpfx)tst-tls4.out): Depend on tst-tls4moda.so and
3508         tst-tls4modb.so.
3509         * tst-tls4.c: New file.
3510         * tst-tls4moda.c: New file.
3511         * tst-tls4modb.c: New file.
3512
3513 2003-06-19  Daniel Jacobowitz  <drow@mvista.com>
3514
3515         * sysdeps/pthread/timer_create.c (timer_create): Call timer_delref
3516         before __timer_dealloc.
3517         * sysdeps/pthread/timer_routines.c (__timer_thread_find_matching):
3518         Don't call list_unlink.
3519
3520 2003-07-29  Roland McGrath  <roland@redhat.com>
3521
3522         * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules).
3523
3524 2003-07-25  Jakub Jelinek  <jakub@redhat.com>
3525
3526         * tst-cancel17.c (do_test): Check if aio_cancel failed.
3527         Don't reuse struct aiocb A if it failed.
3528         Write fpathconf (fds[1], _PC_PIPE_BUF) + 2 bytes using aio_write,
3529         not just one byte, as that does not block.
3530
3531 2003-07-22  Jakub Jelinek  <jakub@redhat.com>
3532
3533         * sysdeps/pthread/unwind-resume.c: New file.
3534         * sysdeps/pthread/Makefile (routines, shared-only-routines): Add
3535         unwind-resume in csu subdir.
3536         (CFLAGS-unwind-resume.c, CFLAGS-rt-unwind-resume.c): Compile with
3537         exceptions.
3538         (librt-sysdep_routines, librt-shared-only-routines): Add
3539         rt-unwind-resume.
3540         * sysdeps/pthread/rt-unwind-resume.c: New file.
3541         * unwind-forcedunwind.c: New file.
3542         * Makefile (libpthread-routines): Add unwind-forcedunwind.
3543         (libpthread-shared-only-routines): Likewise.
3544         (CFLAGS-unwind-forcedunwind.c): Compile with exceptions.
3545         * pthreadP.h (pthread_cancel_init): New prototype.
3546         * pthread_cancel.c (pthread_cancel): Call pthread_cancel_init.
3547
3548         * sysdeps/pthread/createthread.c (do_thread, create_thread): Make
3549         attr argument const struct pthread_attr *.
3550
3551         * res.c (__res_state): Return __resp.
3552         * descr.h: Include resolv.h.
3553         (struct pthread): Add res field.
3554         * pthread_create.c: Include resolv.h.
3555         (start_thread): Initialize __resp.
3556         * Makefile (tests): Add tst-_res1.
3557         (module-names): Add tst-_res1mod1, tst-_res1mod2.
3558         ($(objpfx)tst-_res1mod2.so): Depend on $(objpfx)tst-_res1mod1.so.
3559         ($(objpfx)tst-_res1): Depend on $(objpfx)tst-_res1mod2.so and
3560         libpthread.
3561         * tst-_res1.c: New file.
3562         * tst-_res1mod1.c: New file.
3563         * tst-_res1mod2.c: New file.
3564
3565 2003-07-21  Ulrich Drepper  <drepper@redhat.com>
3566
3567         * sysdeps/pthread/createthread.c: Don't define CLONE_STOPPED.
3568
3569         * Makefile: Define various *-no-z-defs variables for test DSOs
3570         which has undefined symbols.
3571
3572 2003-07-21  Steven Munroe  <sjmunroe@us.ibm.com>
3573
3574         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c (__pthread_once):
3575         Retry if the stwcx fails to store once_control.
3576
3577 2003-07-20  Ulrich Drepper  <drepper@redhat.com>
3578
3579         * Makefile (libpthread-routines): Add pthread_attr_getaffinity and
3580         pthread_attr_setaffinity.
3581         * Versions [libpthread] (GLIBC_2.3.3): Likewise.
3582         * sysdeps/unix/sysv/linux/pthread_attr_getaffinity.c: New file.
3583         * sysdeps/unix/sysv/linux/pthread_attr_setaffinity.c: New file.
3584         * pthread_attr_destroy.c: Free cpuset element if allocated.
3585         * pthread_create.c: Pass iattr as additional parameter to
3586         create_thread.
3587         * sysdeps/pthread/createthread.c: If attribute is provided and
3588         a new thread is created with affinity set or scheduling parameters,
3589         start thread with CLONE_STOPPED.
3590         * sysdeps/pthread/pthread.h: Declare pthread_attr_getaffinity and
3591         pthread_attr_setaffinity.
3592         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_attr): Add
3593         cpuset element.
3594
3595 2003-07-15  Ulrich Drepper  <drepper@redhat.com>
3596
3597         * tst-tcancel-wrappers.sh: lseek and llseek are not cancelation points.
3598
3599 2003-07-14  Ulrich Drepper  <drepper@redhat.com>
3600
3601         * sysdeps/pthread/configure.in: Require CFI directives also for
3602         ppc and s390.
3603
3604 2003-07-15  Jakub Jelinek  <jakub@redhat.com>
3605
3606         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (PSEUDO):
3607         Add cfi directives.
3608
3609 2003-07-12  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
3610
3611         * sysdeps/sh/tcb-offsets.sym: Add RESULT, TID, CANCELHANDLING and
3612         CLEANUP_JMP_BUF.
3613         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Use more
3614         registers as variables.  Call __pthread_mutex_unlock_usercnt.
3615         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
3616         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Store TID
3617         not self pointer in __writer.  Compare with TID to determine
3618         deadlocks.
3619         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
3620         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S:
3621         Likewise.
3622         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S:
3623         Likewise.
3624         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Add cancellation support.
3625         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
3626         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Define all the nice
3627         macros also when compiling librt.
3628
3629 2003-07-11  Jakub Jelinek  <jakub@redhat.com>
3630
3631         * Makefile (CFLAGS-pthread_once.c): Add -fexceptions
3632         -fasynchronous-unwind-tables.
3633         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h
3634         (PSEUDO): Add cfi directives.
3635         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (PSEUDO):
3636         Likewise.
3637         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (PSEUDO):
3638         Likewise.
3639
3640 2003-07-08  Jakub Jelinek  <jakub@redhat.com>
3641
3642         * pthreadP.h (__pthread_unwind_next, __pthread_register_cancel,
3643         __pthread_unregister_cancel): Add prototypes and hidden_proto.
3644         * unwind.c (__pthread_unwind_next): Add hidden_def.
3645         * cleanup.c (__pthread_register_cancel, __pthread_unregister_cancel):
3646         Likewise.
3647         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (__new_sem_wait):
3648         Use HIDDEN_JUMPTARGET to jump to __pthread_unwind.
3649         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (sem_timedwait):
3650         Likewise.
3651         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S (sem_wait): Likewise.
3652         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait):
3653         Likewise.
3654         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once): Use
3655         HIDDEN_JUMPTARGET to call __pthread_register_cancel,
3656         __pthread_unregister_cancel and __pthread_unwind_next.
3657
3658 2003-07-04  Jakub Jelinek  <jakub@redhat.com>
3659
3660         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Use
3661         different symbol for the cancellation syscall wrapper and
3662         non-cancellation syscall wrapper.
3663         (PSEUDO_END): Define.
3664
3665 2003-07-05  Richard Henderson  <rth@redhat.com>
3666
3667         * sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.
3668         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_futex_wait,
3669         lll_futex_timed_wait, lll_futex_wake, lll_futex_requeue): On success
3670         return actual return value from the syscall, not 0.
3671
3672 2003-07-07  Ulrich Drepper  <drepper@redhat.com>
3673
3674         * descr.h (struct pthread): Add pid field.
3675         * allocatestack.c (allocate_stack): Initialize pid field in descriptor.
3676         (__reclaim_stacks): Likewise.
3677         * init.c (sigcancel_handler): If __ASSUME_CORRECT_SI_PID is defined
3678         also check for PID of the signal source.
3679         (__pthread_initialize_minimal_internal): Also initialize pid field
3680         of initial thread's descriptor.
3681         * pthread_cancel.c: Use tgkill instead of tkill if possible.
3682         * sysdeps/unix/sysv/linux/fork.c: Likewise.
3683         * sysdeps/unix/sysv/linux/pt-raise.c: Likewise.
3684         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
3685         * sysdeps/unix/sysv/linux/raise.c: Likewise.
3686
3687 2003-07-05  Ulrich Drepper  <drepper@redhat.com>
3688
3689         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_push): Renamed.
3690         Fix use of parameter.
3691         (__libc_cleanup_pop): Likewise.
3692
3693 2003-07-04  Ulrich Drepper  <drepper@redhat.com>
3694
3695         * init.c (sigcancel_handler): Change parameters to match handler
3696         for SA_SIGACTION.  Check signal number and code to recognize
3697         invalid invocations.
3698
3699 2003-07-03  Roland McGrath  <roland@redhat.com>
3700
3701         * sysdeps/ia64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr):
3702         Apply sizeof (struct pthread) bias to r13 value.
3703
3704 2003-07-03  Ulrich Drepper  <drepper@redhat.com>
3705
3706         * sysdeps/pthread/configure.in: Require CFI directives.
3707
3708         * sysdeps/pthread/librt-cancellation.c (__pthread_unwind): Remove
3709         definition.
3710         * pthreadP.h (__pthread_unwind): Add hidden_proto if used in
3711         libpthread compilation.
3712         * unwind.c (__pthread_unwind): Add hidden_def.
3713         * Versions (libpthread) [GLIBC_PRIVATE]: Add __pthread_unwind.
3714
3715 2003-07-01  Ulrich Drepper  <drepper@redhat.com>
3716
3717         * libc-cancellation.c (__libc_cleanup_routine): Define.
3718         * sysdeps/pthread/bits/libc-lock.h (__pthread_cleanup_push): Define.
3719         (__pthread_cleanup_pop): Define.
3720
3721 2003-07-01  Richard Henderson  <rth@redhat.com>
3722
3723         * sysdeps/alpha/elf/pt-initfini.c: New file.
3724         * sysdeps/alpha/pthread_spin_lock.S: New file.
3725         * sysdeps/alpha/pthread_spin_trylock.S: New file.
3726         * sysdeps/alpha/pthreaddef.h: New file.
3727         * sysdeps/alpha/td_ta_map_lwp2thr.c: New file.
3728         * sysdeps/alpha/tls.h: New file.
3729         * sysdeps/unix/sysv/linux/alpha/Makefile: New file.
3730         * sysdeps/unix/sysv/linux/alpha/bits/pthreadtypes.h: New file.
3731         * sysdeps/unix/sysv/linux/alpha/bits/semaphore.h: New file.
3732         * sysdeps/unix/sysv/linux/alpha/createthread.c: New file.
3733         * sysdeps/unix/sysv/linux/alpha/fork.c: New file.
3734         * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: New file.
3735         * sysdeps/unix/sysv/linux/alpha/pt-vfork.S: New file.
3736         * sysdeps/unix/sysv/linux/alpha/pthread_once.c: New file.
3737         * sysdeps/unix/sysv/linux/alpha/sem_post.c: New file.
3738         * sysdeps/unix/sysv/linux/alpha/sysdep-cancel.h: New file.
3739
3740 2003-07-01  Ulrich Drepper  <drepper@redhat.com>
3741
3742         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Add correct
3743         cleanup support and unwind info.
3744
3745 2003-06-30  Ulrich Drepper  <drepper@redhat.com>
3746
3747         * sysdeps/unix/sysv/linux/i386/pthread_once.S (__pthread_once):
3748         Use correct cleanup handler registration.  Add unwind info.
3749         * sysdeps/unix/sysv/linux/unwindbuf.sym: New file.
3750         * sysdeps/unix/sysv/linux/Makefile: Add rule to build unwindbuf.h.
3751         * tst-once3.c: Add cleanup handler and check it is called.
3752         * tst-once4.c: Likewise.
3753         * tst-oncex3.c: New file.
3754         * tst-oncex4.c: New file.
3755         * Makefile: Add rules to build and run tst-oncex3 and tst-oncex4.
3756
3757 2003-06-29  Ulrich Drepper  <drepper@redhat.com>
3758
3759         * sysdeps/pthread/configure.in: Check for C cleanup handling in gcc.
3760
3761 2003-06-27  Ulrich Drepper  <drepper@redhat.com>
3762
3763         * tst-cancel4.c (tf_msgrcv): Use IPC_PRIVATE in msgget call.
3764         (tf_msgsnd): Likewise.
3765
3766         * tst-cancel4.c (tf_msgrcv): Strengthen test against valid
3767         premature returns a bit more.
3768
3769 2003-06-26  Ulrich Drepper  <drepper@redhat.com>
3770
3771         * sysdeps/pthread/librt-cancellation.c: Move __pthread_unwind
3772         definition to the front.
3773
3774         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Rename
3775         the cleanup functions to make the names unique.  Fix dwarf opcode
3776         un unwind table.
3777         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Rename cleanup
3778         functions to make the names unique.  Fix CFA offset for two blocks.
3779
3780 2003-06-25  Ulrich Drepper  <drepper@redhat.com>
3781
3782         * sysdeps/pthread/pthread.h (class __pthread_cleanup_class): Add
3783         missing closing braces.
3784         Patch by Christophe Saout <christophe@saout.de>.
3785
3786 2003-06-24  Roland McGrath  <roland@redhat.com>
3787
3788         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Typo fix.
3789
3790 2003-06-24  Ulrich Drepper  <drepper@redhat.com>
3791
3792         * sysdeps/unix/sysv/linux/ia64/bits/posix_opt.h: New file.
3793         * sysdeps/unix/sysv/linux/x86_64/bits/posix_opt.h: New file.
3794
3795         * pthreadP.h: Declare __find_thread_by_id.
3796         * allocatestack.c [HP_TIMING_AVAIL]: Define __find_thread_by_id.
3797         * pthread_clock_gettime.c: Allow using other thread's clock.
3798         * pthread_clock_settime.c: Likewise.
3799         * sysdeps/pthread/pthread_getcpuclockid.c: Likewise.
3800         * Makefile: Add rules to build and run tst-clock2.
3801         * tst-clock2.c: New file.
3802
3803 2003-06-23  Ulrich Drepper  <drepper@redhat.com>
3804
3805         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Rewrite
3806         to use exception-based cleanup handler.
3807         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
3808
3809         * tst-cond8.c (ch): Announce that we are done.
3810
3811         * pthreadP.h (__pthread_mutex_cond_lock): Mark with internal_function.
3812
3813         * tst-cancel17.c (tf): Retry aio_suspend in case of EINTR.
3814         Also test aio_suspend with timeout value.
3815
3816 2003-06-22  Ulrich Drepper  <drepper@redhat.com>
3817
3818         * pthreadP.h: Mark __pthread_mutex_unlock_usercnt also hidden.
3819         * pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Add
3820         attribute_hidden.
3821
3822         * pthreadP.h (__pthread_mutex_init_internal): Mark hidden.
3823         (__pthread_mutex_lock_internal): Likewise.
3824         (__pthread_mutex_unlock_internal): Likewise.
3825         (__pthread_mutex_unlock_usercnt): Declare.
3826         * pthread_mutex_destroy.c: Always fail if used in any way.
3827         * pthread_mutex_init.c: Update comment.
3828         * pthread_mutex_lock.c: If NO_INCR is not defined adjust __nusers.
3829         * pthread_mutex_timedlock.c: Adjust __nusers.
3830         * pthread_mutex_trylock.c: Adjust __nusers.
3831         * pthread_mutex_unlock.c: Old code is in __pthread_mutex_unlock_usercnt
3832         and public interfaces are wrapper with pass additional parameter.
3833         __pthread_mutex_unlock_usercnt does not adjust __nusers if second
3834         parameter zero.
3835         * tst-mutex8.c: New file.
3836         * Makefile (tests): Add tst-mutex8.
3837         * sysdeps/pthread/pthread_cond_timedwait.c: Call
3838         __pthread_mutex_unlock_usercnt.
3839         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
3840         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
3841         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
3842         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
3843         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
3844         * sysdeps/unix/sysv/linux/pthread_mutex_cond_lock.c: Define NO_INCR.
3845         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
3846         Add __nusers.
3847         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
3848         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3849         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3850         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
3851         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3852
3853         * pthread_mutex_lock.c: Don't store THREAD_ID in __owner, use TID.
3854         * pthread_mutex_timedlock.c: Likewise.
3855         * pthread_mutex_trylock.c: Adjust __nusers.
3856         * pthread_mutex_unlock.c: Compare with TID not THREAD_ID.
3857         * tst-mutex9.c: New file.
3858         * Makefile (tests): Add tst-mutex9.
3859         * sysdeps/i386/tls.h: Remove THREAD_ID definition.
3860         * sysdeps/ia64/tls.h: Likewise.
3861         * sysdeps/powerpc/tls.h: Likewise.
3862         * sysdeps/s390/tls.h: Likewise.
3863         * sysdeps/sh/tls.h: Likewise.
3864         * sysdeps/x86_64/tls.h: Likewise.
3865         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_mutex_t):
3866         Change type of __owner.
3867         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
3868         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
3869         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
3870         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
3871         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
3872
3873 2003-06-19  Jakub Jelinek  <jakub@redhat.com>
3874
3875         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Move to...
3876         * sysdeps/unix/sysv/linux/sem_post.c: ...here.
3877
3878         * sysdeps/unix/sysv/linux/sem_post.c: Move to...
3879         * sysdeps/unix/sysv/linux/powerpc/sem_post.c: ... here.  Pass nr + 1
3880         instead of nr to lll_futex_wake.  Only set errno and return -1
3881         if err < 0.
3882
3883         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (lll_futex_wait,
3884         lll_futex_timed_wait, lll_futex_wake, lll_futex_requeue): On success
3885         return actual return value from the syscall, not 0.
3886
3887 2003-06-18  Ulrich Drepper  <drepper@redhat.com>
3888
3889         * tst-cancel4.c (tf_msgsnd): Don't always use 100 as the type,
3890         find a random value.
3891         (tf_msgrcv): Likewise.  Also don't report msgrcv returns if
3892         errno==EIDRM.
3893
3894         * sysdeps/unix/sysv/linux/timer_settime.c: Add prototype for
3895         compat_timer_settime.
3896         * sysdeps/unix/sysv/linux/timer_gettime.c: Add prototype for
3897         compat_timer_gettime.
3898         * sysdeps/unix/sysv/linux/timer_getoverr.c: Add prototype for
3899         compat_timer_getoverrun.
3900         * sysdeps/unix/sysv/linux/timer_delete.c: Add prototype for
3901         compat_timer_delete.
3902
3903         * pthread_mutex_destroy.c (__pthread_mutex_destroy): For
3904         error-checking mutex detect busy mutexes.
3905
3906 2003-06-17  Ulrich Drepper  <drepper@redhat.com>
3907
3908         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_mutex_lock):
3909         Add ax to clobber list.
3910         (lll_mutex_cond_lock): Likewise.
3911         (lll_mutex_unlock): Likewise.
3912         (lll_lock): Likewise.
3913         (lll_unlock): Likewise.
3914
3915         * Makefile: Add rules to build and run tst-cancel18 and tst-cancelx18.
3916         * tst-cancel18.c: New file.
3917         * tst-cancelx18.c: New file.
3918
3919         * tst-cancel4.c: Test connect, creat, msgrcv, msgsnd, sendmsg, sendto,
3920         and tcdrain.
3921
3922         * Makefile: Add rules to build and run tst-cancel17 and tst-cancel17x.
3923         * tst-cancel17.c: New file.
3924         * tst-cancelx17.c: New file.
3925
3926         * sysdeps/unix/sysv/linux/sigtimedwait.c: New file.
3927         * sysdeps/unix/sysv/linux/sigwait.c: New file.
3928         * sysdeps/unix/sysv/linux/sigwaitinfo.c: New file.
3929
3930         * tst-cancel4.c: Test open, close, pread, pwrite, fsync, and msync.
3931
3932 2003-06-16  Jakub Jelinek  <jakub@redhat.com>
3933
3934         * sysdeps/pthread/createthread.c (create_thread): Set
3935         header.multiple_threads unconditionally.
3936         * allocatestack.c (allocate_stack): Likewise.
3937         * descr.h (struct pthread): Add header.multiple_threads
3938         unconditionally.
3939         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (CENABLE, CDISABLE):
3940         Define for librt.  #error if neither libpthread, libc nor librt.
3941         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (CENABLE, CDISABLE):
3942         Likewise.
3943         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h (CENABLE,
3944         CDISABLE): Likewise.
3945         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h (CENABLE,
3946         CDISABLE): Likewise.
3947         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h (CENABLE,
3948         CDISABLE): Likewise.
3949         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h (CENABLE,
3950         CDISABLE): Likewise.  Access header.multiple_threads outside of
3951         libc and libpthread.
3952         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (CENABLE, CDISABLE):
3953         Likewise.
3954         * sysdeps/x86_64/tls.h (tcbhead_t): Add multiple_threads.
3955         * sysdeps/x86_64/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Define.
3956
3957 2003-06-17  Ulrich Drepper  <drepper@redhat.com>
3958
3959         * tst-cancel4.c: Add tests for the socket and signal functions, pause.
3960         Also test early cancellation before the thread reaches the cancellation
3961         point.
3962
3963         * Makefile: Compile forward.c with exceptions.
3964
3965         * sysdeps/unix/sysv/linux/sleep.c: New file.
3966
3967 2003-06-16  Ulrich Drepper  <drepper@redhat.com>
3968
3969         * Makefile: Add CFLAGS definition to compile function wrappers
3970         duplicated from libc with exceptions.
3971         * tst-cancel4.c: Also check cancellation handlers.
3972
3973         * Makefile: Add rules to build and run tst-cancel16 and
3974         tst-cancelx16.  Add missing CFLAGS definitions.
3975         * tst-cancel16.c: New file.
3976         * tst-cancelx16.c: New file.
3977
3978 2003-06-15  Ulrich Drepper  <drepper@redhat.com>
3979
3980         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
3981         (DL_SYSINFO_IMPLEMENTATION): Use CFI opcodes.
3982         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
3983         (DL_SYSINFO_IMPLEMENTATION): Likewise.
3984
3985         * pthreadP.h (LIBC_CANCEL_ASYNC): Also define for librt.
3986         (LIBC_CANCEL_RESET): Likewise.
3987         Declare __librt_enable_asynccancel and __librt_disable_asynccancel.
3988         * sysdeps/pthread/Makefile (librt-sysdep_routines): Add
3989         librt-cancellation.
3990         (CFLAGS-libcrt-cancellation.c): Define.
3991         * sysdeps/pthread/librt-cancellation.c: New file.
3992         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define all the nice
3993         macros also when compiling librt.
3994         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: Likewise.
3995         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: Likewise.
3996         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: Likewise.
3997         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: Likewise.
3998         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: Likewise.
3999         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: Likewise.
4000         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
4001
4002         * sysdeps/unix/sysv/linux/timer_create.c: Add prototype for
4003         compat_timer_create.
4004
4005 2003-06-14  Ulrich Drepper  <drepper@redhat.com>
4006
4007         * sysdeps/pthread/posix-timer.h (timespec_compare): Always inline.
4008
4009         * sysdeps/unix/sysv/linux/fork.h: Add libc_hidden_proto for
4010         __register_atfork.
4011         * sysdeps/unix/sysv/linux/register-atfork.c (__register_atfork):
4012         Add libc_hidden_def.
4013
4014 2003-06-13  Roland McGrath  <roland@redhat.com>
4015
4016         * sysdeps/x86_64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Pass FS
4017         constant from <sys/reg.h> to ps_get_thread_area, not register contents.
4018
4019 2003-06-11  Ulrich Drepper  <drepper@redhat.com>
4020
4021         * allocatestack.c (queue_stack): Always inline.
4022         * ptreadhP.h (__do_cancel): Likewise.
4023
4024 2003-06-10  Jakub Jelinek  <jakub@redhat.com>
4025
4026         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait): Fix
4027         a typo.
4028
4029 2003-06-10  Ulrich Drepper  <drepper@redhat.com>
4030
4031         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
4032         (__pthread_cond_signal): Remove incorrect second addition for
4033         cond_lock!=0.
4034
4035 2003-06-09  Ulrich Drepper  <drepper@redhat.com>
4036
4037         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
4038         (__pthread_cond_signal): Use correct futex pointer in
4039         __lll_mutex_lock_wait call.
4040
4041         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
4042         (__pthread_cond_signal): Some more tweaks to handle cond_lock!=0.
4043
4044 2003-06-08  Ulrich Drepper  <drepper@redhat.com>
4045
4046         * sysdeps/unix/sysv/linux/s390/sem_wait.c (__new_sem_wait): Make
4047         cancelable.
4048         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait):
4049         Likewise.
4050
4051         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Remove
4052         hand-written CFI generation code.  Since ENTRY/END also initiated
4053         CFI frames this caused two CFI sets to be generated.
4054
4055 2003-06-07  Ulrich Drepper  <drepper@redhat.com>
4056
4057         * cleanup_routine.c: New file.
4058         * Versions (libpthread) [GLIBC_2.3.3]: Add __pthread_cleanup_routine.
4059         * sysdeps/pthread/pthread.h: Add support for fully exception-based
4060         cleanup handling.
4061         * Makefile (libpthread-routines): Add cleanup_routine.
4062         Add more CFLAGS variables to compile with exceptions.  Add comments
4063         why which file needs unwind tables.
4064         (tests) [have-forced-unwind==yes]: Add tst-cancelx* and tst-cleanupx*
4065         tests.
4066         * tst-cancelx1.c: New file.
4067         * tst-cancelx2.c: New file.
4068         * tst-cancelx3.c: New file.
4069         * tst-cancelx4.c: New file.
4070         * tst-cancelx5.c: New file.
4071         * tst-cancelx6.c: New file.
4072         * tst-cancelx7.c: New file.
4073         * tst-cancelx8.c: New file.
4074         * tst-cancelx9.c: New file.
4075         * tst-cancelx10.c: New file.
4076         * tst-cancelx11.c: New file.
4077         * tst-cancelx12.c: New file.
4078         * tst-cancelx13.c: New file.
4079         * tst-cancelx14.c: New file.
4080         * tst-cancelx15.c: New file.
4081         * tst-cleanupx0.c: New file.
4082         * tst-cleanupx0.expect: New file.
4083         * tst-cleanupx1.c: New file.
4084         * tst-cleanupx2.c: New file.
4085         * tst-cleanupx3.c: New file.
4086
4087         * tst-cleanup0.c: Make standard compliant.
4088         * tst-cleanup1.c: Likewise.
4089
4090         * sysdeps/unix/sysv/linux/sem_timedwait.c: Add cancellation support.
4091         * sysdeps/unix/sysv/linux/sem_wait.c: Likewise.
4092         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
4093         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
4094         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
4095         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
4096         * sysdeps/i386/tcb-offsets.sym: Add RESULT, CANCELHANDLING, and
4097         CLEANUP_JMP_BUF.
4098         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
4099         * tst-cancel12.c: New file.
4100         * tst-cancel13.c: New file.
4101         * tst-cancel14.c: New file.
4102         * tst-cancel15.c: New file.
4103         * Makefile (tests): Add tst-cancel12, tst-cancel13, tst-cancel14,
4104         and tst-cancel15.
4105
4106         * tst-cancel1.c: Add some comments.
4107
4108         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Compute relative
4109         timeout correctly.
4110
4111 2003-06-06  Ulrich Drepper  <drepper@redhat.com>
4112
4113         * Makefile (CFLAGS-pthread_cancel.c): Define.
4114
4115 2003-06-05  Ulrich Drepper  <drepper@redhat.com>
4116
4117         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_rwlock_t):
4118         Change type of __writer element to int.
4119         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4120         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
4121         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
4122         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
4123         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
4124         * sysdeps/i386/tcb-offsets.sym: Replace SELF entry with TID entry.
4125         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
4126         * pthread_rwlock_trywrlock.c: Store TID not self pointer in __writer.
4127         Compare with TID to determine deadlocks.
4128         * sysdeps/pthread/pthread_rwlock_rdlock.c: Likewise.
4129         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
4130         * sysdeps/pthread/pthread_rwlock_timedwrlock.: Likewise.
4131         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
4132         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
4133         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
4134         Likewise.
4135         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
4136         Likewise.
4137         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
4138         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
4139         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
4140         Likewise.
4141         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
4142         Likewise.
4143         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
4144         * Makefile (tests): Add tst-rwlock12.
4145         * tst-rwlock12.c: New file.
4146
4147 2003-06-05  Jakub Jelinek  <jakub@redhat.com>
4148
4149         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait,
4150         __lll_timedlock_wait, lll_unlock_wake_cb, __lll_timedwait_tid):
4151         Remove bogus hidden_proto.
4152         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c (___lll_lock):
4153         Likewise.
4154         * sysdeps/unix/sysv/linux/s390/lowlevellock.c (___lll_lock,
4155         lll_unlock_wake_cb, ___lll_timedwait_tid): Likewise.
4156         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c (___lll_mutex_lock,
4157         ___lll_mutex_timedlock): Likewise.
4158
4159 2003-06-04  Ulrich Drepper  <drepper@redhat.com>
4160
4161         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
4162         (__pthread_cond_signal): Add some code to eventually handle
4163         cond_lock!=0.
4164
4165 2003-06-01  Ulrich Drepper  <drepper@redhat.com>
4166
4167         * Makefile (tests): Add tst-exec4.
4168         (tst-exec4-ARGS): Define.
4169         * tst-exec4.c: New file.
4170
4171 2003-05-31  Ulrich Drepper  <drepper@redhat.com>
4172
4173         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
4174         Also fail if tv_nsec < 0.
4175         (__lll_timedwait_tid): Likewise.
4176         * sysdeps/unix/sysv/linux/sem_timedwait.c (sem_timedwait): Likewise.
4177         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_timedwait_tid):
4178         Likewise.
4179         * sysdeps/unix/sysv/linux/s390/lowlevellock.c (___lll_timedwait_tid):
4180         Likewise.
4181         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c (__lll_mutex_timedlock):
4182         Likewise.
4183         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c (sem_timedwait):
4184         Likewise.
4185         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_timedwait_tid):
4186         Likewise.
4187         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (lll_timedwait_tid):
4188         Likewise.
4189
4190         * Makefile (tests): Add tst-sem8 and tst-sem9.
4191         * tst-sem8.c: New file.
4192         * tst-sem9.c: New file.
4193         * sem_open.c: Fix creation of in_use record if the file exists but
4194         no internal record.
4195
4196         * posix-timer.h: Remove old, unused timer_id2ptr and timer_ptr2id
4197         definitions.
4198
4199         * sysdeps/pthread/timer_create.c (timer_create): In case
4200         evp==NULL, assign timer ID to sival_ptr.
4201
4202         * descr.h (struct pthread_unwind_buf): Change type of prev element to
4203         struct pthread_unwind_buf *.
4204         (struct pthread): Likewise for cleanup_jmp_buf element.
4205
4206         * cleanup.c (__pthread_register_cancel): Add cast to avoid warning.
4207         * cleanup_defer.c (__pthread_register_cancel_defer): Likewise.
4208         * unwind.c (__pthread_unwind_next): Likewise.
4209
4210 2003-05-30  Ulrich Drepper  <drepper@redhat.com>
4211
4212         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
4213         (lll_futex_timed_wait): Use int for futex value parameter.
4214         (lll_futex_wake): Likewise.
4215         (lll_futex_requeue): Likewise.
4216
4217         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait):
4218         Replace one memory operation with one register operation.
4219
4220         * tst-join4.c (do_test): Fix error message.
4221
4222         * tst-rwlock6.c (do_test): Use correct format specifier.
4223
4224         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
4225         (__lll_mutex_lock_wait): Replace one memory operation with one
4226         register operation.
4227         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S
4228         (__lll_mutex_lock_wait): Likewise.
4229
4230         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
4231         (__lll_mutex_cond_lock): Add one to value parameter of
4232         __lll_lock_wait to reflect reality in the futex syscall.
4233         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
4234         (lll_mutex_cond_lock): Likewise.
4235
4236 2003-05-30  Jakub Jelinek  <jakub@redhat.com>
4237
4238         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_mutex_cond_lock):
4239         New function.
4240         (lll_mutex_cond_lock): Define.
4241
4242 2003-05-29  Ulrich Drepper  <drepper@redhat.com>
4243
4244         * Makefile (tests): Add tst-signal6.
4245         * tst-signal6.c: New file.
4246
4247         * sysdeps/unix/sysv/linux/s390/lowlevellock.h
4248         (__lll_mutex_unlock_force): New function
4249         (lll_mutex_unlock_force): Use __lll_mutex_unlock_force.
4250
4251         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
4252         (__lll_mutex_unlock_force): New function.
4253         (lll_mutex_unlock_force): Use __lll_mutex_unlock_force.
4254
4255         * tst-rwlock7.c (do_test): Use correct format specifier.
4256
4257         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_requeue):
4258         Find break parameter in correct asm argument.
4259
4260 2003-05-27  Jakub Jelinek  <jakub@redhat.com>
4261
4262         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_clobbers):
4263         Remove out4.
4264         (lll_futex_requeue): Fix __o3 constraint, return negative errno if
4265         error occured.
4266         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
4267         Add __mutex.
4268         * sysdeps/unix/sysv/linux/s390/lowlevellock.h (FUTEX_REQUEUE,
4269         lll_futex_requeue, lll_mutex_unlock_force): Define.
4270
4271 2003-05-30  Jakub Jelinek  <jakub@redhat.com>
4272
4273         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
4274         (pthread_cond_t): Add __mutex.
4275         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (FUTEX_REQUEUE,
4276         lll_futex_requeue, lll_mutex_unlock_force): Define.
4277
4278 2003-05-28  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4279
4280         * sysdeps/sh/tcb-offsets.sym: Define MUTEX_FUTEX.
4281         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h (pthread_cond_t):
4282         Add __mutex field.
4283         * sysdeps/unix/sysv/linux/sh/lowlevellock.h (SYSCALL_WITH_INST_PAD):
4284         Define.
4285         (lll_futex_wait, lll_futex_wake): Define.
4286         * sysdeps/unix/sysv/linux/sh/sh4/lowlevellock.h: New file.
4287         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: Try using
4288         FUTEX_REQUEUE instead of FUTEX_WAIT.
4289         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: Likewise.
4290         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Remember
4291         mutex which was used in condvar structure.  Call
4292         __pthread_mutex_cond_lock instead of __pthread_mutex_lock_internal.
4293         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Likewise.
4294
4295         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Don't
4296         include tcb-offsets.h.  Read wakeup value in locked region.
4297         Use the value of gbr register as THREAD_ID.
4298         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
4299         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
4300         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
4301
4302         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Remove futex related
4303         macros.
4304
4305 2003-05-28  Ulrich Drepper  <drepper@redhat.com>
4306
4307         * sysdeps/pthread/pthread_cond_broadcast.c
4308         (__pthread_cond_broadcast): Fix typo: MAX_INT -> INT_MAX.
4309
4310 2003-05-26  Ulrich Drepper  <drepper@redhat.com>
4311
4312         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Fix
4313         typo in register name.
4314         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Use parameters
4315         correctly.  Actually use requeue.  Little optimization.
4316         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Store
4317         mutex address early.  Handle cancellation state as 32-bit value.
4318         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
4319         Remove unnecessary label.
4320
4321 2003-05-25  Ulrich Drepper  <drepper@redhat.com>
4322
4323         * sysdeps/pthread/pthread_cond_broadcast.c: Try using FUTEX_REQUEUE
4324         instead of FUTEX_WAIT.
4325         * sysdeps/pthread/pthread_cond_signal.c: Likewise.
4326         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
4327         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
4328         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: Likewise.
4329         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
4330         * sysdeps/pthread/pthread_cond_timedwait.c: Remember mutex which was
4331         used in condvar structure.  Call __pthread_mutex_cond_lock instead
4332         of __pthread_mutex_lock_internal.
4333         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
4334         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4335         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
4336         (__condvar_cleanup): Always call __pthread_mutex_cond_lock.
4337         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
4338         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
4339         * sysdeps/unix/sysv/linux/Makefile (libpthread-sysdep_routines):
4340         Add pthread_mutex_cond_lock.
4341         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add dep_mutex.
4342         * sysdeps/unix/sysv/linux/pthread_cond_mutex_lock.c: New file.
4343         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define
4344         lll_mutex_cond_lock.
4345         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise.
4346         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
4347         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
4348         Add __mutex field.
4349         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4350         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
4351
4352         * sysdeps/i386/tcb-offsets.sym: Define MUTEX_FUTEX.
4353         * sysdeps/x86_64/tcb-offsets.sym: Likewise.
4354
4355         * pthreadP.h: Declare __pthread_mutex_cond_lock.
4356         * pthread_mutex_lock.c: Define LLL_MUTEX_LOCK if not already defined.
4357         Use it instead of lll_mutex_lock.  If __pthread_mutex_lock is a
4358         macro don't define aliases.
4359
4360         * cancellation.c: Remove __pthread_enable_asynccancel_2.
4361         * pthreadP.h: Remove declaration of __pthread_enable_asynccancel_2.
4362         * sysdeps/pthread/pthread_cond_timedwait.c: Use
4363         __pthread_enable_asynccancel instead of __pthread_enable_asynccancel_2.
4364         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
4365         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4366         * sysdeps/pthread/pthread_cond_wait.c: Likewise.
4367         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
4368         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
4369
4370 2003-05-17  Ulrich Drepper  <drepper@redhat.com>
4371
4372         * sem_open.c: Fix one endless loop.  Implement correct semantics
4373         wrt opening the same semaphore more then once.
4374         * sem_close.c: Adjust for sem_open change.
4375         * semaphoreP.h: Include <semaphore.h>.  Define struct inuse_sem.
4376         Declare __sem_mappings, __sem_mappings_lock, __sem_search.
4377         * Makefile (tests): Add tst-sem7.
4378         * tst-sem7.c: New file.
4379
4380 2003-05-16  Roland McGrath  <roland@redhat.com>
4381
4382         * sysdeps/unix/sysv/linux/register-atfork.c (libc_freeres_fn): Fix
4383         uninitialized variable braino.
4384
4385 2003-05-16  Ulrich Drepper  <drepper@redhat.com>
4386
4387         * sysdeps/unix/sysv/linux/timer_gettime.c (timer_gettime): Correct
4388         test for syscall availability.
4389
4390         * sysdeps/unix/sysv/linux/timer_settime.c (timer_settime): Set
4391         __no_posix_timers to -1 if the syscalls don't exist.
4392
4393         * pthread_join.c (pthread_join): Set tid field of the joined
4394         thread to -1.  This isn't necessary but helps to recognize some
4395         error conditions with almost no cost.
4396
4397         * allocatestack.c (FREE_P): Also negative values indicate an
4398         unused stack.
4399
4400         * unwind.c: Include <unistd.h>.
4401
4402 2003-05-14  Ulrich Drepper  <drepper@redhat.com>
4403
4404         * Makefile ($(objpfx)$(multidir)): Add rule to create the directory.
4405
4406 2003-05-14  Jakub Jelinek  <jakub@redhat.com>
4407
4408         * Makefile (crti-objs, crtn-objs): New variables.
4409         (omit-deps, extra-objs): Add crtn.
4410         ($(objpfx)libpthread.so): Depend on both crti and crtn
4411         and links to them in multidir.
4412         ($(objpfx)crtn.S, $(objpfx)crtn.o): New rules.
4413
4414 2003-05-12  Steven Munroe  <sjmunroe@us.ibm.com>
4415
4416         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
4417         (lll_mutex_unlock): Use atomic_exchange_rel.
4418
4419 2003-05-11  Ulrich Drepper  <drepper@redhat.com>
4420
4421         * cond-perf.c (cons): Add missing locking around setting of alldone.
4422
4423 2003-05-10  Ulrich Drepper  <drepper@redhat.com>
4424
4425         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Remove futex
4426         related macros.
4427         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
4428
4429 2003-05-09  Ulrich Drepper  <drepper@redhat.com>
4430
4431         * tst-sem6.c: New file.
4432         * Makefile (tests): Add tst-sem6.
4433
4434         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (___lll_mutex_unlock):
4435         Use atomic_exchange_rel instead of atomic_exchange.
4436         * sysdeps/unix/sysv/linux/lowlevellock.c (lll_unlock_wake_cb):
4437         Likewise.
4438
4439         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Improve quality of
4440         code for lll_futex_wait and lll_futex_wake in static apps.  Use
4441         vsyscall is possible.
4442
4443         * sysdeps/unix/sysv/linux/pthread_getaffinity.c: New file.
4444         * sysdeps/unix/sysv/linux/pthread_setaffinity.c: New file.
4445         * sysdeps/pthread/pthread.h: Declare pthread_getaffinity_np and
4446         pthread_setaffinity_np.
4447         * Versions [libpthread] (GLIBC_2.3.3): Add pthread_getaffinity_np
4448         and pthread_setaffinity_np.
4449         * Makefile (libpthread-routines): Add pthread_getaffinity and
4450         pthread_setaffinity.
4451
4452         * allocatestack.c (allocate_stack): If ARCH_RETRY_MMAP is defined,
4453         use it in case mmap to allocate the stack fails.
4454         * sysdeps/unix/sysv/linux/x86_64/Makefile: Don't define
4455         ARCH_MAP_FLAGS here.
4456         * sysdeps/x86_64/pthreaddef.h: Define ARCH_MAP_FLAGS and
4457         ARCH_RETRY_MMAP.
4458
4459 2003-05-08  Ulrich Drepper  <drepper@redhat.com>
4460
4461         * sysdeps/unix/sysv/linux/fork.c: Complete rewrite of the atfork
4462         handler implementation.  It is now lockless in fork().
4463         * sysdeps/unix/sysv/linux/register-atfork.c: Likewise.
4464         * sysdeps/unix/sysv/linux/unregister-atfork.c: Likewise.
4465         * sysdeps/unix/sysv/linux/fork.h: Don't include <link.h>.  Don't
4466         declare the __fork_*_lists.
4467         (struct fork_handler): Include pointers to all three functions.
4468         Add next, refcntr and need_signal elements.
4469         (__fork_handlers): New declaration.
4470         (__register_atfork_malloc): Remove declaration.
4471         (HAVE_register_atfork_malloc): Remove definition.
4472         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Remove
4473         __pthread_child_handler variable.
4474         (__libc_pthread_init): Use __register_atfork instead of explicitly
4475         adding to the list.
4476         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Define lll_futex_wait
4477         and lll_futex_wake.
4478         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
4479
4480         * unwind.c (unwind_cleanup): Print error message and then abort.  This
4481         function must never be reached.
4482
4483         * cond-perf.c: New file.
4484
4485 2003-05-05  Ulrich Drepper  <drepper@redhat.com>
4486
4487         * sysdeps/i386/tls.h (TLS_INIT_TP): Include \n in error message.
4488
4489 2003-05-04  Roland McGrath  <roland@redhat.com>
4490
4491         * Makefile ($(objpfx)../libc.so): New target.
4492
4493 2003-05-02  Ulrich Drepper  <drepper@redhat.com>
4494
4495         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
4496         (pthread_condattr_t): Size is only an int, don't use long for
4497         alignment.
4498         (pthread_mutexattr_t): Likewise.
4499         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
4500         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
4501         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
4502
4503 2003-05-01  Ulrich Drepper  <drepper@redhat.com>
4504
4505         * sysdeps/i386/tls.h: Define THREAD_ID.
4506         * sysdeps/ia64/tls.h: Likewise.
4507         * sysdeps/powerpc/tls.h: Likewise.
4508         * sysdeps/s390/tls.h: Likewise.
4509         * sysdeps/sh/tls.h: Likewise.
4510         * sysdeps/x86_64/tls.h: Likewise.
4511         * pthread_mutex_lock.c: Use THREAD_ID instead of THREAD_SELF to
4512         record ownership.
4513         * pthread_mutex_timedlock.c: Likewise.
4514         * pthread_mutex_trylock.c: Likewise.
4515         * pthread_mutex_unlock.c: Likewise.
4516         * pthread_rwlock_trywrlock.c: Likewise.
4517         * sysdeps/pthread/pthread_rwlocklock_rdlock.c: Likewise.
4518         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
4519         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
4520         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
4521
4522         * sysdeps/pthread/createthread.c (create_thread): Use CLONE_SYSVSEM
4523         flag.
4524
4525 2003-04-29  Jakub Jelinek  <jakub@redhat.com>
4526
4527         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
4528         (__SIZEOF_PTHREAD_COND_T): Define to 48.
4529         (pthread_rwlock_t): Add 16 bytes of pad instead of 8 before __flags.
4530         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h (pthread_cond_t):
4531         Make __align long long instead of long.
4532         (pthread_rwlock_t): Formatting.
4533         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h
4534         (pthread_rwlock_t): Formatting.
4535         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
4536         (pthread_cond_t): Make __align long long instead of long.
4537         (pthread_rwlock_t): Move __flags field to the same position as in
4538         linuxthreads.
4539
4540 2003-04-30  Ulrich Drepper  <drepper@redhat.com>
4541
4542         * tst-rwlock6.c (do_test): Use correct printf format specifiers.
4543         * tst-rwlock7.c (do_test): Likewise.
4544
4545 2003-04-26  Roland McGrath  <roland@redhat.com>
4546
4547         * Makefile ($(test-modules)): Depend on $(common-objpfx)shlib.lds.
4548
4549 2003-04-22  Jakub Jelinek  <jakub@redhat.com>
4550
4551         * allocatestack.c (TLS_TPADJ): Add TLS_PRE_TCB_SIZE instead of
4552         sizeof (struct pthread).
4553         (allocate_stack): Subtract TLS_PRE_TCB_SIZE bytes instead of
4554         1 struct pthread.
4555         * sysdeps/powerpc/tls.h (TLS_INIT_TCB_SIZE, TLS_TCB_SIZE): Define
4556         to 0.
4557         (TLS_INIT_TCB_ALIGN, TLS_TCB_ALIGN): Define to alignment of
4558         struct pthread.
4559         (TLS_PRE_TCB_SIZE): Increase to cover tcbhead_t preceeded by pad
4560         to 32-bit bytes.
4561         (INSTALL_DTV, GET_DTV, THREAD_DTV): tcbhead_t is immediately before
4562         tcbp.
4563         (TLS_INIT_TP, THREAD_SELF, INIT_THREAD_SELF): Don't add TLS_TCB_SIZE
4564         unneccessarily.
4565         (NO_TLS_OFFSET): Define.
4566         * sysdeps/unix/sysv/linux/powerpc/createthread.c (TLS_VALUE): Don't
4567         add TLS_TCB_SIZE unnecessarily.
4568
4569 2003-04-22  Roland McGrath  <roland@redhat.com>
4570
4571         * Makeconfig (shared-thread-library): Reverse link order to work
4572         around linker bug.
4573
4574 2003-04-22  Ulrich Drepper  <drepper@redhat.com>
4575
4576         * semaphore.h: Fix typo in comment.
4577
4578 2003-04-21  Ulrich Drepper  <drepper@redhat.com>
4579
4580         * sysdeps/pthread/sigfillset.c: New file.
4581
4582         * init.c (__pthread_initialize_minimal): Don't block SIGTIMER.
4583         * pthreadP.h: Make SIGTIMER and SIGCANCEL the same.
4584         * sysdeps/pthread/pthread_sigmask.c: Remove handling of SIGTIMER.
4585         * sysdeps/pthread/sigaction.c: Likewise.
4586         * sysdeps/pthread/sigprocmask.c: New file.
4587         * sysdeps/unix/sysv/linux/allocrtsig.c (current_rtmin): Define as
4588         __SIGRTMIN+1.
4589         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
4590         Block SIGTIMER.  Also handle SI_TKILL events and terminate thread
4591         in this case.
4592
4593 2003-04-19  Ulrich Drepper  <drepper@redhat.com>
4594
4595         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
4596         (DL_SYSINFO_IMPLEMENTATION): Add .eh_frame information.
4597
4598         * sysdeps/unix/sysv/linux/unregister-atfork.c
4599         (__unregister_atfork): Don't free memory not allocated dynamically.
4600
4601         * semaphore.h: Remove __THROW marker from cancellation points.
4602         * nptl/sysdeps/pthread/pthread.h: Likewise.
4603
4604 2003-04-18  Ulrich Drepper  <drepper@redhat.com>
4605
4606         * sysdeps/pthread/pthread.h: Don't mark pthread_testcancel,
4607         pthread_cancel, pthread_setcancelstate, and pthread_setcanceltype with
4608         __THROW.
4609
4610 2003-04-16  Jakub Jelinek  <jakub@redhat.com>
4611
4612         * tst-cancel4.c (do_test): Use %zd instead of %d when printing cnt.
4613
4614 2003-04-15  Roland McGrath  <roland@redhat.com>
4615
4616         * forward.c (__pthread_unwind): Tweak to avoid warning.
4617
4618 2003-04-15  Ulrich Drepper  <drepper@redhat.com>
4619
4620         * pthreadP.h: Move THREAD_ATOMIC_* replacements to the top.
4621
4622 2003-04-14  Ulrich Drepper  <drepper@redhat.com>
4623
4624         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Don't
4625         overflow CFA advance instructions.
4626         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4627
4628 2003-04-14  Jakub Jelinek  <jakub@redhat.com>
4629
4630         * sysdeps/i386/tls.h: Rename LOCK to LOCK_PREFIX.
4631         * sysdeps/i386/pthread_spin_lock.c: Likewise.
4632         * sysdeps/x86_64/tls.h: Likewise.  Define LOCK_PREFIX if not already
4633         defined.
4634
4635         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Use
4636         DW_CFA_advance_loc2 for .Laddl-.Lsubl.
4637         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use
4638         DW_CFA_advance_loc for .Laddl-.Lsubl.
4639
4640 2003-04-13  Ulrich Drepper  <drepper@redhat.com>
4641
4642         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Don't use
4643         position-independent unwind data for static libraries.
4644         Add missing unwind info.  Add comments.
4645
4646         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Add unwind info.
4647         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
4648         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
4649         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
4650
4651 2003-04-12  Ulrich Drepper  <drepper@redhat.com>
4652
4653         * Makefile: Make sure all cancellation points are compiled with
4654         exception and asynchronous unwind tables.
4655
4656         * sysdeps/x86_64/tls.h (THREAD_SETMEM): Word around compiler bug
4657         which mishandles loading of global object addresses in PIC.
4658         (THREAD_SETMEM_NC): Likewise.
4659
4660 2003-04-11  Ulrich Drepper  <drepper@redhat.com>
4661
4662         * pthread.h: Define new data structure for cleanup buffer.  Declare
4663         new cleanup handler interfaces.
4664         * descr.h: Include <unwind.h> if necessary.  Define pthread_unwind_buf.
4665         (struct pthread): Add cleanup_jmp_buf pointer.  Define
4666         HAVE_CLEANUP_JMP_BUF and not HAVE_CANCELBUF.
4667         * pthreadP.h: Declare __pthread_unwind.  Define __do_cancel to use
4668         it.  Declare old cleanup handler installation functions.
4669         * cleanup.c: Rewrite.  Install handler for unwind-based cleanup
4670         handling.
4671         * cleanup_defer.c: Likewise.
4672         * cleanup_compat.c: New file.  Old cleanup code.
4673         * cleanup_def_compat.c: New file.  Old cleanup code.
4674         * pthread_create.c (start_thread): Initialize cleanup_jmp_buf element
4675         if own thread descriptor.
4676         * unwind.c: New file.
4677         * forward.c: Add __pthread_unwind.
4678         * init.c (pthread_functions): Add __pthread_unwind.
4679         * sysdeps/pthread/pthread-functions.s (struct pthread_functions):
4680         Add ptr___pthread_unwind.
4681         * Versions [GLIBC_2.3.3] (libpthread): Export new cleanup handling
4682         and unwind function.
4683         * Makefile (libpthread-routines): Add cleanup_compat,
4684         cleanup_def_compat, and unwind.  Define CFLAGS to enable unwind
4685         table generation if necessary.
4686         * version.c: Record whether unwind support is compiled in.
4687         * sysdeps/pthread/configure.in: Add checks for unwind unterfaces.
4688         * sysdeps/pthread/bits/libc-lock.h: Add prototypes of the old cleanup
4689         handler interfaces.
4690         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Add quite a bit of
4691         complication to generate unwind information for syscall wrappers.
4692         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: Likewise.
4693         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Define
4694         __cleanup_fct_attribute.
4695
4696         * Makefile: Add rules to build and run tst-cleanup0.
4697         * tst-cleanup0.c: New file.
4698         * tst-cleanup0.expect: New file.
4699
4700         * pthread_create.c (deallocate_tsd): Don't take parameter.  Adjust
4701         caller.  Optimize to avoid often unecessary local variable.
4702
4703 2003-04-11  Roland McGrath  <roland@redhat.com>
4704
4705         * Makefile ($(objpfx)multidir.mk): New target, generated makefile that
4706         sets variable `multidir'; include that.
4707         (generated): Add it.
4708         ($(objpfx)$(multidir)/crti.o): New target.
4709         [$(multidir) != .] (generated-dirs, extra-objs, omit-deps): Add it.
4710
4711 2003-04-11  Ulrich Drepper  <drepper@redhat.com>
4712
4713         * tst-attr2.c (do_test): Add cast to avoid warning.
4714         * tst-mutex4.c (do_test): Likewise.
4715
4716 2003-04-10  Ulrich Drepper  <drepper@redhat.com>
4717
4718         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Reset CPU clocks
4719         in child.
4720
4721 2003-04-09  Ulrich Drepper  <drepper@redhat.com>
4722
4723         * Makefile (tests): Add tst-detach1.
4724         * tst-detach1.c: New file.
4725
4726 2003-04-08  Ulrich Drepper  <drepper@redhat.com>
4727
4728         * sysdeps/pthread/pthread.h: Remove duplicate
4729         pthread_cleanup_{push,pop} definitions.
4730
4731         * tst-barrier2.c: Eliminate warnings.
4732         * tst-cancel4.c: Likewise.
4733         * tst-cond4.c: Likewise.
4734         * tst-cond6.c: Likewise.
4735         * tst-detach1.c: Likewise.
4736         * tst-rwlock4.c: Likewise.
4737         * tst-rwlock6.c: Likewise.
4738         * tst-rwlock7.c: Likewise.
4739         * tst-sem3.c: Likewise.
4740         * tst-spin2.c: Likewise.
4741         * tst-umask1.c: Likewise.
4742
4743 2003-04-07  Ulrich Drepper  <drepper@redhat.com>
4744
4745         * pthread_detach.c (pthread_detach): Fix test for invalid TID.
4746
4747 2003-04-06  Ulrich Drepper  <drepper@redhat.com>
4748
4749         * descr.h (struct pthread): Move cancelhandling member to the front.
4750
4751 2003-04-05  Ulrich Drepper  <drepper@redhat.com>
4752
4753         * sysdeps/unix/sysv/linux/register-atfork.c: Define malloc_prepare,
4754         malloc_parent, and malloc_child statically.
4755         (__register_atfork_malloc): New function.
4756         (free_mem): Don't free any of the malloc_* variables on the list.
4757         * sysdeps/unix/sysv/linux/fork.h: Declare __register_atfork_malloc.
4758         Define HAVE_register_atfork_malloc.
4759
4760 2003-04-04  Ulrich Drepper  <drepper@redhat.com>
4761
4762         * sysdeps/pthread/createthread.c (create_thread): Add some more
4763         comments explaining when to set multiple_threads and when not.
4764
4765         * pthreadP.h: Define THREAD_ATOMIC_CMPXCHG_VAL and
4766         THREAD_ATOMIC_BIT_SET if not already defined.
4767         * sysdeps/i386/tls.h: Define THREAD_ATOMIC_CMPXCHG_VAL and
4768         THREAD_ATOMIC_BIT_SET:
4769         * sysdeps/x86_64/tls.h: Likewise.
4770         * cleanup_defer.c (_pthread_cleanup_push_defer): Rewrite to use
4771         THREAD_ATOMIC_CMPXCHG_VAL.
4772         (_pthread_cleanup_pop_restore): Likewise.
4773         * cancellation.c (__pthread_enable_asynccancel): Likewise.
4774         (__pthread_enable_asynccancel_2): Likewise.
4775         (__pthread_disable_asynccancel): Likewise.
4776         * libc-cancellation.c (__libc_enable_asynccancel): Likewise.
4777         (__libc_disable_asynccancel): Likewise.
4778         * init.c (sigcancel_handler): Likewise.
4779         * pthread_setcancelstate.c (__pthread_setcancelstate): Likewise.
4780         * pthread_setcanceltype.c (__pthread_setcanceltype): Likewise.
4781
4782 2003-04-03  Ulrich Drepper  <drepper@redhat.com>
4783
4784         * init.c (sigcancel_handler): Don't set EXITING_BIT here.
4785         * libc-cancellation.c (__libc_enable_asynccancel): Likewise.
4786         * pthreadP.h (__do_cancel): Set EXITING_BIT here.
4787         * Makefile (tests): Add tst-cancel11.
4788         * tst-cancel11.c: New file.
4789
4790 2003-04-01  Ulrich Drepper  <drepper@redhat.com>
4791
4792         * pthread_create.c (deallocate_tsd): Clear/free memory after the last
4793         round, not the first.  Use specific_used flag instead of local
4794         found_nonzero variable.  Use THREAD_[SG]ETMEM where possible.
4795         (__free_tcb): Don't call deallocate_tsd here.
4796         (start_thread): Call deallocate_tsd here.
4797         * pthread_setspecific.c: Set specific_used flag really only when
4798         needed.
4799         * Makefile (tests): Add tst-tsd3.c and tst-tsd4.
4800         * tst-tsd3.c: New file.
4801         * tst-tsd4.c: New file.
4802
4803 2003-03-31  Ulrich Drepper  <drepper@redhat.com>
4804
4805         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_mutex_lock):
4806         Use atomic_exchange_and_add instead of __lll_add.
4807         (__lll_mutex_timedlock): Likewise.
4808         Patch by Ian Wienand.
4809
4810 2003-03-24  Steven Munroe  <sjmunroe@us.ibm.com>
4811
4812         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
4813         (SINGLE_THREAD_P): Fix typo.
4814         * tst-cancel-wrappers.sh: Handle '.'ed symbols.
4815
4816 2003-03-31  Ulrich Drepper  <drepper@redhat.com>
4817
4818         * Makefile (tests): Add tst-align.
4819         * tst-align.c: New file.
4820         * sysdeps/i386/Makefile: Define CFLAGS-tst-align.
4821
4822         * sysdeps/i386/tls.h (CALL_THREAD_FCT): Align stack of called
4823         function correctly.
4824
4825         * tst-tsd2.c: Add casts to avoid warnings.
4826
4827 2003-03-30  Ulrich Drepper  <drepper@redhat.com>
4828
4829         * descr.h (struct pthread): Move most often used elements to the front.
4830
4831 2003-03-29  Ulrich Drepper  <drepper@redhat.com>
4832
4833         * Makefile (libpthread-routines): Add pthread_atfork.
4834         (libpthread-static-only-routines): Add pthread_atfork.
4835
4836 2003-03-28  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
4837
4838         * sysdeps/sh/tls.h: Include nptl/descr.h after the definition
4839         of TLS_DTV_AT_TP.
4840         (INSTALL_DTV): Add parens.
4841         (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM, THREAD_SETMEM_NC):
4842         Use passed descr instead of THREAD_SELF.
4843         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S
4844         (__lll_mutex_timedlock_wait): Correct expected value after
4845         spurious wakeup.
4846         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S:
4847         Release lock before waking up the waiters.
4848         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Correct exit
4849         criteria.  Reorderstruct passed to cleanup handler.  Fix
4850         handling of cancellation and failung pthread_mutex_unlock call.
4851         Use __pthread_enable_asynccancel_2 instead of
4852         __pthread_enable_asynccancel.
4853         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
4854         Return result of lock re-get if it fails.
4855         * sysdeps/unix/sysv/linux/sh/pthread_once.S: Fix wrong argument
4856         for __pthread_cleanup_push.
4857         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Fix
4858         completely broken rwlock implementation.
4859         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
4860         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
4861         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
4862         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
4863         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
4864         * sysdeps/unix/sysv/linux/sh/sem_post.S: Fix error value.  Use
4865         versioned_symbol macro.
4866         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Use versioned_symbol macro.
4867         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
4868
4869 2003-03-27  Ulrich Drepper  <drepper@redhat.com>
4870
4871         * sysdeps/unix/sysv/linux/kernel-posix-timers.h: Don't declare
4872         __timer_helper_thread.  Declare __start_helper_thread, __helper_once,
4873         and __helper_tid.
4874         (struct timer): Remove th and bar field.
4875         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Remove
4876         debugging code.  Create only one helper thread.
4877         * sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Don't kill
4878         helper thread.
4879         * sysdeps/unix/sysv/linux/timer_routines.c (timer_helper_thread):
4880         Renamed.  Define statically.  Use thread info from siginfo.
4881         (__helper_once): New variable.
4882         (__helper_tid): New variable.
4883         (__reset_helper_control): New function.
4884         (__start_helper_thread): New function.
4885
4886         * pthread_create.c (start_thread): Don't use setjmp inside
4887         __builtin_expect to work around gcc bug.
4888
4889         * sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Even if
4890         timer_delete syscall fails, but not with ENOSYS, set
4891         __no_posix_timers.
4892
4893         * sysdeps/unix/sysv/linux/timer_settime.c [!__ASSUME_POSIX_TIMERS]
4894         (timer_settime): Fix typo.
4895         * sysdeps/unix/sysv/linux/timer_getoverr.c
4896         [!__ASSUME_POSIX_TIMERS] (timer_getoverrun): Likewise.
4897
4898 2003-03-27  Jakub Jelinek  <jakub@redhat.com>
4899
4900         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Fix
4901         offset of cleanupbuf.__prev.
4902
4903 2003-03-26  Jakub Jelinek  <jakub@redhat.com>
4904
4905         * sysdeps/unix/sysv/linux/timer_getoverr.c: Fix typo in name
4906         of included file.
4907
4908 2003-03-26  Ulrich Drepper  <drepper@redhat.com>
4909
4910         * sysdeps/unix/sysv/linux/timer_create.c (timer_create): If EVP ==
4911         NULL provide default definition to syscall.
4912
4913 2003-03-25  Roland McGrath  <roland@redhat.com>
4914
4915         * sysdeps/pthread/posix-timer.h (TIMER_MAX): Define if not defined.
4916         (timer_id2ptr): Fix typo.
4917
4918 2003-03-25  Ulrich Drepper  <drepper@redhat.com>
4919
4920         * pthreadP.h: Define SIGCANCEL and SIGTIMER.
4921         * sysdeps/i386/pthreaddef.h: Remove SIGCANCEL definition.
4922         * sysdeps/ia64/pthreaddef.h: Likewise.
4923         * sysdeps/powerpc/pthreaddef.h: Likewise.
4924         * sysdeps/s390/pthreaddef.h: Likewise.
4925         * sysdeps/sh/pthreaddef.h: Likewise.
4926         * sysdeps/x86_64/pthreaddef.h: Likewise.
4927         * init.c (__pthread_initialize_minimal): Block SIGTIMER.
4928         * sysdeps/pthread/sigaction.c: Also prevent SIGTIMER handler from
4929         being changed.
4930         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Make sure
4931         SIGTIMER is not unblocked.
4932         * sysdeps/unix/sysv/linux/allocrtsig.c (current_rtmin): One more
4933         RT signal taken.
4934         * sysdeps/unix/sysv/linux/pthread_kill.c: Do not allow SIGTIMER to
4935         be send.
4936         * sysdeps/pthread/posix-timer.h (timer_id2ptr, timer_ptr2id): Just
4937         pass pointer through as ID.
4938         * sysdeps/unix/sysv/linux/bits/local_lim.h (TIMER_MAX): Removed.
4939         * sysdeps/unix/sysv/linux/kernel-posix-timers.h: New file.
4940         * sysdeps/unix/sysv/linux/timer_create.c: New file.
4941         * sysdeps/unix/sysv/linux/timer_delete.c: New file.
4942         * sysdeps/unix/sysv/linux/timer_getoverr.c: New file.
4943         * sysdeps/unix/sysv/linux/timer_gettime.c: New file.
4944         * sysdeps/unix/sysv/linux/timer_routines.c: New file.
4945         * sysdeps/unix/sysv/linux/timer_settime.c: New file.
4946         * sysdeps/unix/sysv/linux/ia64/Versions: New file.
4947         * sysdeps/unix/sysv/linux/ia64/timer_create.c: New file.
4948         * sysdeps/unix/sysv/linux/ia64/timer_delete.c: New file.
4949         * sysdeps/unix/sysv/linux/ia64/timer_getoverr.c: New file.
4950         * sysdeps/unix/sysv/linux/ia64/timer_gettime.c: New file.
4951         * sysdeps/unix/sysv/linux/ia64/timer_settime.c: New file.
4952         * sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: New file.
4953         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_create.c: New file.
4954         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_delete.c: New file.
4955         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_getoverr.c: New file.
4956         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_gettime.c: New file.
4957         * sysdeps/unix/sysv/linux/powerpc/powerpc64/timer_settime.c: New file.
4958         * sysdeps/unix/sysv/linux/s390/s390-64/Versions: New file.
4959         * sysdeps/unix/sysv/linux/s390/s390-64/timer_create.c: New file.
4960         * sysdeps/unix/sysv/linux/s390/s390-64/timer_delete.c: New file.
4961         * sysdeps/unix/sysv/linux/s390/s390-64/timer_getoverr.c: New file.
4962         * sysdeps/unix/sysv/linux/s390/s390-64/timer_gettime.c: New file.
4963         * sysdeps/unix/sysv/linux/s390/s390-64/timer_settime.c: New file.
4964         * sysdeps/unix/sysv/linux/x86_64/Versions: New file.
4965         * sysdeps/unix/sysv/linux/x86_64/compat-timer.h: New file.
4966         * sysdeps/unix/sysv/linux/x86_64/timer_create.c: New file.
4967         * sysdeps/unix/sysv/linux/x86_64/timer_delete.c: New file.
4968         * sysdeps/unix/sysv/linux/x86_64/timer_getoverr.c: New file.
4969         * sysdeps/unix/sysv/linux/x86_64/timer_gettime.c: New file.
4970         * sysdeps/unix/sysv/linux/x86_64/timer_settime.c: New file.
4971
4972         * pthreadP.h: Remove FRAME_LEFT definition.
4973         * cleanup.c (_pthread_cleanup_push): Don't check for reference to
4974         already left frame.  Programs which have this problem are not POSIX
4975         compliant.
4976         * cleanup_defer.c (_pthread_cleanup_push_defer): Likewise.
4977
4978 2003-03-24  Ulrich Drepper  <drepper@redhat.com>
4979
4980         * sysdeps/pthread/tst-timer.c: Check return values of the
4981         functions we test.
4982
4983 2003-03-23  Roland McGrath  <roland@redhat.com>
4984
4985         * tst-tls3.c (do_test) [! HAVE___THREAD]: Don't test anything.
4986         * tst-tls3mod.c: Likewise.
4987         * tst-tls1.c: Likewise.
4988         * tst-tls2.c: Likewise.
4989
4990         * tst-mutex5.c (do_test): Unlock before destroy, otherwise we invoke
4991         undefined behavior.
4992
4993         * tst-join5.c (tf1, tf2): Add a cast.
4994
4995         * Makeconfig (includes): Append -I$(..)nptl to this variable.
4996
4997         * tst-barrier2.c (do_test) [! _POSIX_THREAD_PROCESS_SHARED]:
4998         Don't test anything.
4999         * tst-cond4.c: Likewise.
5000         * tst-cond6.c: Likewise.
5001         * tst-flock2.c: Likewise.
5002         * tst-mutex4.c: Likewise.
5003         * tst-rwlock4.c: Likewise.
5004         * tst-signal1.c: Likewise.
5005         * tst-spin2.c: Likewise.
5006         * tst-cond11.c [! _POSIX_CLOCK_SELECTION]: Likewise.
5007
5008         * tst-mutex4.c: Use test-skeleton.c.
5009         * tst-spin2.c: Likewise.
5010         * tst-sysconf.c: Likewise.
5011         * tst-barrier2.c: Likewise.
5012         * tst-cond4.c: Likewise.
5013         * tst-cond6.c: Likewise.
5014         * tst-rwlock4.c: Likewise.
5015         * tst-unload.c: Likewise.
5016         * tst-flock2.c (do_test): Use return instead of exit.
5017
5018 2003-03-22  Jakub Jelinek  <jakub@redhat.com>
5019
5020         * sysdeps/unix/sysv/linux/fork.c (__fork): Add libc_hidden_def.
5021
5022 2003-03-21  Ulrich Drepper  <drepper@redhat.com>
5023
5024         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h
5025         (__lll_mutex_trylock): Use atomic_compare_and_exchange_val_acq
5026         instead of __lll_compare_and_swap.
5027         * sysdeps/unix/sysv/linux/ia64/pthread_once.c (__pthread_once):
5028         Likewise.
5029         Removed definition if __lll_compare_and_swap.
5030
5031         * cancellation.c: Adjust for new form of compare&exchange macros.
5032         * cleanup_defer.c: Likewise.
5033         * init.c: Likewise.
5034         * libc-cancellation.c: Likewise.
5035         * old_pthread_cond_broadcast.c: Likewise.
5036         * old_pthread_cond_signal.c: Likewise.
5037         * old_pthread_cond_timedwait.c: Likewise.
5038         * old_pthread_cond_wait.c: Likewise.
5039         * pthread_cancel.c: Likewise.
5040         * pthread_create.c: Likewise.
5041         * pthread_detach.c: Likewise.
5042         * pthread_join.c: Likewise.
5043         * pthread_key_delete.c: Likewise.
5044         * pthread_setcancelstate.c: Likewise.
5045         * pthread_setcanceltype.c: Likewise.
5046         * pthread_timedjoin.c: Likewise.
5047         * pthread_tryjoin.c: Likewise.
5048         * sysdeps/pthread/createthread.c: Likewise.
5049
5050 2003-03-20  Ulrich Drepper  <drepper@redhat.com>
5051
5052         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Include <atomic.h>.
5053         Remove __lll_add, __lll_dec_if_positive, and __lll_test_and_set
5054         definitions.  Replace uses with calls to atomic_* functions.
5055         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
5056         * sysdeps/unix/sysv/linux/lowlevellock.c: Replace __lll_add and
5057         __lll_test_and_set calls with atomic_exchange_and_add and
5058         atomic_exchange calls respectively.
5059         * sysdeps/unix/sysv/linux/sem_post.c: Likewise.
5060         * sysdeps/unix/sysv/linux/sem_timedwait.c: Likewise.
5061         * sysdeps/unix/sysv/linux/sem_trywait.c: Likewise.
5062         * sysdeps/unix/sysv/linux/sem_wait.c: Likewise.
5063         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: Likewise.
5064         * sysdeps/unix/sysv/linux/ia64/sem_port.c: Likewise.
5065         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c: Likewise.
5066
5067         * allocatestack.c (allocate_stack): Assume atomic_exchange_and_add
5068         returns the old value.
5069
5070 2003-03-20  Martin Schwidefsky  <sky@mschwid3.boeblingen.de.ibm.com>
5071
5072         * sysdeps/s390/pthread_spin_lock.c (pthread_spin_lock): Use type
5073         int for variable OLDVAL and correct inline assembler contraint.
5074         * sysdeps/s390/pthread_spin_trylock.c (pthread_spin_trylock): Use
5075         type int for variable OLD.
5076
5077         * sysdeps/s390/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define it
5078         only for s390-32.
5079         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
5080         (SINGLE_THREAD_P): Use global variable __local_multiple_threads
5081         instead of multiple_threads field in the TCB.
5082
5083 2003-03-19  Ulrich Drepper  <drepper@redhat.com>
5084
5085         * sysdeps/i386/i686/bits/atomic.h: Removed.
5086         * sysdeps/i386/i586/bits/atomic.h: Removed.
5087         * sysdeps/i386/i486/bits/atomic.h: Removed.  Moved to glibc.
5088         * sysdeps/x86_64/bits/atomic.h: Removed.  Moved to glibc.
5089         * sysdeps/s390/bits/atomic.h: Removed.  Moved to glibc.
5090         * sysdeps/sh/bits/atomic.h: Removed.  Moved to glibc.
5091         * sysdeps/ia64/bits/atomic.h: Removed.  Moved to glibc.
5092         * sysdeps/powerpc/bits/atomic.h: Removed.  Moved to glibc.
5093         * atomic.h: Removed.  Moved to glibc.
5094
5095         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Add
5096         support for clock selection.
5097
5098         * sysdeps/pthread/pthread_cond_broadcast.c: Release lock before
5099         signalling waiters.
5100
5101 2003-03-18  Roland McGrath  <roland@redhat.com>
5102
5103         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_test_and_set):
5104         Add __lll_rel_instr first.  Add memory clobber.
5105         (lll_mutex_unlock): Use __lll_test_and_set.
5106         From Paul Mackerras <paulus@samba.org>.
5107
5108         * sysdeps/powerpc/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define
5109         unconditionally.
5110         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
5111         (SINGLE_THREAD_P):  Add `header.' prefix.
5112         From Paul Mackerras <paulus@samba.org>.
5113
5114         * Versions (libpthread: GLIBC_2.3.2): Move pthread_tryjoin_np and
5115         pthread_timedjoin_np to ...
5116         (libpthread: GLIBC_2.3.3): ... here.
5117         (libpthread: GLIBC_2.2): Move pthread_barrierattr_getpshared there too.
5118
5119         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
5120         Avoid shadowing VAL variable.
5121
5122         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h (__lll_test_and_set):
5123         New macro.
5124
5125 2003-03-18  Ulrich Drepper  <drepper@redhat.com>
5126
5127         * Makefile (tests): Add tst-cond11.
5128         * tst-cond11.c: New file.
5129
5130         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Reorder
5131         struct passed to cleanup handler to eliminate one more
5132         instruction.
5133         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5134
5135         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
5136         (pthrad_cond_t): Replace __unused field with __clock.
5137
5138         * sysdeps/pthread/pthread_cond_wait.c: Release condvar lock before
5139         waken all waiters in cleanup handler.
5140         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
5141         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
5142
5143         * pthread_condattr_getclock.c: New file.
5144         * pthread_condattr_setclock.c: New file.
5145         * sysdeps/pthread/pthread.h: Declare these new functions.
5146         * Versions [GLIBC_2.3.3] (libpthread): Add the new functions.
5147         * Makefile (libpthread-routines): Add the new functions.
5148         * sysdeps/unix/sysv/linux/internaltypes.h (struct pthread_condattr):
5149         Renamed field to value.  Document use of the bits.
5150         * pthread_condattr_getpshared.c: Adjust for struct pthread_condattr
5151         change.
5152         * pthread_condattr_setpshared.c: Likewise.
5153         * pthread_cond_init.c (__pthread_cond_init): Initialized __clock field.
5154         * sysdeps/unix/sysv/linux/lowlevelcond.sym: Add cond_clock symbol.
5155         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
5156         Add __clock field.
5157         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: Likewise.
5158         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: Likewise.
5159         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: Likewise.
5160         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: Likewise.
5161         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S:
5162         Implement clock selection.
5163         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
5164         * pthread-errnos.sym: Add ENOSYS.
5165         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
5166         _POSIX_CLOCK_SELECTION.
5167         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
5168
5169         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Remove
5170         invalid .size directive.
5171
5172 2003-03-17  Roland McGrath  <roland@redhat.com>
5173
5174         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait):
5175         Formatting tweaks.
5176
5177 2003-03-17  Ulrich Drepper  <drepper@redhat.com>
5178
5179         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: Use __builtin_expect.
5180         Use __lll_add instead of spelling it out.  Use protected symbol names.
5181         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Use __builtin_expect.
5182         Use __lll_add.
5183         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (__lll_compare_and_swap):
5184         Renamed from lll_compare_and_swap.  Use new name where necessary.
5185         (__lll_add): Defined.
5186         (__lll_dec_if_positive): Defined.
5187         (__lll_test_and_set): Defined.
5188         * sysdeps/ia64/pthread_spin_init.c: Removed.
5189         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: Removed.
5190         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: Removed.
5191         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: Removed.
5192         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: Removed.
5193         * sysdeps/unix/sysv/linux/ia64/libc-lowlevellock.c: Removed.
5194         * sysdeps/unix/sysv/linux/ia64/libc-lowlevelmutex.c: Removed.
5195         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Removed.
5196         * sysdeps/ia64/bits/atomic.h: Add __builtin_expect where appropriate.
5197         * sysdeps/ia64/pthread_spin_unlock.c (pthread_spin_unlock): Use
5198         __sync_lock_release_si.
5199         Patch by Jakub Jelinek.
5200
5201         * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait):
5202         Fix timeout handling.
5203         (__lll_timedwait_tid): Likewise.
5204         (lll_unlock_wake_cb): Wake up other waiters if necessary.
5205         Patch by Jakub Jelinek.
5206
5207         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Pretty printing.
5208
5209 2003-03-17  Roland McGrath  <roland@redhat.com>
5210
5211         PowerPC port contributed by Paul Mackerras <paulus@samba.org>.
5212         * sysdeps/pthread/pthread_spin_init.c: New file.
5213         * sysdeps/pthread/pthread_spin_unlock.c: New file.
5214         * sysdeps/powerpc/Makefile: New file.
5215         * sysdeps/powerpc/pthread_spin_lock.c: New file.
5216         * sysdeps/powerpc/pthread_spin_trylock.c: New file.
5217         * sysdeps/powerpc/pthreaddef.h: New file.
5218         * sysdeps/powerpc/tcb-offsets.sym: New file.
5219         * sysdeps/powerpc/td_ta_map_lwp2thr.c: New file.
5220         * sysdeps/powerpc/tls.h: New file.
5221         * sysdeps/powerpc/bits/atomic.h: New file.
5222         * sysdeps/unix/sysv/linux/libc-lowlevelmutex.c: New file.
5223         * sysdeps/unix/sysv/linux/libc-lowlevellock.c: New file.
5224         * sysdeps/unix/sysv/linux/lowlevellock.c: New file.
5225
5226         * sysdeps/unix/sysv/linux/lowlevelmutex.c: New file.
5227         * sysdeps/unix/sysv/linux/sem_post.c: New file.
5228         * sysdeps/unix/sysv/linux/sem_timedwait.c: New file.
5229         * sysdeps/unix/sysv/linux/sem_trywait.c: New file.
5230         * sysdeps/unix/sysv/linux/sem_wait.c: New file.
5231         * sysdeps/unix/sysv/linux/powerpc/Makefile: New file.
5232         * sysdeps/unix/sysv/linux/powerpc/createthread.c: New file.
5233         * sysdeps/unix/sysv/linux/powerpc/fork.c: New file.
5234         * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: New file.
5235         * sysdeps/unix/sysv/linux/powerpc/pt-vfork.S: New file.
5236         * sysdeps/unix/sysv/linux/powerpc/pthread_once.c: New file.
5237         * sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h: New file.
5238         * sysdeps/unix/sysv/linux/powerpc/bits/semaphore.h: New file.
5239         * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep-cancel.h: New file.
5240         * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h: New file.
5241
5242         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: Use __gettimeofday,
5243         not gettimeofday.
5244         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: Likewise.
5245         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Likewise.
5246         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Likewise.
5247         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: Likewise.
5248         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
5249
5250 2003-03-17  Ulrich Drepper  <drepper@redhat.com>
5251
5252         * sysdeps/pthread/pthread_cond_wait.c: Correct exit criteria.
5253         * sysdeps/pthread/pthread_cond_timedwait.c: Likewise.
5254         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5255         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
5256         Patch by Ewald Snel <ewald@rambo.its.tudelft.nl>.
5257
5258 2003-03-16  Roland McGrath  <roland@redhat.com>
5259
5260         * tst-fork4.c: Include <string.h>.
5261         * tst-signal2.c: Likewise.
5262         * tst-mutex5.c (do_test): exit -> return.
5263         * tst-mutex2.c: Include <stdlib.h>.
5264
5265 2003-03-16  Ulrich Drepper  <drepper@redhat.com>
5266
5267         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
5268         (__lll_mutex_timedlock_wait): Correct expected value after
5269         spurious wakeup.  Otherwise we would never wait again.
5270
5271         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Work around red
5272         zone versus inline asm stupidity.  Use correct instructions.
5273
5274         * tst-rwlock6.c: Add some more status output.
5275
5276 2003-03-15  Roland McGrath  <roland@redhat.com>
5277
5278         * sysdeps/pthread/configure.in: New file.
5279         * sysdeps/pthread/configure: New file (generated).
5280
5281 2003-03-15  Ulrich Drepper  <drepper@redhat.com>
5282
5283         * allocatestack.c (allocate_stack): Store the exact stack size of
5284         user allocated stacks.
5285
5286 2003-03-15  Jakub Jelinek  <jakub@redhat.com>
5287
5288         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h
5289         (SINGLE_THREAD): Use `header' prefix instead of `header.data'.
5290         * sysdeps/sh/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Likewise.
5291         * sysdeps/sh/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define.
5292         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (SINGLE_THREAD_P):
5293         Use `header.' prefix.
5294         * sysdeps/ia64/tcb-offsets.sym (MULTIPLE_THREADS_OFFSET): Likewise.
5295
5296 2003-03-15  Ulrich Drepper  <drepper@redhat.com>
5297
5298         * sysdeps/x86_64/pthreaddef.h (CURRENT_STACK_FRAME): Don't use
5299         __builtin_frame_address, use stack pointer.
5300
5301         * sysdeps/unix/sysv/linux/jmp-unwind.c: Use CURRENT_STACK_FRAME
5302         instead of __builtin_frame_pointer.
5303
5304 2003-03-14  Ulrich Drepper  <drepper@redhat.com>
5305
5306         * tst-basic1.c (do_test): Add cast to avoid warning.
5307         * tst-basic2.c (do_test): Likewise.
5308
5309         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Use correct
5310         amount of stack correction.
5311
5312         * tst-fork4.c: Use test-skeleton.c.
5313
5314 2003-03-14  Roland McGrath  <roland@redhat.com>
5315
5316         * init.c: Fix typo "#eli" for "#else".
5317
5318 2003-03-14  Steven Munroe  <sjmunroe@us.ibm.com>
5319
5320         * allocatestack.c (__stack_user): Use hidden_data_def.
5321         * pthread_create.c (__pthread_keys): Likewise.
5322
5323         * init.c [__powerpc__] (__NR_set_tid_address): Define it.
5324
5325 2003-03-14  Roland McGrath  <roland@redhat.com>
5326
5327         * tst-fork4.c: New file.
5328         * Makefile (tests): Add it.
5329
5330         * descr.h (struct pthread): Move the union out of [!TLS_DTV_AT_TP], so
5331         we always define the padding space.
5332         [!TLS_DTV_AT_TP]: Give tcbhead_t field a name, `header', since GCC
5333         stopped supporting its own extensions fully.
5334         [TLS_MULTIPLE_THREADS_IN_TCB]: Put `multiple_threads' inside a wrapper
5335         struct also called `header', so `header.multiple_threads' is the field
5336         name to use on all machines.
5337         * allocatestack.c (allocate_stack): Use `header.' prefix.
5338         * sysdeps/pthread/createthread.c (create_thread): Likewise.
5339         * pthread_create.c (__pthread_create_2_1): Likewise.
5340         * sysdeps/i386/tls.h (INSTALL_NEW_DTV, THREAD_DTV): Likewise.
5341         (THREAD_SELF): Likewise.
5342         * sysdeps/x86_64/tls.h: Likewise.
5343         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
5344         (SINGLE_THREAD_P): Likewise.
5345         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
5346         (SINGLE_THREAD_P): Likewise.
5347         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h
5348         (SINGLE_THREAD_P): Likewise.
5349
5350         * sysdeps/s390/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Use REGS[18]
5351         value directly.
5352
5353 2003-03-14  Ulrich Drepper  <drepper@redhat.com>
5354
5355         * pthread_create.c (start_thread): Use CALL_THREAD_FCT if defined.
5356         * sysdeps/i386/tls.h: Define CALL_THREAD_FCT.
5357
5358         * pthread_create.c (start_thread): setjmp is expected to return 0.
5359
5360         * sysdeps/x86_64/tls.h (THREAD_GETMEM): Mark asms volatile.
5361         (THREAD_GETMEM_NC): Likewise.
5362
5363 2003-03-13  Ulrich Drepper  <drepper@redhat.com>
5364
5365         * allocatestack.c (allocate_stack): If MULTI_PAGE_ALIASING is defined
5366         and the size of the stack which must be allocated is a multiple,
5367         allocate one more page.
5368         * sysdeps/i386/i686/Makefile: Don't define COLORING_INCREMENT, but
5369         MULTI_PAGE_ALIASING.
5370
5371 2003-03-13  Roland McGrath  <roland@redhat.com>
5372
5373         * pthread_create.c (start_thread): Set EXITING_BIT after the
5374         event-reporting (and destructors), not before.
5375
5376 2003-03-13  Jakub Jelinek  <jakub@redhat.com>
5377
5378         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h (lll_futex_timed_wait,
5379         lll_futex_wake): Declare register variables as long int instead of
5380         unsigned long int.  Patch by Ian Wienand <ianw@gelato.unsw.edu.au>.
5381         Make syscall arguments clobbered by the syscall.
5382         (lll_futex_wait): Define using lll_futex_timed_wait.
5383
5384         * sysdeps/ia64/td_ta_map_lwp2thr.c (td_ta_map_lwp2thr): Cast regs[13]
5385         to void *.
5386
5387         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Only declare and set
5388         PPID if [! NDEBUG].
5389
5390         * allocatestack.c (nptl_ncreated): Only declare if
5391         COLORING_INCREMENT != 0.
5392
5393         * pthreadP.h (__pthread_enable_asynccancel_2): New prototype.
5394         (__libc_enable_asynccancel_2): Remove prototype.
5395
5396         * sysdeps/unix/sysv/linux/ia64/fork.c (ARCH_FORK): Swap ptid and
5397         ctid to match kernel.
5398
5399 2003-03-12  Ulrich Drepper  <drepper@redhat.com>
5400
5401         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Add
5402         libc_multiple_threads.
5403         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Move definition of
5404         __libc_multiple_threads to...
5405         * sysdeps/unix/sysv/linux/libc_multiple_threads.c: ...here.  New file.
5406
5407         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Remove unnecessary
5408         versioning.
5409         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
5410         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
5411
5412         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S
5413         (__pthread_once_internal): Define.
5414
5415         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Use shlib-compat.h
5416         macros instead of .symver directly.
5417         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
5418         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise.
5419
5420         * sysdeps/x86_64/tls.h [__ASSEMBLER__]: Include tcb-offsets.h.
5421         * sysdeps/x86_64/tcb-offsets.sym: New file.
5422         * sysdeps/x86_64/Makefile: New file.
5423
5424         * sysdeps/i386/tcb-offsets.sym: Add SELF.
5425         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Use SELF
5426         to access own pthread_t in TCB.
5427         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
5428         Likewise.
5429         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
5430         Likewise.
5431         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
5432
5433 2003-03-12  Roland McGrath  <roland@redhat.com>
5434
5435         * pthread-errnos.sym: New file.
5436         * Makefile (gen-as-const-headers): New variable, list that file.
5437         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Include generated
5438         header <pthread-errnos.h> instead of defining errno values here.
5439         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise.
5440         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
5441         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
5442         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
5443         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
5444         Likewise.
5445         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
5446         Likewise.
5447         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
5448         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5449         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
5450         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
5451         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
5452         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
5453         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
5454         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
5455         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
5456         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise.
5457         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
5458         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: Likewise.
5459         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: Likewise.
5460         * sysdeps/unix/sysv/linux/sh/sem_post.S: Likewise.
5461         * sysdeps/unix/sysv/linux/sh/sem_wait.S: Likewise.
5462         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
5463         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
5464         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
5465         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Likewise.
5466         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
5467         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
5468         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Likewise.
5469         * sysdeps/i386/i486/pthread_spin_trylock.S: Likewise.
5470         * sysdeps/x86_64/pthread_spin_trylock.S: Likewise.
5471         * sysdeps/sh/pthread_spin_trylock.S: Likewise.
5472         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: Likewise.
5473         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: Likewise.
5474
5475         * sysdeps/unix/sysv/linux/fork.c: Add an assert to check that
5476         CLONE_CHILD_SETTID worked.
5477
5478 2003-03-12  Ulrich Drepper  <drepper@redhat.com>
5479
5480         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S: New
5481         file.
5482         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S: New
5483         file.
5484
5485         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h
5486         (pthread_cond_t): Add padding.
5487
5488         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_rdlock.S: New file.
5489         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_wrlock.S: New file.
5490         * sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: New file.
5491
5492         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S
5493         (__pthread_rwlock_timedwrlock): Add missing opcode suffix.
5494         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S
5495         (__pthread_rwlock_timedrdlock): Likewise.
5496         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S
5497         (__pthread_rwlock_wrlock): Likewise.
5498         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S
5499         (__pthread_rwlock_rdlock): Likewise.
5500
5501         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: New file.
5502
5503         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Return
5504         result of lock re-get if it fails.
5505
5506 2003-03-11  Ulrich Drepper  <drepper@redhat.com>
5507
5508         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Fix asm syntax.
5509         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
5510         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: Likewise.
5511         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: Likewise.
5512         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: Likewise.
5513         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
5514         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: Likewise.
5515         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: Likewise.
5516         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: Likewise.
5517         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: Likewise.
5518
5519         * sysdeps/x86_64/tls.h (THREAD_SELF, THREAD_GETMEM, THREAD_GETMEM_NC,
5520         THREAD_SETMEM, THREAD_SETMEM_NC): Correct asm syntax.
5521
5522         * allocatestack.c [! TLS_MULTIPLE_THREADS_IN_TCB] (allocate_stack):
5523         Initialize *__libc_multiple_threads_ptr not __libc_multiple_threads.
5524         * sysdeps/pthread/createthread.c [! TLS_MULTIPLE_THREADS_IN_TCB]
5525         (create_thread): Likewise.
5526         Define __pthread_multiple_threads and __libc_multiple_threads_ptr.
5527         * init.c (__pthread_initialize_minimal_internal): Initialize
5528         __libc_multiple_threads_ptr if necessary.
5529         * pthreadP.h: Adjust prototype for __libc_pthread_init.  Declare
5530         __pthread_multiple_threads and __libc_multiple_threads_ptr.
5531         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Define
5532         __libc_multiple_threads.
5533         (__libc_pthread_init): Return pointer to __libc_pthread_init if
5534         necessary.
5535
5536         * sysdeps/i386/tls.h (THREAD_SETMEM): Fix one-byte variant.
5537         (THREAD_SETMEM_NC): Likewise.
5538
5539         * sysdeps/x86_64/pthread_spin_trylock.c: Removed.
5540         * sysdeps/x86_64/pthread_spin_trylock.S: New file.
5541         * sysdeps/x86_64/pthread_spin_unlock.c: Removed.
5542         * sysdeps/x86_64/pthread_spin_unlock.S: New file.
5543
5544         * sysdeps/i386/i486/pthread_spin_trylock.S (pthread_spin_trylock):
5545         Eliminate one entire instruction.
5546
5547         * cancellation.c (__pthread_enable_asynccancel_2): New function.
5548         * pthreadP.h: Declare __pthread_enable_asynccancel_2.
5549         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
5550         (__pthread_cond_timedwait): Use __pthread_enable_asynccancel_2
5551         instead of __pthread_enable_asynccancel.
5552         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
5553         (__pthread_cond_wait): Likewise.
5554         * sysdeps/pthread/pthread_cond_timedwait.c
5555         (__pthread_cond_timedwait): Likewise.
5556         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
5557
5558         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
5559         (__condvar_cleanup): Wake up all waiters in case we got signaled
5560         after being woken up but before disabling asynchronous
5561         cancellation.
5562         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise.
5563         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
5564         (__condvar_cleanup): Likewise.
5565
5566         * init.c (__NR_set_tid_address): If already defined, don't redefine.
5567         Make it an error if architecture has no #if case.  Add x86-64.
5568
5569         * sysdeps/unix/sysv/linux/x86_64/Makefile: Add flags for
5570         pt-initfini.s generation.
5571
5572         * sysdeps/x86_64/tls.h: Include <asm/prctl.h>.
5573         (TLS_INIT_TP): Fix typo.
5574
5575 2003-03-11  Jakub Jelinek  <jakub@redhat.com>
5576
5577         * sysdeps/ia64/bits/atomic.h (atomic_exchange_and_add): Swap 2nd and
5578         3rd argument of __arch_compare_and_exchange_{32,64}_val_acq.
5579
5580         * sysdeps/unix/sysv/linux/ia64/sem_post.c: Include semaphore.h.
5581         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: Likewise.
5582         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: Likewise.
5583         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: Likewise.
5584         * sysdeps/unix/sysv/linux/s390/sem_post.c: Likewise.
5585         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
5586         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Likewise.
5587         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Likewise.
5588
5589 2003-03-11  Ulrich Drepper  <drepper@redhat.com>
5590
5591         * sysdeps/pthread/pthread_cond_timedwait.c
5592         (__pthread_cond_timedwait): Return the result of the final
5593         locking.  If it succeeds, the regular function return value.
5594
5595         * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait):
5596         Return result of the final locking.
5597         * version.c (__nptl_main): Work around problems with the strange
5598         INTERNAL_SYSCALL macro on ppc32.
5599         * init.c (__pthread_initialize_minimal_internal): Unblock
5600         SIGCANCEL in case the parent blocked it.
5601         Reported by Paul Mackerras <paulus@samba.org>.
5602
5603         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S: New file.
5604         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_signal.S: New file.
5605         * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S: New file.
5606
5607 2003-03-11  Jakub Jelinek  <jakub@redhat.com>
5608
5609         * sysdeps/pthread/pthread_cond_timedwait.c
5610         (__pthread_cond_timedwait): Unlock and fail if
5611         __pthread_mutex_unlock_internal failed.
5612
5613         * sysdeps/pthread/createthread.c (ARCH_CLONE): Define if not defined.
5614         (create_thread): Only assert PD->tcb != NULL under [TLS_TCB_AT_TP].
5615         Use ARCH_CLONE.
5616         * allocatestack.c (ALLOCATE_STACK_PARMS): New macro.
5617         [NEED_SEPARATE_REGISTER_STACK] (STACK_VARIABLES,
5618         STACK_VARIABLES_ARGS, STACK_VARIABLES_PARMS, ALLOCATE_STACK_PARMS,
5619         ALLOCATE_STACK): New macros.
5620         (TLS_TPADJ): New macro.
5621         (get_cached_stack, queue_stack, __deallocate_stack): Use TLS_TPADJ.
5622         (allocate_stack): Handle TLS_DTV_AT_TP and
5623         NEED_SEPARATE_REGISTER_STACK.  Use TLS_TPADJ.
5624         * pthread_create.c (__pthread_create_2_1) [! TLS_TCB_AT_TP]:
5625         Don't set PD->self.
5626         * init.c [__ia64__] (__NR_set_tid_address): Define.
5627
5628         * sysdeps/unix/sysv/linux/ia64/bits/pthreadtypes.h: New file.
5629         * sysdeps/unix/sysv/linux/ia64/bits/semaphore.h: New file.
5630         * sysdeps/unix/sysv/linux/ia64/fork.c: New file.
5631         * sysdeps/unix/sysv/linux/ia64/createthread.c: New file.
5632         * sysdeps/unix/sysv/linux/ia64/libc-lowlevellock.c: New file.
5633         * sysdeps/unix/sysv/linux/ia64/libc-lowlevelmutex.c: New file.
5634         * sysdeps/unix/sysv/linux/ia64/lowlevellock.c: New file.
5635         * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: New file.
5636         * sysdeps/unix/sysv/linux/ia64/lowlevelmutex.c: New file.
5637         * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: New file.
5638         * sysdeps/unix/sysv/linux/ia64/pt-vfork.S: New file.
5639         * sysdeps/unix/sysv/linux/ia64/pthread_once.c: New file.
5640         * sysdeps/unix/sysv/linux/ia64/sem_post.c: New file.
5641         * sysdeps/unix/sysv/linux/ia64/sem_timedwait.c: New file.
5642         * sysdeps/unix/sysv/linux/ia64/sem_trywait.c: New file.
5643         * sysdeps/unix/sysv/linux/ia64/sem_wait.c: New file.
5644         * sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h: New file.
5645         * sysdeps/ia64/bits/atomic.h: New file.
5646         * sysdeps/ia64/Makefile: New file.
5647         * sysdeps/ia64/pthread_spin_init.c: New file.
5648         * sysdeps/ia64/pthread_spin_lock.c: New file.
5649         * sysdeps/ia64/pthread_spin_trylock.c: New file.
5650         * sysdeps/ia64/pthread_spin_unlock.c: New file.
5651         * sysdeps/ia64/pthreaddef.h: New file.
5652         * sysdeps/ia64/tcb-offsets.sym: New file.
5653         * sysdeps/ia64/td_ta_map_lwp2thr.c: New file.
5654         * sysdeps/ia64/tls.h: New file.
5655
5656         * sysdeps/s390/pthreaddef.h (__exit_thread_inline): Pass 1 argument
5657         to syscall instead of no arguments.
5658
5659 2003-03-10  Ulrich Drepper  <drepper@redhat.com>
5660
5661         * sysdeps/unix/sysv/linux/x86_64/sem_post.S: New file.
5662         * sysdeps/unix/sysv/linux/x86_64/sem_trywait.S: New file.
5663         * sysdeps/unix/sysv/linux/x86_64/sem_wait.S: New file.
5664         * sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S: New file.
5665
5666         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Fix error value in
5667         unused code.
5668
5669         * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: New file
5670
5671         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
5672         lowlevelbarrier.sym.
5673         * sysdeps/unix/sysv/linux/lowlevelbarrier.sym: New file.
5674         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S:
5675         Include lowlevelbarrier.h and don't define offsets locally.
5676         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: Likewise.
5677
5678         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h
5679         (__lll_mutex_lock_wait): Reverse order of first two parameters.
5680         (__lll_mutex_timedlock_wait): Likewise.
5681         (lll_mutex_lock): Adjust asm for that.
5682         (lll_mutex_timedlock): Likewise.  Mark cx, cc, r10 as clobbered.
5683         (lll_lock): Adjust asm for operand order change.
5684         * sysdeps/unix/sysv/linux/x86_64/lowlevelmutex.S: New file.
5685         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevelmutex.S: New file.
5686
5687         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (__lll_lock_wait):
5688         Reverse order of parameters.
5689         (__lll_timedwait_tid): Remove regparms attribute.
5690         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: New file.
5691         * sysdeps/unix/sysv/linux/x86_64/libc-lowlevellock.S: New file.
5692
5693         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
5694         (__lll_timedwait_tid): Remove one unnecessary instruction.
5695
5696         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: Define
5697         __lll_mutex_timedlock_wait only for NOT_IN_libc.
5698         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: Include
5699         lowlevelmutex.S.
5700
5701         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Define
5702         lll_unlock_wake_cb, __lll_wait_tid, and __lll_timedwait_tid only
5703         for NOT_IN_libc.
5704         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Include
5705         lowlevellock.S.
5706
5707         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Don't define
5708         LOCK is already defined.  Don't define __lll_mutex_timedlock_wait
5709         for libc.so.
5710         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Only
5711         define LOCK here (if UP is not defined).  The actual code is in
5712         lowlevelmutex.S.
5713
5714         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Don't define
5715         LOCK is already defined.  Don't define lll_unlock_wake_cb and
5716         __lll_timedwait_tid for libc.so.
5717         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Only
5718         define LOCK here (if UP is not defined).  The actual code is in
5719         lowlevellock.S.
5720
5721         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Not needed anymore.
5722         * sysdeps/unix/sysv/linux/s390/lowlevelsem.h: Likewise.
5723         * sysdeps/unix/sysv/linux/s390/sem_post.c: Include lowlevellock.h
5724         instead of lowlevelsem.h.
5725         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: Likewise.
5726         * sysdeps/unix/sysv/linux/s390/sem_trywait.c: Likewise.
5727         * sysdeps/unix/sysv/linux/s390/sem_wait.c: Likewise.
5728
5729         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add
5730         lowlevelrwlock.sym.
5731         * sysdeps/unix/sysv/linux/lowlevelrwlock.sym: New file.
5732         * sysdeps/unix/sysv/linux/i386/lowlevelrwlock.h: Removed.
5733         * sysdeps/unix/sysv/linux/sh/lowlevelrwlock.h: Removed.
5734
5735         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h (lll_trylock): Fix
5736         register loading.
5737         * sysdeps/unix/sysv/linux/i386/lowlevellock.h (lll_trylock): Undo
5738         last changed.  D'oh.
5739
5740         * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: New file.
5741
5742         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove declaration
5743         of __libc_locking_needed.
5744         (lll_trylock): Initialize %eax to zero.
5745
5746         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Update
5747         pthread_cond_t definition.
5748
5749 2003-03-10  Roland McGrath  <roland@redhat.com>
5750
5751         * sysdeps/unix/sysv/linux/lowlevelcond.sym: New file.
5752         * sysdeps/unix/sysv/linux/Makefile (gen-as-const-headers): Add it.
5753         * sysdeps/unix/sysv/linux/sh/lowlevelcond.h: File removed.
5754         * sysdeps/unix/sysv/linux/i386/lowlevelcond.h: Likewise.
5755         * sysdeps/unix/sysv/linux/x86_64/lowlevelcond.h: Likewise.
5756
5757         * allocatestack.c (allocate_stack) [!TLS_MULTIPLE_THREADS_IN_TCB]:
5758         Instead of setting PD->multiple_threads, set globals
5759         __pthread_multiple_threads and __libc_multiple_threads.
5760         * sysdeps/pthread/createthread.c (create_thread): Likewise.
5761         * sysdeps/i386/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Define it.
5762         * sysdeps/s390/tls.h (TLS_MULTIPLE_THREADS_IN_TCB): Likewise.
5763
5764         * descr.h (struct pthread): Conditionalize first member on
5765         [!TLS_DTV_AT_TP].  Replace the `header' member with an anonymous union
5766         containing an anonymous tcbhead_t.  Move `list' member out.
5767         [TLS_MULTIPLE_THREADS_IN_TCB]: Define a `multiple_threads' member.
5768         * allocatestack.c: Remove use of `header.data.' prefix.
5769         * pthread_create.c: Likewise.
5770         * init.c (__pthread_initialize_minimal_internal): Likewise.
5771         * sysdeps/pthread/createthread.c (create_thread): Likewise.
5772         * sysdeps/i386/tls.h (INSTALL_DTV): Add parens.
5773         (THREAD_SELF, THREAD_DTV, INSTALL_NEW_DTV): No `header.data.' prefix.
5774         * sysdeps/x86_64/tls.h: Likewise.
5775         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
5776         (SINGLE_THREAD_P): Likewise.
5777         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h
5778         (SINGLE_THREAD_P): Likewise.
5779         * sysdeps/i386/tls.h (tcbhead_t): Remove `list' member.
5780         * sysdeps/s390/tls.h (tcbhead_t): Likewise.
5781
5782 2003-03-09  Ulrich Drepper  <drepper@redhat.com>
5783
5784         * sysdeps/unix/sysv/linux/x86_64/lowlevelcond.h: New file.
5785
5786         * sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h: New file.
5787         * sysdeps/unix/sysv/linux/x86_64/fork.c: New file.
5788
5789         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Fix many
5790         leftovers from the ia32 code.
5791
5792         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Remove unneccessary
5793         memory load.
5794         (clear_once_control): Don't load %esi.
5795
5796         * sysdeps/x86_64/tls.h: Remove all traces of segment descriptor
5797         handling.
5798
5799         * sysdeps/unix/sysv/linux/x86_64/fork.c: New file.
5800
5801         * sysdeps/unix/sysv/linux/s390/createthread.c: Moved to...
5802         * sysdeps/unix/sysv/linux/createthread.c: ...here.
5803
5804         * Makefile (tests): Add tst-cond10.
5805         * tst-cond10.c: New file.
5806
5807 2003-03-08  Ulrich Drepper  <drepper@redhat.com>
5808
5809         * tst-tls2.c (do_test): Add TEMP_FAILURE_RETRY around sem_wait call.
5810         * tst-signal3.c (do_test): Likewise.
5811         * tst-sem5.c (do_test): Likewise.
5812         * tst-kill6.c (do_test): Likewise.
5813         * tst-tls3.c (do_test): Likewise.  Include <errno.h>.
5814
5815         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use add/sub instead
5816         of inc/dec.
5817         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Likewise.
5818         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise
5819         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise.
5820         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise.
5821         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
5822         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
5823         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
5824         Likewise.
5825         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
5826         Likewise.
5827         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Likewise.
5828         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Likewise.
5829         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5830         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
5831         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
5832         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Likewise.
5833         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
5834         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
5835
5836         * allocatestack.c (allocate_stack): If mprotect() fails free the
5837         TLS memory.
5838
5839 2003-03-07  Ulrich Drepper  <drepper@redhat.com>
5840
5841         * sysdeps/i386/i486/bits/atomic.h: Fix a few unused definitions.
5842
5843         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Remove all trace of
5844         lll_wake_tid.  This was used only to work around kernel limits in
5845         the early days.
5846         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
5847         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: Likewise.
5848         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: Likewise.
5849         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
5850
5851         * init.c (__static_tls_align_m1): Renamed from __static_tls_align.
5852         (__pthread_initialize_minimal_internal): Change initialization of
5853         __static_tls_align_m1 appropriately.
5854         * pthreadP.h (__static_tls_align_m1): Renamed from
5855         __static_tls_align.
5856         * allocatestack.c (allocate_stack): Use __static_tls_align_m1
5857         instead of __static_tls_align-1.
5858
5859 2003-03-04  Ulrich Drepper  <drepper@redhat.com>
5860
5861         * sysdeps/unix/sysv/linux/x86_64/Makefile: New file.
5862
5863         * pthread_create.c: Define __pthread_keys using nocommon
5864         attribute, not by placing it explicitly in bss.
5865         Remove DEFINE_DEALLOC definition.  Not needed anymore.
5866
5867         * allocatestack.c: Define ARCH_MAP_FLAGS if not already defined.
5868         Use it in mmap call to allocate stacks.
5869
5870         * sysdeps/pthread/createthread.c (create_thread): Fix comment.
5871
5872         * pthread_create.c (start_thread): Use THREAD_SETMEM to store
5873         result of the thread function.
5874
5875 2003-03-03  Ulrich Drepper  <drepper@redhat.com>
5876
5877         * sysdeps/unix/sysv/linux/s390/dl-sysdep.h: Removed.  The generic
5878         version is just fine.
5879
5880         * sysdeps/unix/sysv/linux/libc_pthread_init.c
5881         (__pthread_child_handler): Renamed from pthread_child_handler,
5882         exported, and marked hidden.  Change all users.
5883         * sysdeps/unix/sysv/linux/register-atfork.c (free_mem): Do not
5884         free __pthread_child_handler from child list.
5885
5886 2003-03-03  Martin Schwidefsky  <schwidefsky@de.ibm.com>
5887
5888         * atomic.h (atomic_exchange_and_add): Return newval, not oldval.
5889
5890         * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
5891         Fix handling of cancellation and failing pthread_mutex_unlock call.
5892         * sysdeps/pthread/pthread_cond_wait.c (__condvar_cleanup): Likewise.
5893         (__pthread_cond_wait): Likewise.
5894
5895         * sysdeps/pthread/pthread_rwlock_timedrdlock.c
5896         (pthread_rwlock_timedrdlock): Fix clobber of result variable by
5897         lll_futex_timed_wait call.
5898         * sysdeps/pthread/pthread_rwlock_timedwrlock.c
5899         (pthread_rwlock_timedwrlock): Likewise.
5900
5901         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c (___lll_lock):
5902         Don't define lll_unlock_wake_cb and ___lll_timedwait_tid in libc.so.
5903         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Remove XXX comments.
5904
5905         * sysdeps/unix/sysv/linux/s390/sem_post.c (__new_sem_post): Fix
5906         check of lll_futex_wake return value.
5907
5908 2003-03-03  Roland McGrath  <roland@redhat.com>
5909
5910         * forward.c: Fix typo in __pthread_attr_init_2_0 compat_symbol decl.
5911
5912         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
5913         Argument to ptr___pthread_cleanup_upto is __jmp_buf, not jmp_buf.
5914         * sysdeps/unix/sysv/linux/jmp-unwind.c: Likewise.
5915
5916 2003-03-02  Ulrich Drepper  <drepper@redhat.com>
5917
5918         * sysdeps/pthread/timer_create.c (timer_create): Return correct
5919         error for CPU clocks.
5920
5921         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
5922         _POSIX_MONOTONIC_CLOCK.
5923         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
5924
5925         * tst-cancel4.c (tf_sleep): Lower sleep time a bit to not upset
5926         recent kernels.
5927
5928 2003-03-01  Ulrich Drepper  <drepper@redhat.com>
5929
5930         * descr.h (struct pthread): Move cleanup field to the front.
5931
5932 2003-03-01  Roland McGrath  <roland@redhat.com>
5933
5934         * sem_open.c (sem_open): Braino fix.
5935
5936 2003-03-01  Ulrich Drepper  <drepper@redhat.com>
5937
5938         * sysdeps/i386/tcb-offsets.sym: Add CLEANUP and CLEANUP_PREV.
5939         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Inline
5940         __pthread_cleanup_pop functionality.
5941         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
5942
5943         * descr.h (struct pthread): Move tid field to the front now that
5944         it is often used.
5945
5946         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S
5947         (__lll_mutex_timedlock_wait): Remove.
5948         (__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
5949         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S
5950         (__lll_mutex_unlock_wake): Don't save, load, and restore %esi.
5951         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
5952         (lll_unlock_wake_cb): Don't save and restore %esi.
5953         (__lll_unlock_wake): Add alignment.  Don't save, load, and restore
5954         %esi.
5955         (__lll_timedwait_tid): Add alignment.
5956         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
5957         (__lll_unlock_wake): Add alignment.  Don't save, load, and restore
5958         %esi.
5959         (__lll_timedwait_tid): Removed.
5960         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S
5961         (__pthread_cond_broadcast): Don't save, load, and restore %esi.
5962         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S
5963         (pthread_barrier_wait): Don't save, load, and restore %esi for
5964         last thread.
5965         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
5966         (__pthread_cond_signal): Don't save, load, and restore %esi.
5967         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S
5968         (__pthread_rwlock_unlock): Don't save, load, and restore %esi.
5969         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S (__new_sem_post):
5970         Don't save, load, and restore %esi.
5971
5972 2003-02-27  Ulrich Drepper  <drepper@redhat.com>
5973
5974         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S:
5975         Release lock before waking up the waiters.
5976
5977         * tst-exit1.c (do_test): Don't start more than one thread in parallel.
5978
5979         * tst-rwlock9.c (writer_thread): Correct adding TIMEOUT.
5980         (reader_thread): Likewise.
5981
5982         * sysdeps/pthread/pthread_rwlock_unlock.c
5983         (__pthread_rwlock_unlock): Release internal lock early.  Don't try
5984         to wake up readers if there are none.
5985
5986         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S:
5987         Release internal lock before wake threads.
5988
5989 2003-02-26  Ulrich Drepper  <drepper@redhat.com>
5990
5991         * Makefile (tests): Add tst-rwlock10 and tst-rwlock11.
5992         * tst-rwlock8.c: Initialize lock with INIT.  Allow INIT to be
5993         predefined.
5994         * tst-rwlock9.c: Likewise.
5995         * tst-rwlock10.c: New file.
5996         * tst-rwlock11.c: New file.
5997
5998         * Makefile (tests): Add tst-dlsym1.
5999         * tst-dlsym1.c: New file.
6000
6001         * init.c (__pthread_initialize_minimal_internal): Set
6002         GL(dl_error_catch_tsd) to __libc_dl_error_tsd.
6003         * Versions (libc:GLIBC_PRIVATE): Export __libc_dl_error_tsd.
6004
6005 2003-02-24  Ulrich Drepper  <drepper@redhat.com>
6006
6007         * sem_open.c (sem_open): Fix handling of O_CREAT without O_EXCL.
6008
6009         * tst-cond2.c: Fix sychronization with child.
6010
6011         * tst-rwlock8.c (reader_thread): Remove unused variable.
6012
6013         * Makefile: Add rules to build and run tst-tls3.
6014         * tst-tls3.c: New file.
6015         * tst-tls3mod.c: New file.
6016
6017         * Makefile (tests): Add tst-rwlock8 and tst-rwlock9.
6018         * tst-rwlock8.c: New file.
6019         * tst-rwlock9.c: New file.
6020         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: Fix
6021         complete broken rwlock implementation.
6022         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
6023         Likewise.
6024         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
6025         Likewise.
6026         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: Likewise.
6027         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: Likewise.
6028         * sysdeps/pthread/pthread_rwlock_rdlock.c: Likewise.
6029         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: Likewise.
6030         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: Likewise.
6031         * sysdeps/pthread/pthread_rwlock_unlock.c: Likewise.
6032         * sysdeps/pthread/pthread_rwlock_wrlock.c: Likewise.
6033
6034 2003-02-23  Roland McGrath  <roland@redhat.com>
6035
6036         * Makefile (nptl-version): Change regexp so case sensitivity is ok.
6037
6038 2003-02-23  Ulrich Drepper  <drepper@redhat.com>
6039
6040         * Makefile (tests): Add tst-context1.
6041         * tst-context1.c: New file.
6042
6043         * Makefile (tests): Add tst-tls1 and tst-tls2.
6044         * tst-tls1.c: New file.
6045         * tst-tls2.c: New file.
6046
6047         * libc-cancellation.c (__libc_enable_asynccancel): Correct test
6048         for failed cmpxchg.
6049
6050         * pthread_create.c (start_thread): Set EXITING_BIT early.
6051
6052         * sysdeps/i386/tls.h (THREAD_GETMEM): Mark asm as volatile.
6053         (THREAD_GETMEM_NC): Likewise.
6054
6055 2003-02-22  Ulrich Drepper  <drepper@redhat.com>
6056
6057         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Shave
6058         off 3 more bytes by using offset-less instructions when possible.
6059
6060         * Makefile: Add dependency for $(objpfx)version.d.
6061
6062         * eintr.c (eintr_source): Add unnecessary return but the compiler
6063         insists.
6064
6065         * tst-kill3.c: Include <unistd.h>.
6066
6067 2003-02-21  Roland McGrath  <roland@redhat.com>
6068
6069         * pthread_create.c (start_thread): Call __libc_thread_freeres.
6070
6071 2003-02-21  Ulrich Drepper  <drepper@redhat.com>
6072
6073         * Makefile (tests): Add tst-eintr1.
6074         (distribute): Add eintr.c.
6075         * tst-eintr1.c: New file.
6076         * eintr.c: New file.
6077
6078         * pthread_cancel.c (pthread_cancel): Use tkill directly.
6079
6080         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill):
6081         Disallow sending SIGCANCEL.
6082
6083         * Makefile (tests): Remove tst-basic7.  Add tst-kill1, tst-kill2,
6084         tst-kill3, tst-kill4, tst-kill5, tst-kill6.
6085         * tst-kill1.c: New file.
6086         * tst-kill2.c: New file.
6087         * tst-kill3.c: New file.
6088         * tst-kill5.c: New file.
6089         * tst-kill6.c: New file.
6090         * tst-basic7.c: Renamed to...
6091         * tst-kill4.c: ...this.
6092
6093 2003-02-21  Roland McGrath  <roland@redhat.com>
6094
6095         * Makefile (install-lib-ldscripts): New variable.
6096
6097 2003-02-21  Ulrich Drepper  <drepper@redhat.com>
6098
6099         * pthreadP.h: Define INVALID_TD_P and INVALID_NOT_TERMINATED_TD_P.
6100         * pthread_cancel.c: Use INVALID_TD_P.
6101         * pthread_detach.c: Likewise.
6102         * pthread_getschedparam.c: Likewise.
6103         * pthread_setschedparam.c: Likewise.
6104         * sysdeps/pthread/pthread_getcpuclockid.c: Likewise.
6105         * sysdeps/unix/sysv/linux/pthread_kill.c: Likewise.
6106         * pthread_join.c: Use INVALID_NOT_TERMINATED_TD_P.
6107         * pthread_timedjoin.c: Likewise.
6108
6109         * tst-basic7.c: Include <signal.h>.
6110
6111         * pthread_join.c (pthread_join): Limited checking for invalid
6112         descriptors.
6113         * pthread_timedjoin.c (pthread_timedjoin_np): Likewise.
6114
6115 2003-02-20  Ulrich Drepper  <drepper@redhat.com>
6116
6117         * pthread_create.c (deallocate_tsd): Reset found_nonzero at the
6118         beginning of the loop.  Clear the entire first block of TSD.
6119         * Makefile (tests): Add tst-key4.
6120         * tst-key4.c: New file.
6121
6122 2003-02-18  Ulrich Drepper  <drepper@redhat.com>
6123
6124         * Makefile (tests): Add tst-basic7.
6125         * tst-basic7.c: New file.
6126
6127         * pthread_create.c (deallocate_tsd): Mark as internal_function.
6128         Add some more __builtin_expect.
6129
6130         * pthreadP.h: Define dummy version of DEBUGGING_P.
6131
6132 2003-02-17  Ulrich Drepper  <drepper@redhat.com>
6133
6134         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remnove
6135         _POSIX_THREAD_PRIORITY_SCHEDULING.
6136         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remove
6137         _XOPEN_REALTIME_THREADS.
6138         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Likewise.
6139
6140         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): The
6141         kernel returns EINVAL for PID <= 0, work around it.
6142
6143         * Makefile (tests): Add tst-signal5.
6144         * tst-signal5.c: New file.
6145
6146         * sysdeps/unix/sysv/linux/bits/local_lim.h: Define TTY_NAME_MAX
6147         and LOGIN_NAME_MAX.
6148
6149         * tst-cancel1.c (tf): Block all signals.
6150
6151         * Makefile (tests): Add tst-basic6.
6152         * tst-basic6.c: New file.
6153
6154         * tst-basic1.c: Add test for process ID.
6155
6156         * Makefile (tests): Add tst-cancel10.
6157         * tst-cancel10.c: New file.
6158
6159         * Makefile (tests): Add tst-signal4.
6160         * tst-signal4.c: New file.
6161
6162         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Use
6163         __sigismember instead of sigismember.  Add __builtin_expect.
6164
6165 2003-02-16  Ulrich Drepper  <drepper@redhat.com>
6166
6167         * tst-attr1.c (do_test): Add tests for pthread_setcanceltype,
6168         pthread_setcancelstate, and pthread_rwlock_setpshared.
6169
6170         * tst-cancel7.c (do_test): Make sure the pid file exists before
6171         canceling the thread.
6172
6173         * tst-rwlock6.c: More pthread_rwlock_timedwrlock and
6174         pthread_rwlock_timedrdlock tests.
6175         * tst-rwlock7.c: More pthread_rwlock_timedwrlock tests.
6176         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
6177         Check for invalid tv_nsec field.
6178         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
6179         Likewise.
6180
6181         * pthread_mutex_trylock.c (__pthread_mutex_trylock): Protect
6182         recursive mutex of overflow.
6183
6184         * tst-attr1.c (do_test): Add test for pthread_mutexattr_setpshared.
6185
6186         * libc-cancellation.c (__libc_enable_asynccancel): Rewrite to avoid
6187         going into an endless loop.
6188         * Makefile (tests): Add tst-cancel9.
6189         * tst-cancel9.c: New file.
6190
6191         * pthread_cancel.c (pthread_cancel): Use the result of __pthread_kill.
6192
6193 2003-02-15  Ulrich Drepper  <drepper@redhat.com>
6194
6195         * tst-mutex5.c (do_test): Add more timedlock tests.
6196
6197         * tst-mutex2.c: Tests of trylock and unlock with ERROR mutexes.
6198         * tst-mutex3.c (do_test): Add tests for trylock with RECURSIVE mutexes.
6199
6200         * sysdeps/unix/sysv/linux/pthread_kill.c (__pthread_kill): Don't
6201         use INLINE_SYSCALL.  Error number is returned, not -1.
6202
6203         * pthreadP.h: Mark declarations of __find_in_stack_list, __free_tcb,
6204         and __deallocate_stack with internal_function.
6205         * pthread_create.c: Adjust definitions appropriately.
6206         * allocatestack.c: Likewise.
6207
6208         * pthread_join.c: Add one more __builtin_expect.
6209         * pthread_timedjoin.c: Likewise.
6210
6211         * pthread_getspecific.c (__pthread_getspecific): Clear data->data
6212         not data of sequence number does not match.
6213         Add one __builtin_expect.
6214
6215         * Makefile (tests): Add tst-clock1.
6216         * tst-clock1.c: New file.
6217
6218         * pthread_setconcurrency.c (pthread_setconcurrency): Fail for
6219         negative arguments.
6220         * Makefile (tests): Add tst-basic5.
6221         * tst-basic5.c: New file.
6222
6223 2003-02-14  Ulrich Drepper  <drepper@redhat.com>
6224
6225         * Makefile (tests): Add tst-basic4.
6226         * tst-basic4.c: New file.
6227
6228         * pthreadP.h: Add declaraction for __nptl_nthreads.
6229         * pthread_create.c: Define __nptl_nthreads
6230         (start_thread): Increment __nptl_nthreads at beginning.  Decrement
6231         after thread is done.  If then zero, call exit(0).
6232         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
6233         Add ptr_nthreads.  Define HAVE_PTR_NTHREADS.
6234         * init.c (pthread_functions): Initialize ptr_nthreads.
6235         * allocatestack.c (nptl_nthreads): Remove definition and all uses.
6236         (__reclaim_stacks): Decrement __nptl_nthreads.
6237         * sysdeps/pthread/Makefile [$(subdir)==csu] (CFLAGS-libc-start.c):
6238         Define.
6239         * Makefile (tests): Add tst-basic3.
6240         * tst-basic3.c: New file.
6241
6242         * descr.h: Define CANCELING_BIT and CANCELING_BITMASK.  Introduce
6243         after CANCELTYPE_BIT, move the other bits up.  Update CANCEL_RESTMASK.
6244         * init.c (sigcancel_handler): Also set CANCELING_BITMASK bit in newval.
6245         * pthread_cancel.c (pthread_cancel): Likewise.  Also set CANCELING_BIT
6246         if asynchronous canceling is enabled.
6247         * pthread_join.c (pthread_join): When recognizing circular joins,
6248         take into account the other thread might be already canceled.
6249         * Makefile (tests): Add tst-join5.
6250         * tst-join5.c: New file.
6251
6252         * Makefile (tests): Add tst-join4.
6253         * tst-join4.c: New file.
6254
6255 2003-02-13  Ulrich Drepper  <drepper@redhat.com>
6256
6257         * tst-cond4.c (main): Add test of pthread_attr_getpshared.
6258
6259 2003-02-13  Martin Schwidefsky  <schwidefsky@de.ibm.com>
6260
6261         * sysdeps/s390/tls.h (THREAD_GETMEM, THREAD_GETMEM_NC, THREAD_SETMEM,
6262         THREAD_SETMEM_NC): Use passed descr instead of THREAD_SELF.
6263         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c (_longjmp_unwind): Avoid
6264         warning.
6265         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: Include <sys/time.h>
6266         to avoid warning.
6267         * sysdeps/unix/sysv/linux/s390/sem_post.c (__new_sem_post): Return
6268         error if lll_futex_wake failed.
6269
6270 2003-02-13  Ulrich Drepper  <drepper@redhat.com>
6271
6272         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Fix
6273         handling of cancellation and failung pthread_mutex_unlock call.
6274         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
6275         * Makefile (tests): Add tst-cond8 and tst-cond9.
6276         * tst-cond8.c: New file.
6277         * tst-cond9.c: New file.
6278
6279         * tst-cond7.c (do_test): Unlock the mutex before canceling the thread.
6280
6281         * sysdeps/pthread/pthread.h: Add missing initializers.  Protect
6282         non-standard initializers with __USE_GNU.
6283
6284         * Makefile (tests): Add tst-cleanup3.
6285         * tst-cleanup3.c: New file.
6286
6287 2003-02-12  Ulrich Drepper  <drepper@redhat.com>
6288
6289         * Makefile (tests): Add tst-attr1 and tst-attr2.
6290         * tst-attr1.c: New file.
6291         * tst-attr2.c: New file.
6292
6293         * Makefile: Add rules to build and run tst-atfork2 test.
6294         * tst-atfork2.c: New file.
6295         * tst-atfork2mod.c: New file.
6296
6297         * sysdeps/unix/sysv/linux/unregister-atfork.c
6298         (__unregister_atfork): Free the memory allocated for the handlers
6299         after removing them from the lists.
6300
6301         * sysdeps/unix/sysv/linux/register-atfork.c: Define memeory
6302         cleanup function.
6303
6304         * tst-atfork1.c (do_test): Wait for the child we forked.
6305         Report error in child.
6306
6307         * sysdeps/unix/sysv/linux/fork.c (__libc_fork): Fix comment.
6308
6309         * sysdeps/pthread/Makefile: Define CFLAGS-confstr.c.
6310
6311 2003-02-10  Ulrich Drepper  <drepper@redhat.com>
6312
6313         * Makefile (tests): Add tst-cancel8.
6314         * tst-cancel8.c: New file.
6315
6316         * sysdeps/unix/sysv/linux/i386/pthread_once.S (clear_once_control): Fix
6317         clearing of control variable.
6318         * Makefile (tests): Add tst-once3 and tst-once4.
6319         * tst-once3.c: New file.
6320         * tst-once4.c: New file.
6321
6322 2003-02-08  kaz Kojima  <kkojima@rr.iij4u.or.jp>
6323
6324         * sysdeps/sh/Makefile: New file.
6325         * sysdeps/sh/bits/atomic.h: New file.
6326         * sysdeps/sh/pthread_spin_init.c: New file.
6327         * sysdeps/sh/pthread_spin_lock.c: New file.
6328         * sysdeps/sh/pthread_spin_trylock.S: New file.
6329         * sysdeps/sh/pthread_spin_unlock.S: New file.
6330         * sysdeps/sh/pthreaddef.h: New file.
6331         * sysdeps/sh/tcb-offsets.sym: New file.
6332         * sysdeps/sh/td_ta_map_lwp2thr.c: New file.
6333         * sysdeps/sh/tls.h: New file.
6334         * sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h: New file.
6335         * sysdeps/unix/sysv/linux/sh/bits/semaphore.h: New file.
6336         * sysdeps/unix/sysv/linux/sh/createthread.c: New file.
6337         * sysdeps/unix/sysv/linux/sh/fork.c: New file.
6338         * sysdeps/unix/sysv/linux/sh/libc-lowlevellock.S: New file.
6339         * sysdeps/unix/sysv/linux/sh/libc-lowlevelmutex.S: New file.
6340         * sysdeps/unix/sysv/linux/sh/lowlevel-atomic.h: New file.
6341         * sysdeps/unix/sysv/linux/sh/lowlevelcond.h: New file.
6342         * sysdeps/unix/sysv/linux/sh/lowlevellock.S: New file.
6343         * sysdeps/unix/sysv/linux/sh/lowlevellock.h: New file.
6344         * sysdeps/unix/sysv/linux/sh/lowlevelmutex.S: New file.
6345         * sysdeps/unix/sysv/linux/sh/lowlevelrwlock.h: New file.
6346         * sysdeps/unix/sysv/linux/sh/pt-initfini.c: New file.
6347         * sysdeps/unix/sysv/linux/sh/pt-vfork.S: New file.
6348         * sysdeps/unix/sysv/linux/sh/pthread_barrier_wait.S: New file.
6349         * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S: New file.
6350         * sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S: New file.
6351         * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: New file.
6352         * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: New file.
6353         * sysdeps/unix/sysv/linux/sh/pthread_once.S: New file.
6354         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: New file.
6355         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: New file.
6356         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: New file.
6357         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: New file.
6358         * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: New file.
6359         * sysdeps/unix/sysv/linux/sh/sem_post.S: New file.
6360         * sysdeps/unix/sysv/linux/sh/sem_timedwait.S: New file.
6361         * sysdeps/unix/sysv/linux/sh/sem_trywait.S: New file.
6362         * sysdeps/unix/sysv/linux/sh/sem_wait.S: New file.
6363         * sysdeps/unix/sysv/linux/sh/sysdep-cancel.h: New file.
6364
6365 2003-02-08  Ulrich Drepper  <drepper@redhat.com>
6366
6367         * tst-cond2.c: Rearrange code to not rely on behavior undefined
6368         according to POSIX.
6369
6370         * tst-basic2.c (do_test): Lock mutex before creating the thread.
6371
6372 2003-02-07  Ulrich Drepper  <drepper@redhat.com>
6373
6374         * sysdeps/x86_64/tls.h: Remove unnecessary macros, left over from x86.
6375         (TLS_GET_FS): New #define.
6376         (TLS_SET_FS): New #define.
6377         Correct value of __NR_set_thread_area.
6378
6379         * sysdeps/x86_64/td_ta_map_lwp2thr.c: New file.
6380
6381 2003-02-06  Ulrich Drepper  <drepper@redhat.com>
6382
6383         * Makefile (tests): Add tst-popen1.
6384         * tst-popen1.c: New file.
6385
6386         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Remove wrong
6387         but inactive generalization.
6388         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: Likewise.
6389         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: Likewise.
6390         Minor optimization, remove one instruction.
6391         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: Likewise.
6392
6393 2003-02-04  Martin Schwidefsky  <schwidefsky@de.ibm.com>
6394
6395         * sysdeps/unix/sysv/linux/s390/fork.c: Correct order of parameters.
6396
6397 2003-01-31  Martin Schwidefsky  <schwidefsky@de.ibm.com>
6398
6399         * init.c (__NR_set_tid_address): Add #ifdef for s390.
6400         * sysdeps/pthread/pthread_barrier_wait.c: New file.
6401         * sysdeps/pthread/pthread_cond_broadcast.c: New file.
6402         * sysdeps/pthread/pthread_cond_signal.c: New file.
6403         * sysdeps/pthread/pthread_cond_timedwait.c: New file.
6404         * sysdeps/pthread/pthread_cond_wait.c: New file.
6405         * sysdeps/pthread/pthread_rwlock_rdlock.c: New file.
6406         * sysdeps/pthread/pthread_rwlock_timedrdlock.c: New file.
6407         * sysdeps/pthread/pthread_rwlock_timedwrlock.c: New file.
6408         * sysdeps/pthread/pthread_rwlock_unlock.c: New file.
6409         * sysdeps/pthread/pthread_rwlock_wrlock.c: New file.
6410         * sysdeps/s390/Makefile: New file.
6411         * sysdeps/s390/bits/atomic.h: New file.
6412         * sysdeps/s390/pthread_spin_init.c: New file.
6413         * sysdeps/s390/pthread_spin_lock.c: New file.
6414         * sysdeps/s390/pthread_spin_trylock.c: New file.
6415         * sysdeps/s390/pthread_spin_unlock.c: New file.
6416         * sysdeps/s390/pthreaddef.h: New file.
6417         * sysdeps/s390/tcb-offsets.sym: New file.
6418         * sysdeps/s390/td_ta_map_lwp2thr.c: New file.
6419         * sysdeps/s390/tls.h: New file.
6420         * sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h: New file.
6421         * sysdeps/unix/sysv/linux/s390/bits/semaphore.h: New file.
6422         * sysdeps/unix/sysv/linux/s390/createthread.c: New file.
6423         * sysdeps/unix/sysv/linux/s390/dl-sysdep.h: New file.
6424         * sysdeps/unix/sysv/linux/s390/fork.c: New file.
6425         * sysdeps/unix/sysv/linux/s390/jmp-unwind.c: New file.
6426         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: New file.
6427         * sysdeps/unix/sysv/linux/s390/libc-lowlevelmutex.c: New file.
6428         * sysdeps/unix/sysv/linux/s390/lowlevellock.c: New file.
6429         * sysdeps/unix/sysv/linux/s390/lowlevellock.h: New file.
6430         * sysdeps/unix/sysv/linux/s390/lowlevelmutex.c: New file.
6431         * sysdeps/unix/sysv/linux/s390/lowlevelsem.h: New file.
6432         * sysdeps/unix/sysv/linux/s390/pthread_once.c: New file.
6433         * sysdeps/unix/sysv/linux/s390/s390-32/pt-initfini.c: New file.
6434         * sysdeps/unix/sysv/linux/s390/s390-32/pt-vfork.S: New file.
6435         * sysdeps/unix/sysv/linux/s390/s390-32/sysdep-cancel.h: New file.
6436         * sysdeps/unix/sysv/linux/s390/s390-64/pt-initfini.c: New file.
6437         * sysdeps/unix/sysv/linux/s390/s390-64/pt-vfork.S: New file.
6438         * sysdeps/unix/sysv/linux/s390/s390-64/sysdep-cancel.h: New file.
6439         * sysdeps/unix/sysv/linux/s390/sem_post.c: New file.
6440         * sysdeps/unix/sysv/linux/s390/sem_timedwait.c: New file.
6441         * sysdeps/unix/sysv/linux/s390/libc-lowlevellock.c: New file.
6442         * sysdeps/unix/sysv/linux/s390/sem_wait.c: New file.
6443
6444 2003-02-04  Ulrich Drepper  <drepper@redhat.com>
6445
6446         * atomic.h: Add a couple more default implementations.
6447         (atomic_compare_and_exchange_acq): Use
6448         __arch_compare_and_exchange_32_acq in return value definition.  It
6449         always exists.
6450         (atomic_bit_set): Renamed from atomic_set_bit.
6451         Add missing atomic_ prefixes.
6452
6453         * sysdeps/pthread/bits/libc-lock.h (__libc_once): In case no
6454         thread library is available, use correct value to mark initialized
6455         once variable.
6456
6457 2003-02-03  Ulrich Drepper  <drepper@redhat.com>
6458
6459         * allocatestack.c (allocate_stack): Use __getpagesize instead of
6460         __sysconf to determine pagesize.
6461
6462         * pthread_create.c: Include <atomic.h>.
6463         * allocatestack.c (allocate_stack): Implement coloring of the
6464         allocated stack memory.  Rename pagesize to pagesize_m1.  It's the
6465         size minus one.  Adjust users.
6466         * sysdeps/i386/i686/Makefile: New file.
6467
6468 2003-02-02  Ulrich Drepper  <drepper@redhat.com>
6469
6470         * allocatestack.c: Improve comment throughout the file.
6471
6472         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
6473         (__lll_lock_wait): Add branch prediction.
6474         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S
6475         (__lll_lock_wait): Likewise.
6476         (lll_unlock_wake_cb): Removed.
6477
6478 2003-01-31  Ulrich Drepper  <drepper@redhat.com>
6479
6480         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Remove
6481         _POSIX_THREAD_PRIORITY_SCHEDULING.
6482
6483 2003-01-30  Jakub Jelinek  <jakub@redhat.com>
6484
6485         * sysdeps/pthread/pthread-functions.h (struct pthread_functions):
6486         Fix return type of ptr___pthread_getspecific.
6487
6488 2003-01-29  Ulrich Drepper  <drepper@redhat.com>
6489
6490         * Makefile (tests): Add tst-umask1.
6491         (tst-umask1-ARGS): Define.
6492         * tst-umask1.c: New file.
6493
6494 2003-01-28  Ulrich Drepper  <drepper@redhat.com>
6495
6496         * Makefile (libpthread-routines): Remove lowlevelrwlock.  Add
6497         pthread_rwlock_rdlock, pthread_rwlock_timedrdlock,
6498         pthread_rwlock_wrlock, pthread_rwlock_timedwrlock, and
6499         pthread_rwlock_unlock.
6500         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Removed
6501         * sysdeps/unix/sysv/linux/i386/i586/lowlevelrwlock.S: Removed
6502         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrwlock.S: Removed
6503         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_rdlock.S: New file.
6504         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedrdlock.S:
6505         New file.
6506         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_wrlock.S: New file.
6507         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_timedwrlock.S:
6508         New file.
6509         * sysdeps/unix/sysv/linux/i386/i486/pthread_rwlock_unlock.S: New file.
6510         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_rdlock.S: New file.
6511         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedrdlock.S:
6512         New file.
6513         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_wrlock.S: New file.
6514         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_timedwrlock.S:
6515         New file.
6516         * sysdeps/unix/sysv/linux/i386/i586/pthread_rwlock_unlock.S: New file.
6517         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_rdlock.S: New file.
6518         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedrdlock.S:
6519         New file.
6520         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_wrlock.S: New file.
6521         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_timedwrlock.S:
6522         New file.
6523         * sysdeps/unix/sysv/linux/i386/i686/pthread_rwlock_unlock.S: New file.
6524
6525         * Makefile (libpthread-routines): Remove lowlevelcond and
6526         lowlevelsem.  Add sem_wait, sem_trywait, sem_timedwait, sem_post,
6527         pthread_cond_wait, pthread_cond_timedwait, pthread_cond_signal,
6528         and pthread_cond_broadcast.
6529         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Removed
6530         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Removed
6531         * sysdeps/unix/sysv/linux/i386/i586/lowlevelsem.S: Removed
6532         * sysdeps/unix/sysv/linux/i386/i586/lowlevelcond.S: Removed
6533         * sysdeps/unix/sysv/linux/i386/i686/lowlevelsem.S: Removed
6534         * sysdeps/unix/sysv/linux/i386/i686/lowlevelcond.S: Removed
6535         * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: New file.
6536         * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: New file.
6537         * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: New file.
6538         * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: New file.
6539         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: New file.
6540         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S: New file.
6541         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: New file.
6542         * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S: New file.
6543         * sysdeps/unix/sysv/linux/i386/i586/sem_wait.S: New file.
6544         * sysdeps/unix/sysv/linux/i386/i586/sem_trywait.S: New file.
6545         * sysdeps/unix/sysv/linux/i386/i586/sem_timedwait.S: New file.
6546         * sysdeps/unix/sysv/linux/i386/i586/sem_post.S: New file.
6547         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_wait.S: New file.
6548         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_timedwait.S: New file.
6549         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_signal.S: New file.
6550         * sysdeps/unix/sysv/linux/i386/i586/pthread_cond_broadcast.S: New file.
6551         * sysdeps/unix/sysv/linux/i386/i686/sem_wait.S: New file.
6552         * sysdeps/unix/sysv/linux/i386/i686/sem_trywait.S: New file.
6553         * sysdeps/unix/sysv/linux/i386/i686/sem_timedwait.S: New file.
6554         * sysdeps/unix/sysv/linux/i386/i686/sem_post.S: New file.
6555         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_wait.S: New file.
6556         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_timedwait.S: New file.
6557         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_signal.S: New file.
6558         * sysdeps/unix/sysv/linux/i386/i686/pthread_cond_broadcast.S: New file.
6559         * sysdeps/unix/sysv/linux/i386/lowlevelcond.h: New file.
6560
6561         * sysdeps/unix/sysv/linux/i386/createthread.c: Define
6562         PREPARE_CREATE and TLS_VALUE with x86-specific bits.  All the rest
6563         of the code is moved to ...
6564         * sysdeps/pthread/createthread.c: ...here.  New file.
6565
6566 2003-01-27  Ulrich Drepper  <drepper@redhat.com>
6567
6568         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S
6569         (__new_sem_post): Clear %eax before returning.
6570         Reported by MAEDA Naoaki <maeda.naoaki@jp.fujitsu.com>.
6571
6572         * Makefile (tests): Add tst-cleanup2.
6573         * tst-cleanup2.c: New file.
6574
6575         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_region_start):
6576         Interpret first parameter correctly.
6577
6578 2003-01-17  Ulrich Drepper  <drepper@redhat.com>
6579
6580         * Makefile (headers): Add bits/semaphore.h.
6581
6582 2003-01-16  Jakub Jelinek  <jakub@redhat.com>
6583
6584         * sysdeps/i386/tls.h (INIT_SYSINFO): Initialize _head->sysinfo even
6585         if not SHARED.
6586
6587 2003-01-14  Ulrich Drepper  <drepper@redhat.com>
6588
6589         * sem_open.c (sem_open): Return SEM_FAILED if existing semaphore
6590         must be used and mapping failed.
6591         Reported by Luke Elliott <luke.elliott@activfinancial.com>.
6592
6593         * Makefile (CFLAGS-pthread_self.os): Define this, not
6594         CFLAGS-pthread_self.c.
6595
6596 2003-01-13  Ulrich Drepper  <drepper@redhat.com>
6597
6598         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Don't export
6599         lll_unlock_wake_cb.
6600
6601         * Makefile (libpthread-routines): Add version.  Add rules to build
6602         version.os and banner.h.
6603         * version.c: New file.
6604
6605 2003-01-13  Jakub Jelinek  <jakub@redhat.com>
6606
6607         * pthread_mutex_lock.c (__pthread_mutex_lock_internal): Make
6608         the alias unconditional.
6609         * pthread_mutex_unlock.c  (__pthread_mutex_unlock_internal): Likewise.
6610
6611 2003-01-13  Ulrich Drepper  <drepper@redhat.com>
6612
6613         * Makefile (CFLAGS-pthread_self.c): New definition.
6614
6615 2003-01-06  Jakub Jelinek  <jakub@redhat.com>
6616
6617         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Add
6618         INTERNAL_SYSCALL_DECL, add err argument to INTERNAL_SYSCALL* macros.
6619         * sysdeps/unix/sysv/linux/raise.c (raise): Likewise.
6620         * init.c (__pthread_initialize_minimal_internal): Likewise.
6621
6622 2003-01-07  Jakub Jelinek  <jakub@redhat.com>
6623
6624         * pthreadP.h (__pthread_cond_timedwait): Add prototype.
6625
6626         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h
6627         (RTLD_CORRECT_DYNAMIC_WEAK): Remove.
6628         (DL_SYSINFO_IMPLEMENTATION): Change into .text section and back.
6629         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h
6630         (RTLD_CORRECT_DYNAMIC_WEAK): Remove.
6631         (DL_SYSINFO_IMPLEMENTATION): Change into .text section and back.
6632
6633 2003-01-06  Jakub Jelinek  <jakub@redhat.com>
6634
6635         * pthreadP.h (LIBC_CANCEL_HANDLED): Define.
6636         * pt-system.c (LIBC_CANCEL_HANDLED): Add.
6637         * tst-cancel-wrappers.sh: Remove all exceptions.
6638
6639 2003-01-05  Ulrich Drepper  <drepper@redhat.com>
6640
6641         * tst-cancel-wrappers.sh: Invoke gawk not awk since we use GNU awk
6642         features.  Reported by Marijn Ros <marijn@mad.scientist.com>.
6643
6644         * sysdeps/unix/sysv/linux/jmp-unwind.c: Include <pthread-functions.h>.
6645         Use __libc_pthread_functions array if SHARED.
6646
6647         * pthreadP.h: Move pthread_cond_2_0_t definition to...
6648         * sysdeps/unix/sysv/linux/internaltypes.h: ...here.
6649
6650         * sysdeps/pthread/bits/libc-lock.h (__libc_ptf_call): New #define.
6651         (__libc_rwlock_rdlock, __libc_rwlock_wrlock, __libc_rwlock_unlock,
6652         __libc_key_create, __libc_getspecific, __libc_setspecific): Use
6653         __libc_ptf_call instead of __libc_maybe_call.
6654         (PTF): New #define.
6655         (__libc_cleanup_region_start): Wrap function name with PTF call.
6656         (__libc_cleanup_region_end): Likewise.
6657         (__libc_cleanup_end): Likewise.
6658
6659         * pthread_getspecific.c: Add __pthread_getspecific_internal alias.
6660         * pthread_setspecific.c: Add __pthread_setspecific_internal alias.
6661         * pthread_key_create.c: Add __pthread_key_create_internal alias.
6662         * pthreadP.h: Add prototypes.
6663
6664         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Add
6665         __pthread_rwlock_rdlock, __pthread_rwlock_wrlock, and
6666         __pthread_rwlock_unlock aliases.
6667         * pthreadP.h: Add prototypes for new aliases.
6668
6669         * pthreadP.h (struct pthead_functions): Moved to...
6670         * sysdeps/pthread/pthread-functions.h: ...here.  New file.
6671         * init.c (pthread_functions): Add initializers for new elements.
6672
6673         * cleanup_defer.c: Add __pthread_cleanup_push_defer and
6674         __pthread_cleanup_pop_restore aliases.
6675         * pthreadP.h: Add prototypes.
6676
6677         * cleanup.c: Rename _GI_pthread_cleanup_push to __pthread_cleanup_push
6678         and _GI_pthread_cleanup_pop to __pthread_cleanup_pop.
6679         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Adjust caller.
6680         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise.
6681         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: Likewise.
6682         * pthreadP.h: Adjust prototypes and callers.
6683
6684 2003-01-04  Ulrich Drepper  <drepper@redhat.com>
6685
6686         * Makefile (tests): Add tst-cancel7.
6687         (tst-cancel7-ARGS): New variable.
6688         * tst-cancel7.c: New file.
6689
6690         * old_pthread_cond_broadcast.c: Optimize initialization a bit to work
6691         around gcc defficiencies.
6692         * old_pthread_cond_signal.c: Likewise.
6693         * old_pthread_cond_timedwait.c: Likewise.
6694         * old_pthread_cond_wait.c: Likewise.
6695
6696         * pthreadP.h (pthread_cond_2_0_t): Remove unneeded lock element.
6697
6698 2003-01-03  Ulrich Drepper  <drepper@redhat.com>
6699
6700         * Makefile (tests): Add tst-cond7.
6701         * tst-cond7.c: New file.
6702
6703         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S
6704         (condvar_cleanup): Get condvar address from the right place.
6705
6706         * atomic.h: Correct definitions of atomic_full_barrier,
6707         atomic_read_barrier, atomic_write_barrier.
6708
6709         * old_pthread_cond_broadcast.c: Make memory allocate and initialization
6710         race-free.
6711         * old_pthread_cond_signal.c: Likewise.
6712         * old_pthread_cond_timedwait.c: Likewise.
6713         * old_pthread_cond_wait.c: Likewise.
6714
6715 2003-01-03  Jakub Jelinek  <jakub@redhat.com>
6716
6717         * Makefile ($(objpfx)libpthread.so): Depend on ld.so.
6718
6719 2003-01-03  Ulrich Drepper  <drepper@redhat.com>
6720
6721         * pthreadP.h (pthread_cond_2_0_t): New type.
6722         (struct pthread_functions): Use new type for 2.0 condvar callbacks.
6723         Use new type for the 2.0 condvar function prototypes.
6724         * forward.c: Use pthread_cond_2_0_t for 2.0 condvar functions.
6725         * old_pthread_cond_init.c: Use pthread_cond_2_0_t for condvar
6726         parameter.
6727         * old_pthread_cond_destroy.c: Likewise.
6728         * old_pthread_cond_broadcast.c: Likewise.  Lock appropriately.
6729         * old_pthread_cond_signal.c: Likewise.
6730         * old_pthread_cond_timedwait.c: Likewise.
6731         * old_pthread_cond_wait.c: Likewise.
6732
6733         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S
6734         (__pthread_cond_wait): Don't save cancellation mode and seq value
6735         in same location.
6736
6737         * herrno.c (__h_errno_location): Don't define as weak.
6738
6739 2003-01-02  Jakub Jelinek  <jakub@redhat.com>
6740
6741         * Versions [libc] (GLIBC_2.3.2): Export pthread_cond_broadcast,
6742         pthread_cond_destroy, pthread_cond_init, pthread_cond_signal
6743         and pthread_cond_wait.
6744         * old_pthread_cond_broadcast.c (__old_pthread_cond_broadcast):
6745         Renamed to...
6746         (__pthread_cond_broadcast_2_0): ... this.
6747         * old_pthread_cond_destroy.c (__old_pthread_cond_destroy):
6748         Renamed to...
6749         (__pthread_cond_destroy_2_0): ... this.
6750         * old_pthread_cond_init.c (__old_pthread_cond_init):
6751         Renamed to...
6752         (__pthread_cond_init_2_0): ... this.
6753         * old_pthread_cond_signal.c (__old_pthread_cond_signal):
6754         Renamed to...
6755         (__pthread_cond_signal_2_0): ... this.
6756         * old_pthread_cond_wait.c (__old_pthread_cond_wait):
6757         Renamed to...
6758         (__pthread_cond_wait_2_0): ... this.
6759         * pthread_cond_destroy.c: Include shlib-compat.h.
6760         (pthread_cond_destroy): Change strong_alias into versioned_symbol.
6761         * pthread_cond_init.c: Include shlib-compat.h.
6762         (pthread_cond_init): Change strong_alias into versioned_symbol.
6763         * pthreadP.h (struct pthread_functions): Rename ptr_pthread_cond_*
6764         fields to ptr___pthread_cond_* and add ptr___pthread_cond_*_2_0
6765         fields.
6766         (__pthread_cond_broadcast_2_0, __pthread_cond_destroy_2_0,
6767         __pthread_cond_init_2_0, __pthread_cond_signal_2_0,
6768         __pthread_cond_wait_2_0): New prototypes.
6769         (__old_pthread_cond_broadcast, __old_pthread_cond_destroy,
6770         __old_pthread_cond_init, __old_pthread_cond_signal,
6771         __old_pthread_cond_wait): Removed.
6772         * init.c: Include shlib-compat.h.
6773         (pthread_functions): Guard ptr___pthread_attr_init_2_0
6774         initialization with SHLIB_COMPAT (GLIBC_2_0, GLIBC_2_1).
6775         Rename ptr_pthread_cond_* to ptr___pthread_cond_*, initialize
6776         ptr___pthread_cond_*_2_0 fields.
6777         * forward.c: Export both pthread_cond_*@@GLIBC_2.3.2 and
6778         pthread_cond_*@GLIBC_2.0 compatibility symbols.
6779
6780         * sysdeps/pthread/sigaction.c (SIGCANCEL): Only define if
6781         LIBC_SIGACTION was not yet defined.
6782         [!defined LIBC_SIGACTION]: Define LIBC_SIGACTION, #include self.
6783         [!defined LIBC_SIGACTION] (__sigaction): New function and
6784         libc_hidden_weak.
6785         [!defined LIBC_SIGACTION] (sigaction): New weak_alias.
6786         [defined LIBC_SIGACTION]: #include_next <sigaction.c>.
6787
6788 2003-01-02  Jakub Jelinek  <jakub@redhat.com>
6789
6790         * Makefile (CFLAGS-pthread_atfork.c): Add -DNOT_IN_libc.
6791
6792 2003-01-02  Ulrich Drepper  <drepper@redhat.com>
6793
6794         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h (pthread_cond_t):
6795         New, larger type definition.
6796         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: New condvar
6797         implementation.
6798         * Versions [libpthread]: Add definitions for new pthread_cond_*
6799         interfaces for version GLIBC_2.3.2.
6800         * pthread_cond_init.c: Update initialization for new type definition.
6801         * Makefile (libpthread-routines): Remove pthread_cond_wait,
6802         pthread_cond_timedwait, pthread_cond_signal, and
6803         pthread_cond_broadcast.  Add old_pthread_cond_init,
6804         old_pthread_cond_destroy, old_pthread_cond_wait,
6805         old_pthread_cond_timedwait, old_pthread_cond_signal, and
6806         old_pthread_cond_broadcast.
6807         * old_pthread_cond_broadcast.c: New file.
6808         * old_pthread_cond_destroy.c: New file.
6809         * old_pthread_cond_init.c: New file.
6810         * old_pthread_cond_signal.c: New file.
6811         * old_pthread_cond_timedwait.c: New file.
6812         * old_pthread_cond_wait.c: New file.
6813         * pthreadP.h: Add prototypes for the compatibility interfaces.
6814
6815         * pthread_cond_destroy.c: Don't include <errno.h>.
6816
6817 2003-01-01  Ulrich Drepper  <drepper@redhat.com>
6818
6819         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Avoid
6820         unnecessary zero offset when addressing MUTEX.
6821
6822 2002-12-31  Ulrich Drepper  <drepper@redhat.com>
6823
6824         * sysdeps/unix/sysv/linux/fork.h: Add libc_hidden_proto for
6825         __register_atfork.
6826         * sysdeps/unix/sysv/linux/register-atfork.c: Add libc_hidden_def
6827         for __register_atfork.
6828
6829 2002-12-31  Jakub Jelinek  <jakub@redhat.com>
6830
6831         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Use __ASSEMBLER__
6832         instead of ASSEMBLER test macro.
6833
6834         * sysdeps/unix/sysv/linux/allocrtsig.c (__libc_current_sigrtmin,
6835         __libc_current_sigrtmax): Add libc_hidden_def.
6836
6837         * sysdeps/pthread/list.h: Remove assert.h include.
6838
6839 2002-12-31  Ulrich Drepper  <drepper@redhat.com>
6840
6841         * sysdeps/pthread/pt-initfini.c (call_initialize_minimal): Use
6842         __pthread_initialize_minimal_internal not
6843         __pthread_initialize_minimal.
6844
6845 2002-12-30  Ulrich Drepper  <drepper@redhat.com>
6846
6847         * sysdeps/pthread/pt-initfini.c (call_initialize_minimal): Mark
6848         __pthread_initialize_minimal as hidden.
6849
6850         * init.c (__pthread_initialize_minimal_internal): Don't mark as
6851         constructor.
6852
6853 2002-12-31  Jakub Jelinek  <jakub@redhat.com>
6854
6855         * Makefile ($(inst_libdir)/libpthread.so): Depend on
6856         $(common-objpfx)format.lds, include that into the output script.
6857         Fix comment.
6858         (extra-B-pthread.so): Change linuxthreads/ into nptl/.
6859
6860 2002-12-28  Andreas Jaeger  <aj@suse.de>
6861
6862         * sysdeps/unix/sysv/linux/xstatconv.c (xstat_conv): Adjust for
6863         nsec resolution changes.
6864         (xstat64_conv): Likewise.
6865         (xstat32_conv): Likewise.
6866         * sysdeps/unix/sysv/linux/kernel_stat.h: Add nsec resolution for
6867         struct kernel_stat.
6868         * sysdeps/unix/sysv/linux/bits/stat.h: Add nsec resolution for
6869         structs stat and stat64.
6870         * time/time.h (__timespec_defined): Define for __USE_MISC.
6871         * io/sys/stat.h [__USE_MISC]: Define __need_timespec for struct stat.
6872
6873 2002-12-30  Jakub Jelinek  <jakub@redhat.com>
6874
6875         * forward.c (FORWARD2): Renamed from FORWARD3.  Remove unused export
6876         argument.
6877         (pthread_attr_init_2_0, pthread_attr_init_2_1): Use FORWARD macro.
6878         (pthread_exit): Use strong_alias to avoid warnings.
6879         * pthreadP.h (struct pthread_functions): Rename ptr_pthread_exit
6880         and ptr_pthread_attr_init_2_* to ptr___pthread_exit and
6881         ptr___pthread_attr_init_2_*.
6882         * init.c (pthread_functions): Adjust.
6883
6884 2002-12-29  Ulrich Drepper  <drepper@redhat.com>
6885
6886         * forward.c: Make all functions available by default again.  It
6887         caused too much trouble.
6888
6889         * pt-siglongjmp.c: Removed.
6890
6891 2002-12-28  Jakub Jelinek  <jakub@redhat.com>
6892
6893         * sysdeps/i386/tls.h: Include tcb-offsets.h in assembler.
6894         (SYSINFO_OFFSET, MULTIPLE_THREADS_OFFSET): Remove.
6895         * sysdeps/i386/Makefile: New file.
6896         * sysdeps/i386/tcb-offsets.sym: New file.
6897         * sysdeps/pthread/tcb-offsets.h: New file.
6898         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
6899         Remove MULTIPLE_THREADS_OFFSET and SYSINFO_OFFSET checks.
6900
6901         * sysdeps/unix/sysv/linux/Versions [libc] (GLIBC_PRIVATE): Move
6902         __register_atfork...
6903         (GLIBC_2.3.2): ...here.
6904
6905 2002-12-28  Ulrich Drepper  <drepper@redhat.com>
6906
6907         * sysdeps/pthread/pthread.h: Mark pthread_attr_getstackaddr and
6908         pthread_attr_setstackaddr with __attribute_deprecated__.
6909
6910 2002-12-27  Jakub Jelinek  <jakub@redhat.com>
6911
6912         * pt-system.c (system): Remove cancellation handling.
6913         * tst-cancel-wrappers.sh: Allow pt-system.o* to not use the
6914         cancellation routines.
6915
6916 2002-12-28  Ulrich Drepper  <drepper@redhat.com>
6917
6918         * descr.h: Include <dl-sysdep.h>.
6919         (struct pthread): Move header.data.list to the back of the struct.
6920         * sysdeps/i386/tls.h (tcbhead_t): Move list to the back of the struct.
6921         (MULTIPLE_THREADS_OFFSET): Adjust offset.
6922         (SYSINFO_OFFSEET): Likewise.
6923
6924 2002-12-27  Jakub Jelinek  <jakub@redhat.com>
6925
6926         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h (USE_DL_SYSINFO):
6927         Define.
6928         (DL_SYSINFO_DEFAULT): Cast to uintptr_t to avoid warnings.
6929         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h (NEED_DL_SYSINFO,
6930         DL_SYSINFO_DEFAULT, DL_SYSINFO_IMPLEMENTATION): Define.
6931         (USE_DL_SYSINFO): Undef.
6932
6933 2002-12-22  Jakub Jelinek  <jakub@redhat.com>
6934
6935         * Makefile (tests-reverse): Use $(objpfx)../libc.so instead of
6936         $(common-objpfx)libc.so.
6937         * tst-cancel4.c (tf_write, tf_writev): Increase buf sizes so that
6938         it is bigger than pipe buffer size even on arches with bigger
6939         page size.
6940         (tf_usleep): Cast usleep argument to useconds_t to avoid warnings.
6941
6942 2002-12-25  Ulrich Drepper  <drepper@redhat.com>
6943
6944         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Implement
6945         correct errno access for case that USE___THREAD is not defined.
6946
6947 2002-12-24  Ulrich Drepper  <drepper@redhat.com>
6948
6949         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Add missing #endif.
6950         Patch by Marijn Ros <marijn@mad.scientist.com>.
6951
6952 2002-12-22  Roland McGrath  <roland@redhat.com>
6953
6954         * Makefile (omit-deps): Add $(unix-syscalls:%=ptw-%).
6955
6956 2002-12-20  Ulrich Drepper  <drepper@redhat.com>
6957
6958         * sysdeps/pthread/bits/stdio-lock.h (_IO_lock_inexpensive): Define.
6959
6960 2002-12-19  Ulrich Drepper  <drepper@redhat.com>
6961
6962         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Don't define
6963         NEED_DL_SYSINFO since no processor < i686 had the sysenter opcode.
6964         * sysdeps/unix/sysv/linux/i386/i686/dl-sysdep.h: New file.
6965
6966         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Use ENTER_KERNEL instead
6967         of int $0x80.
6968         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
6969         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: Likewise.
6970         * sysdeps/unix/sysv/linux/i386/i486/lowlevelcond.S: Likewise.
6971         * sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S: Likewise.
6972         * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S: Likewise.
6973         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Likewise.
6974         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Likewise.
6975         * sysdeps/unix/sysv/linux/i386/i486/pthread_barrier_wait.S: Likewise.
6976
6977         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Add support for using
6978         sysenter.
6979         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Likewise.
6980
6981         * sysdeps/i386/tls.h: Unconditionally include <dl-sysdep.h>.
6982
6983         * allocatestack.c (allocate_stack) [NEED_DL_SYSINFO]: Set sysinfo
6984         in new TCB.
6985         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Check
6986         that sysinfo is properly initialized.
6987         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define RTLD_PRIVATE_ERRNO
6988         to 1 only for ld.so.
6989
6990         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Define
6991         RTLD_CORRECT_DYNAMIC_WEAK.
6992
6993 2002-12-19  Jakub Jelinek  <jakub@redhat.com>
6994
6995         * forward.c (pthread_attr_init_2_0, pthread_attr_init_2_1):
6996         Use return 0 as 6th argument to FORWARD4.
6997         * pthread_equal.c: Include pthreadP.h instead of pthread.h.
6998
6999 2002-12-18  Ulrich Drepper  <drepper@redhat.com>
7000
7001         * descr.h (struct pthread) [NEED_DL_SYSINFO]: Add sysinfo member.
7002         * sysdeps/i386/tls.h (tcbhead_t): Add sysinfo member.
7003         Define SYSINFO_OFFSEET if NEED_DL_SYSINFO is defined.
7004         (INIT_SYSINFO): New #define.
7005         (TLS_TP_INIT): Use INIT_SYSINFO.
7006         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
7007         At test to make sure SYSINFO_OFFSET value is correct.
7008         * sysdeps/unix/sysv/linux/i386/dl-sysdep.h: New file.
7009
7010 2002-12-18  Jakub Jelinek  <jakub@redhat.com>
7011
7012         * sysdeps/pthread/flockfile.c (flockfile): Change into weak alias.
7013         * sysdeps/unix/sysv/linux/raise.c (gsignal): Add weak alias to raise.
7014         * Versions [libc: GLIBC_2.0]: Add pthread_attr_init.
7015         [libpthread: GLIBC_2.1]: Remove __pthread_rwlock_init,
7016         __pthread_rwlock_destroy, __pthread_rwlock_rdlock,
7017         __pthread_rwlock_wrlock, __pthread_rwlock_unlock,
7018         __pthread_rwlock_tryrdlock and __pthread_rwlock_trywrlock.
7019
7020 2002-12-18  Ulrich Drepper  <drepper@redhat.com>
7021
7022         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Use ENTER_KERNEL
7023         macro instead of using int $0x80 directly.
7024
7025         * sysdeps/pthread/bits/stdio-lock.h: New file.
7026         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevelmutex.S: New file.
7027         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevelmutex.S: New file.
7028         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevelmutex.S: New file.
7029         * Makefile (routines): Add libc-lowlevelmutex.
7030
7031         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Remove
7032         __i686.get_pc_thunk.dx.
7033
7034 2002-12-17  Jakub Jelinek  <jakub@redhat.com>
7035
7036         * Makefile (libpthread-shared-only-routines): Add pt-allocrtsig.
7037         (tests): Depend on $(objpfx)tst-cancel-wrappers.out.
7038         ($(objpfx)tst-cancel-wrappers.out): New rule.
7039         * tst-cancel-wrappers.sh: New test.
7040         * tst-locale1.c: Include signal.h.
7041         (uselocale): Test static linking of __libc_current_sigrt*.
7042
7043 2002-12-17  Ulrich Drepper  <drepper@redhat.com>
7044
7045         * Makefile (tests): Add tst-cancel6.
7046         * tst-cancel6.c: New file
7047
7048 2002-12-17  Jakub Jelinek  <jakub@redhat.com>
7049
7050         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (SINGLE_THREAD_P):
7051         Define meaningfully for assembler as well.
7052         * pthreadP.h (struct pthread_functions): Remove
7053         ptr_pthread_attr_init field.  Add ptr_pthread_attr_init_2_0
7054         and ptr_pthread_attr_init_2_1 fields.
7055         * init.c (pthread_functions): Initialize ptr_pthread_attr_init_2_0
7056         and ptr_pthread_attr_init_2_1 instead of ptr_pthread_attr_init.
7057         * forward.c (FORWARD4): Renamed from FORWARD3. Add export argument.
7058         (FORWARD3): Define using FORWARD4.
7059         (pthread_attr_init): Provide both @GLIBC_2.0 and @@GLIBC_2.1
7060         versions.
7061         * pt-system.c: Remove duplicate stdlib.h include.
7062
7063 2002-12-16  Ulrich Drepper  <drepper@redhat.com>
7064
7065         * sem_init.c: Define sem_init@GLIBC_2.0.
7066         * sem_destroy.c: Define sem_destroy@GLIBC_2.0.
7067         * sem_getvalue.c: Define sem_getvalue@GLIBC_2.0.
7068
7069         * flockfile.c: Moved to...
7070         * sysdeps/pthread/flockfile.c: ...here.  New file.
7071         * funlockfile.c: Moved to...
7072         * sysdeps/pthread/funlockfile.c: ...here.  New file.
7073         * ftrylockfile.c: Moved to...
7074         * sysdeps/pthread/ftrylockfile.c: ...here.  New file.
7075
7076 2002-12-16  Jakub Jelinek  <jakub@redhat.com>
7077
7078         * libc-cancellation.c: Guard both function with
7079         #if !defined NOT_IN_libc.
7080         * Makefile (libpthread-routines): Use ptw-, not pt- prefix for the
7081         automatically provided pthread wrappers.
7082         * pthreadP.h (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET): Define to
7083         CANCEL_* if IS_IN_libpthread and to dummy versions if not in libc
7084         nor in libpthread.
7085         * pt-open.c: Removed.
7086         * pt-fcntl.c: Removed.
7087         * pt-fsync.c: Removed.
7088         * pt-lseek.c: Removed.
7089         * pt-msgrcv.c: Removed.
7090         * pt-msgsnd.c: Removed.
7091         * pt-msync.c: Removed.
7092         * pt-nanosleep.c: Removed.
7093         * pt-open64.c: Removed.
7094         * pt-pause.c: Removed.
7095         * pt-pread.c: Removed.
7096         * pt-pread64.c: Removed.
7097         * pt-pwrite.c: Removed.
7098         * pt-pwrite64.c: Removed.
7099         * pt-read.c: Removed.
7100         * pt-recv.c: Removed.
7101         * pt-recvfrom.c: Removed.
7102         * pt-recvmsg.c: Removed.
7103         * pt-send.c: Removed.
7104         * pt-sendto.c: Removed.
7105         * pt-sigtimedwait.c: Removed.
7106         * pt-sigwait.c: Removed.
7107         * pt-wait.c: Removed.
7108         * pt-waitpid.c: Removed.
7109         * pt-write.c: Removed.
7110         * pt-accept.c: Removed.
7111         * pt-close.c: Removed.
7112         * pt-connect.c: Removed.
7113         * pt-lseek64.c: Removed.
7114         * pt-sendmsg.c: Removed.
7115         * pt-tcdrain.c: Removed.
7116
7117 2002-12-15  Ulrich Drepper  <drepper@redhat.com>
7118
7119         * init.c (__pthread_initialize_minimal_internal): Renamed from
7120         __pthread_initialize_minimal.  Make old name an alias.  This
7121         converts a normal relocation into a relative relocation.
7122
7123         * pt-fcntl.c (__fcntl): Use fcntl64 syscall, not fcntl.
7124
7125         * Versions [libpthread: GLIBC_2.3.2]: Remove creat, poll, pselect,
7126         readv, select, sigpause, sigsuspend, sigwaitinfo, waitid, writev.
7127         * Makefile (libpthread-routines): Remove pt-creat, pt-poll,
7128         pt-pselect, pt-readv, pt-select, pt-sigpause, pt-sigsuspend,
7129         pt-sigwaitinfo, pt-waitid, and pt-writev.
7130         * pt-creat.c: Removed.
7131         * pt-poll.c: Removed.
7132         * pt-pselect.c: Removed.
7133         * pt-readv.c: Removed.
7134         * pt-select.c: Removed.
7135         * pt-sigpause.c: Removed.
7136         * pt-sigsuspend.c: Removed.
7137         * pt-sigwaitinfo.c: Removed.
7138         * pt-waitid.c: Removed.
7139         * pt-writev.c: Removed.
7140
7141         * init.c (pthread_functions): New variable.
7142         (__pthread_initialize_minimal): Pass pointer to pthread_functions
7143         (or NULL) to __libc_pthread_init.
7144         * forward.c: Rewrite to use __libc:pthread_functions array to get
7145         function addresses.
7146         * sysdeps/unix/sysv/linux/fork.h: Remove __libc_pthread_init
7147         prototype.
7148         * sysdeps/unix/sysv/linux/libc_pthread_init.c (__libc_pthread_init):
7149         Take new parameter.  Copy content of variable pointed to by it
7150         to __libc_pthread_init.
7151
7152         * pthreadP.h (struct pthread_functions): New type.
7153         (__libc_pthread_init): Declare.
7154
7155         * pthread_attr_destroy.c: Add namespace protected alias.
7156         * pthread_attr_getdetachstate.c: Likewise.
7157         * pthread_attr_getinheritsched.c: Likewise.
7158         * pthread_attr_getschedparam.c: Likewise.
7159         * pthread_attr_getschedpolicy.c: Likewise.
7160         * pthread_attr_getscope.c: Likewise.
7161         * pthread_attr_setdetachstate.c: Likewise.
7162         * pthread_attr_setinheritsched.c: Likewise.
7163         * pthread_attr_setschedparam.c: Likewise.
7164         * pthread_attr_setschedpolicy.c: Likewise.
7165         * pthread_attr_setscope.c: Likewise.
7166         * pthread_cond_broadcast.c: Likewise.
7167         * pthread_cond_destroy.c: Likewise.
7168         * pthread_cond_init.c: Likewise.
7169         * pthread_cond_signal.c: Likewise.
7170         * pthread_cond_wait.c: Likewise.
7171         * pthread_condattr_destroy.c: Likewise.
7172         * pthread_condattr_init.c: Likewise.
7173         * pthread_equal.c: Likewise.
7174         * pthread_exit.c: Likewise.
7175         * pthread_getschedparam.c: Likewise.
7176         * pthread_self.c: Likewise.
7177         * pthread_setcancelstate.c: Likewise.
7178         * pthread_setschedparam.c: Likewise.
7179         * pthread_mutex_destroy.c: Likewise.
7180         * pthread_mutex_init.c: Likewise.
7181         * pthreadP.h: Add prototypes for the aliases.
7182
7183         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Set
7184         multiple_threads member in correct TCB to 1.
7185
7186         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Define
7187         SINGLE_THREAD_P.  If in libc or libpthread examine multiple_thread
7188         member of thread decriptor, otherwise return unconditionally 1.
7189
7190 2002-12-14  Ulrich Drepper  <drepper@redhat.com>
7191
7192         * sysdeps/unix/sysv/linux/i386/pt-socket.S: Changes folded into the
7193         regular Linux version.  Remove file.
7194         * sysdeps/unix/sysv/linux/connect.S: Likewise.  Remove file.
7195         * sysdeps/unix/sysv/linux/llseek.c: Likewise.  Remove file.
7196         * sysdeps/unix/sysv/linux/msgrcv.c: Likewise.  Remove file.
7197         * sysdeps/unix/sysv/linux/msgsnd.c: Likewise.  Remove file.
7198         * sysdeps/unix/sysv/linux/open64.c: Likewise.  Remove file.
7199         * sysdeps/unix/sysv/linux/poll.c: Likewise.  Remove file.
7200         * sysdeps/unix/sysv/linux/pread.c: Likewise.  Remove file.
7201         * sysdeps/unix/sysv/linux/pread64.c: Likewise.  Remove file.
7202         * sysdeps/unix/sysv/linux/pselect.c: Likewise.  Remove file.
7203         * sysdeps/unix/sysv/linux/pwrite.c: Likewise.  Remove file.
7204         * sysdeps/unix/sysv/linux/pwrite64.c: Likewise.  Remove file.
7205         * sysdeps/unix/sysv/linux/readv.c: Likewise.  Remove file.
7206         * sysdeps/unix/sysv/linux/recv.S: Likewise.  Remove file.
7207         * sysdeps/unix/sysv/linux/recvfrom.S: Likewise.  Remove file.
7208         * sysdeps/unix/sysv/linux/recvmsg.S: Likewise.  Remove file.
7209         * sysdeps/unix/sysv/linux/send.S: Likewise.  Remove file.
7210         * sysdeps/unix/sysv/linux/sendmsg.S: Likewise.  Remove file.
7211         * sysdeps/unix/sysv/linux/sendto.S: Likewise.  Remove file.
7212         * sysdeps/unix/sysv/linux/sigpause.c: Likewise.  Remove file.
7213         * sysdeps/unix/sysv/linux/sigsuspend.c: Likewise.  Remove file.
7214         * sysdeps/unix/sysv/linux/sigtimedwait.c: Likewise.  Remove file.
7215         * sysdeps/unix/sysv/linux/sigwait.c: Likewise.  Remove file.
7216         * sysdeps/unix/sysv/linux/sigwaitinfo.c: Likewise.  Remove file.
7217         * sysdeps/unix/sysv/linux/system.c: Likewise.  Remove file.
7218         * sysdeps/unix/sysv/linux/tcdrain.c: Likewise.  Remove file.
7219         * sysdeps/unix/sysv/linux/wait.c: Likewise.  Remove file.
7220         * sysdeps/unix/sysv/linux/waitid.c: Likewise.  Remove file.
7221         * sysdeps/unix/sysv/linux/waitpid.c: Likewise.  Remove file.
7222         * sysdeps/unix/sysv/linux/writev.c: Likewise.  Remove file.
7223         * sysdeps/unix/sysv/linux/i386/fcntl.c: Likewise.  Remove file.
7224
7225 2002-12-14  Jakub Jelinek  <jakub@redhat.com>
7226
7227         * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: New file.
7228         * sysdeps/unix/sysv/linux/open.c: Removed.
7229         * sysdeps/unix/sysv/linux/fsync.c: Removed.
7230         * sysdeps/unix/sysv/linux/lseek.c: Removed.
7231         * sysdeps/unix/sysv/linux/msync.c: Removed.
7232         * sysdeps/unix/sysv/linux/read.c: Removed.
7233         * sysdeps/unix/sysv/linux/close.c: Removed.
7234         * sysdeps/unix/sysv/linux/creat.c: Removed.
7235         * sysdeps/unix/sysv/linux/nanosleep.c: Removed.
7236         * sysdeps/unix/sysv/linux/pause.c: Removed.
7237         * sysdeps/unix/sysv/linux/select.c: Removed.
7238         * sysdeps/unix/sysv/linux/write.c: Removed.
7239
7240 2002-12-14  Ulrich Drepper  <drepper@redhat.com>
7241
7242         * sysdeps/unix/sysv/linux/i386/pt-socket.S: Check multiple_threads
7243         element in TCB to see whether locking is needed.
7244
7245         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Check that
7246         MULTIPLE_THREADS_OFFSET value is correct.
7247
7248         * sysdeps/unix/sysv/linux/close.c: New file.
7249         * sysdeps/unix/sysv/linux/connect.S: New file.
7250         * sysdeps/unix/sysv/linux/creat.c: New file.
7251         * sysdeps/unix/sysv/linux/fsync.c: New file.
7252         * sysdeps/unix/sysv/linux/llseek.c: New file.
7253         * sysdeps/unix/sysv/linux/lseek.c: New file.
7254         * sysdeps/unix/sysv/linux/msgrcv.c: New file.
7255         * sysdeps/unix/sysv/linux/msgsnd.c: New file.
7256         * sysdeps/unix/sysv/linux/msync.c: New file.
7257         * sysdeps/unix/sysv/linux/nanosleep.c: New file.
7258         * sysdeps/unix/sysv/linux/open.c: New file.
7259         * sysdeps/unix/sysv/linux/open64.c: New file.
7260         * sysdeps/unix/sysv/linux/pause.c: New file.
7261         * sysdeps/unix/sysv/linux/poll.c: New file.
7262         * sysdeps/unix/sysv/linux/pread.c: New file.
7263         * sysdeps/unix/sysv/linux/pread64.c: New file.
7264         * sysdeps/unix/sysv/linux/pselect.c: New file.
7265         * sysdeps/unix/sysv/linux/pwrite.c: New file.
7266         * sysdeps/unix/sysv/linux/pwrite64.c: New file.
7267         * sysdeps/unix/sysv/linux/readv.c: New file.
7268         * sysdeps/unix/sysv/linux/recv.S: New file.
7269         * sysdeps/unix/sysv/linux/recvfrom.S: New file.
7270         * sysdeps/unix/sysv/linux/recvmsg.S: New file.
7271         * sysdeps/unix/sysv/linux/select.c: New file.
7272         * sysdeps/unix/sysv/linux/send.S: New file.
7273         * sysdeps/unix/sysv/linux/sendmsg.S: New file.
7274         * sysdeps/unix/sysv/linux/sendto.S: New file.
7275         * sysdeps/unix/sysv/linux/sigpause.c: New file.
7276         * sysdeps/unix/sysv/linux/sigsuspend.c: New file.
7277         * sysdeps/unix/sysv/linux/sigtimedwait.c: New file.
7278         * sysdeps/unix/sysv/linux/sigwait.c: New file.
7279         * sysdeps/unix/sysv/linux/sigwaitinfo.c: New file.
7280         * sysdeps/unix/sysv/linux/system.c: New file.
7281         * sysdeps/unix/sysv/linux/tcdrain.c: New file.
7282         * sysdeps/unix/sysv/linux/wait.c: New file.
7283         * sysdeps/unix/sysv/linux/waitid.c: New file.
7284         * sysdeps/unix/sysv/linux/waitpid.c: New file.
7285         * sysdeps/unix/sysv/linux/writev.c: New file.
7286         * sysdeps/unix/sysv/linux/i386/fcntl.c: New file.
7287
7288         * pt-readv.c: Fix comment.
7289
7290 2002-12-14  Jakub Jelinek  <jakub@redhat.com>
7291
7292         * tst-cleanup1.c: Include stdlib.h.
7293
7294         * tst-cancel5.c: New test.
7295         * Makefile (tests): Add tst-cancel5.
7296         (tst-cancel5): Link against libc.so libpthread.so in that order.
7297
7298 2002-12-13  Ulrich Drepper  <drepper@redhat.com>
7299
7300         * forward.c (test_loaded): Prevent recursive calls.
7301
7302         * Makefile (routines): Add libc-cancellation.
7303         * libc-cancellation.c: New file.
7304         * descr.h (struct pthread): Add multiple_threads field.
7305         * allocatestack.c (allocate_stack): Initialize multiple_header field of
7306         new thread descriptor to 1.
7307         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread):
7308         Initialize multiple_thread field after successful thread creation.
7309         * cancellation.c (__do_cancel): Move to pthreadP.h.
7310         (__pthread_enable_asynccancel): Remove parameter from __do_cancel call.
7311         (__pthread_disable_asynccancel): Add internal_function attribute.
7312         * init.c (sigcancel_handler): Remove parameter from __do_cancel call.
7313         * pthread_setcancelstate.c: Likewise.
7314         * pthread_setcanceltype.c: Likewise.
7315         * pthread_exit.c: Likewise.
7316         * pthreadP.h (CANCELLATION_P): Likewise.
7317         (__do_cancel): Define as static inline.
7318         (LIBC_CANCEL_ASYNC, LIBC_CANCEL_RESET): New #defines.
7319         (__libc_enable_asynccancel, __libc_disable_asynccancel): New
7320         declarations.
7321         * sysdeps/i386/tls.h (tcbhead_t): Add list and multiple_threads
7322         fields.  Define MULTIPLE_THREADS_OFFSET.
7323         * sysdeps/pthread/bits/libc-lock.h: Remove __libc_locking_needed
7324         declaration.
7325         * sysdeps/unix/sysv/linux/accept.S: New file.
7326         * sysdeps/unix/sysv/linux/read.c: New file.
7327         * sysdeps/unix/sysv/linux/write.c: New file.
7328         * sysdeps/unix/sysv/linux/i386/pt-socket.S: New file.
7329         * sysdeps/unix/sysv/linux/libc_pthread_init.c: Remove definition and
7330         initialization of __libc_locking_needed.
7331         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Don't use
7332         __libc_locking_needed, use multiple_threads field in TCB.
7333         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
7334
7335 2002-12-12  Ulrich Drepper  <drepper@redhat.com>
7336
7337         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevellock.S: Use i486
7338         version.
7339         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevellock.S: Likewise.
7340
7341         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Correct
7342         access to __libc_locking_needed for PIC.
7343
7344 2002-12-12  Jakub Jelinek  <jakub@redhat.com>
7345
7346         * sysdeps/pthread/bits/libc-lock.h (__libc_locking_needed): Only
7347         declare for libc.so.
7348         (__libc_lock_init, __libc_lock_init_recursive): Change into comma
7349         expression.
7350         (__libc_lock_lock): Put into statement expression.
7351         (__libc_lock_unlock): Remove trailing semicolon.
7352         * sysdeps/unix/sysv/linux/fork.h (__libc_pthread_init): Fix typo.
7353
7354 2002-12-12  Roland McGrath  <roland@redhat.com>
7355
7356         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use asm operand with
7357         "m" constraint to refer to __libc_locking_needed.  Declare it here.
7358
7359 2002-12-12  Ulrich Drepper  <drepper@redhat.com>
7360
7361         * sysdeps/unix/sysv/linux/fork-gen.c: Renamed to...
7362         * sysdeps/unix/sysv/linux/libc_pthread_init.c: ...this.
7363         Initialize __libc_locking_needed.
7364         * init.c (__pthread_initialize_minimal): Call __libc_pthread_init
7365         instead of __register_pthread_fork_handler.
7366         * sysdeps/pthread/bits/libc-lock.h: Declare __libc_locking_needed.
7367         * sysdeps/unix/sysv/linux/Makefile (sysdep_routimes): Replace
7368         fork-gen with libc_pthread_init.
7369         * sysdeps/unix/sysv/linux/Versions: Use __libc_pthread_init instead
7370         of __register_pthread_fork_handler.
7371         * sysdeps/unix/sysv/linux/fork.h: Declare __libc_pthread_init instead
7372         of __register_pthread_fork_handler.
7373         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Use
7374         __libc_locking_needed to determine whether lock prefix can be avoided.
7375         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: Likewise.
7376
7377 2002-12-11  Ulrich Drepper  <drepper@redhat.com>
7378
7379         * Makefile (tests): Add tst-cleanup1.
7380         * tst-cleanup1.c: New file.
7381         * cancellation.c (__cleanup_thread): Removed.
7382         (__do_cancel): Remove call to __cleanup_thread.
7383         * pthreadP.h: Remove __cleanup_thread prorotype.
7384
7385         * sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_region_start):
7386         Remember function and argument even if cancellation handler
7387         function is not available.
7388         (__libc_cleanup_region_end): Execute registered function directly if
7389         pthread functions are not available.
7390         (__libc_cleanup_end): Likewise.
7391
7392         * init.c (__pthread_initialize_minimal): Fix initialization in
7393         static lib by preventing gcc from being too clever.
7394
7395 2002-12-10  Ulrich Drepper  <drepper@redhat.com>
7396
7397         * init.c (__pthread_initialize_minimal): Remove unneccesary
7398         sigaddset call.
7399
7400         * Makefile (tests): We can run tst-locale2 now.
7401
7402 2002-12-09  Ulrich Drepper  <drepper@redhat.com>
7403
7404         * Versions: Remove duplicated sigwait entry.
7405
7406 2002-12-08  Ulrich Drepper  <drepper@redhat.com>
7407
7408         * pthreadP.h: Enable pthread_cleanup_{push,pop} optimizations only
7409         inside libpthread.
7410
7411         * pt-fcntl.c (__fcntl): Initialize oldtype to avoid warning.
7412
7413         * pthreadP.h: Declare __pthread_enable_asynccancel and
7414         __pthread_disable_asynccancel.
7415         (CANCEL_ASYNC): Use __pthread_enable_asynccancel.
7416         (CANCEL_RESET): Use __pthread_disable_asynccancel.
7417         * cancellation.c (__pthread_enable_asynccancel): New function.
7418         (__pthread_disable_asynccancel): New function.
7419         * pt-accept.c: Adjust for CANCEL_ASYNC and CANCEL_RESET change.
7420         * pt-close.c: Likewise.
7421         * pt-connect.c: Likewise.
7422         * pt-creat.c: Likewise.
7423         * pt-fcntl.c: Likewise.
7424         * pt-fsync.c: Likewise.
7425         * pt-lseek.c: Likewise.
7426         * pt-lseek64.c: Likewise.
7427         * pt-msgrcv.c: Likewise.
7428         * pt-msgsnd.c: Likewise.
7429         * pt-msync.c: Likewise.
7430         * pt-nanosleep.c: Likewise.
7431         * pt-open.c: Likewise.
7432         * pt-open64.c: Likewise.
7433         * pt-pause.c: Likewise.
7434         * pt-poll.c: Likewise.
7435         * pt-pread.c: Likewise.
7436         * pt-pread64.c: Likewise.
7437         * pt-pselect.c: Likewise.
7438         * pt-pwrite.c: Likewise.
7439         * pt-pwrite64.c: Likewise.
7440         * pt-read.c: Likewise.
7441         * pt-readv.c: Likewise.
7442         * pt-recv.c: Likewise.
7443         * pt-recvfrom.c: Likewise.
7444         * pt-recvmsg.c: Likewise.
7445         * pt-select.c: Likewise.
7446         * pt-send.c: Likewise.
7447         * pt-sendmsg.c: Likewise.
7448         * pt-sendto.c: Likewise.
7449         * pt-sigpause.c: Likewise.
7450         * pt-sigsuspend.c: Likewise.
7451         * pt-sigtimedwait.c: Likewise.
7452         * pt-sigwait.c: Likewise.
7453         * pt-sigwaitinfo.c: Likewise.
7454         * pt-system.c: Likewise.
7455         * pt-tcdrain.c: Likewise.
7456         * pt-wait.c: Likewise.
7457         * pt-waitid.c: Likewise.
7458         * pt-waitpid.c: Likewise.
7459         * pt-write.c: Likewise.
7460         * pt-writev.c: Likewise.
7461         * pthread_join.c: Likewise.
7462         * pthread_timedjoin.c: Likewise.
7463
7464         * pt-sigpause.c (sigsuspend): Call __sigsuspend.
7465         (__xpg_sigpause): New function.
7466         * Versions (libpthread:GLIBC_2.3.2): Add __xpg_sigpause.
7467
7468 2002-12-07  Ulrich Drepper  <drepper@redhat.com>
7469
7470         * Makefile (CFLAGS-ftrylockfile.c): Add -D_IO_MTSAFE_IO.
7471
7472         * cleanup.c: Move declarations of _GI_pthread_cleanup_push and
7473         _GI_pthread_cleanup_pop to pthreadP.h.
7474
7475         * ftrylockfile.c: Use _IO_lock_trylock instead of
7476         pthread_mutex_trylock.
7477
7478         * pthreadP.h (CANCEL_ASYNC): Use __pthread_setcanceltype.
7479         (CANCEL_RESET): Likewise.
7480         (__pthread_setcanceltype_): Declare.
7481         (__pthread_mutex_lock_internal): Declare.
7482         (__pthread_mutex_unlock_internal): Declare.
7483         (__pthread_once_internal): Declare.
7484         (pthread_cleanup_push): Redefine using _GI_pthread_cleanup_push.
7485         (pthread_cleanup_pop): Redefine using _GI_pthread_cleanup_pop.
7486
7487         * pthread_cond_timedwait.c: Use INTUSE is calls to pthread_mutex_lock
7488         and pthread_mutex_unlock.
7489         * pthread_cond_wait.c: Likewise.
7490         * pthread_mutex_lock.c: Use INTDEF to define alias if needed.
7491         * pthread_mutex_unlock.c: Likewise.
7492
7493         * pthread_setcanceltype.c: Add additional alias
7494         __pthread_setcanceltype.
7495
7496         * sem_unlink.c (sem_unlink): Use __pthread_once with INTDEF.
7497         * sem_open.c (sem_open): Likewise.
7498         Use __libc_open, __libc_write, and __libc_close instead of
7499         open, write, and close respectively.
7500
7501         * sysdeps/pthread/bits/libc-lock.h (__libc_lock_trylock_internal):
7502         Rewrite as statement expression since it must return a value.
7503
7504         * pthread_cancel.c: Use __pthread_kill instead of pthread_kill.
7505         * sysdeps/unix/sysv/linux/pthread_kill.c: Define additional alias
7506         __pthread_kill.
7507
7508         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Define additional
7509         alias __pthread_once_internal.
7510
7511         * sysdeps/unix/sysv/linux/raise.c: Use libc_hidden_def for raise.
7512
7513 2002-12-06  Ulrich Drepper  <drepper@redhat.com>
7514
7515         * Makefile (tests): Add tst-stdio1 and tst-stdio2.
7516         * tst-stdio1.c: New file.
7517         * tst-stdio2.c: New file.
7518
7519         * init.c (__pthread_initialize_minimal): Correct INIT_LIST_HEAD use.
7520
7521         * Makefile (tests): Comment out tst-locale2 for now.
7522         (CFLAGS-flockfile.c, CFLAGS-funlockfile.c): Define to -D_IO_MTSAFE_IO.
7523
7524         * sysdeps/unix/sysv/linux/Makefile: Define CFLAGS-fork.c to
7525         -D_IO_MTSAFE_IO.
7526         * sysdeps/unix/sysv/linux/fork.c: Include <bits/stdio-lock.h>.
7527         Use _IO_lock_init instead of explicit assignment.
7528
7529         * sysdeps/pthread/bits/libc-lock.h: Define __rtld_lock_* macros.
7530         Define __libc_lock_* and __libc_lock_recursive macros with
7531         lowlevellock macros, not pthread mutexes.
7532
7533         * flockfile.c: Include <bits/stdio-lock.h>.  Use _IO_lock_lock instead
7534         of pthread_mutex_lock.
7535         * funlockfile.c: Include <bits/stdio-lock.h>.  Use _IO_lock_unlock
7536         instead of pthread_mutex_unlock.
7537
7538 2002-12-06  Roland McGrath  <roland@redhat.com>
7539
7540         * allocatestack.c (__stack_user): Use uninitialized defn.
7541         * init.c (__pthread_initialize_minimal): Initialize it here.
7542
7543 2002-12-05  Roland McGrath  <roland@redhat.com>
7544
7545         * sysdeps/i386/tls.h (TLS_INIT_TP): Make it return zero or an error
7546         string.
7547         * sysdeps/x86_64/tls.h (TLS_INIT_TP): Likewise.
7548
7549         * sysdeps/unix/sysv/linux/i386/createthread.c (create_thread): Add
7550         missing & here too.
7551
7552 2002-12-05  Ulrich Drepper  <drepper@redhat.com>
7553
7554         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove
7555         lowlevellock.
7556         * sysdeps/unix/sysv/linux/i386/i486/libc-lowlevellock.S: New file.
7557         * sysdeps/unix/sysv/linux/i386/i586/libc-lowlevellock.S: New file.
7558         * sysdeps/unix/sysv/linux/i386/i686/libc-lowlevellock.S: New file.
7559         * sysdeps/pthread/bits/libc-lock.h: Use lowlevellock implementation
7560         for __libc_lock_* macros.
7561         * Makefile (routines): Add libc-lowlevellock.
7562
7563 2002-10-09  Roland McGrath  <roland@redhat.com>
7564
7565         * sysdeps/pthread/bits/libc-lock.h (__libc_maybe_call): New macro.
7566         Under [__PIC__], call the function via the pointer fetched for
7567         comparison rather than a call by name that uses the PLT.
7568         (__libc_lock_init, __libc_rwlock_init, __libc_lock_fini)
7569         (__libc_rwlock_fini, __libc_lock_lock, __libc_rwlock_rdlock)
7570         (__libc_rwlock_wrlock, __libc_lock_trylock, __libc_rwlock_tryrdlock)
7571         (__libc_rwlock_trywrlock, __libc_lock_unlock, __libc_rwlock_unlock)
7572         (__libc_key_create, __libc_getspecific, __libc_setspecific): Use it.
7573
7574 2002-12-04  Roland McGrath  <roland@redhat.com>
7575
7576         * forward.c (pthread_self): Use FORWARD3 macro to correct return type.
7577
7578         * sysdeps/i386/td_ta_map_lwp2thr.c: Moved from ../nptl_db.
7579         * sysdeps/generic/td_ta_map_lwp2thr.c: New file.
7580
7581         * pthread_create.c (start_thread): Add missing & on __nptl_last_event.
7582
7583 2002-12-04  Ulrich Drepper  <drepper@redhat.com>
7584
7585         * sysdeps/unix/sysv/linux/i386/bits/pthreadtypes.h: Make pthread_t
7586         a completely opaque, non-integer type.
7587         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: Likewise.
7588
7589 2002-12-05  Jakub Jelinek  <jakub@redhat.com>
7590
7591         * sysdeps/i386/tls.h: Include stdlib.h.
7592         * sysdeps/x86_64/tls.h: Likewise.
7593
7594 2002-12-04  Ulrich Drepper  <drepper@redhat.com>
7595
7596         * Makefile (tests): Add tst-locale2.
7597         (tests-static): Likewise.
7598         * tst-locale2.c: New file.
7599
7600         * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Mark asms as
7601         volatile and add memory clobbers to lock operations.
7602
7603 2002-12-03  Ulrich Drepper  <drepper@redhat.com>
7604
7605         * sysdeps/i386/i686/bits/atomic.h: Use i486 version.
7606         * sysdeps/i386/i486/bits/atomic.h: New file.
7607         * sysdeps/i386/i586/bits/atomic.h: New file.
7608         * sysdeps/i386/i686/pthread_spin_trylock.S: Define HAVE_CMOV and
7609         include i486 version.
7610         * sysdeps/i386/i486/pthread_spin_trylock.S: New file.
7611         * sysdeps/i386/i586/pthread_spin_trylock.S: New file.
7612         Patch by Marijn Ros <marijn@mad.scientist.com>.
7613
7614         * allocatestack.c (get_cached_stack): Don't crash if we first
7615         found a stack with a larger size then needed.
7616         Reported by Hui Huang <hui.huang@sun.com>.
7617
7618         * Makefile (tests): Add tst-sysconf.
7619         * tst-sysconf.c: New file.
7620
7621         * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine
7622         PTHREAD_THREADS_MAX.
7623
7624 2002-12-02  Roland McGrath  <roland@redhat.com>
7625
7626         * pthreadP.h (__stack_user, __nptl_create_event, __nptl_death_event):
7627         Declare using hidden_proto instead of attribute_hidden, so there are
7628         non-.hidden static symbols for gdb to find.
7629         (__pthread_keys): Likewise.
7630         * events.c (__nptl_create_event, __nptl_death_event): Add hidden_def.
7631         * allocatestack.c (__stack_user): Likewise.
7632         * pthread_create.c (__pthread_keys): Likewise.
7633         (__nptl_threads_events, __nptl_last_event): Make these static instead
7634         of hidden.
7635         * pthread_key_create.c (__pthread_pthread_keys_max,
7636         __pthread_pthread_key_2ndlevel_size): Renamed from __linuxthreads_*.
7637
7638 2002-12-02  Ulrich Drepper  <drepper@redhat.com>
7639
7640         * Makefile (tests): Add tst-locale1.  If buid-static is yes link
7641         statically.
7642         * tst-locale1.c: New file.
7643
7644         * pthread_cond_timedwait.c: Include <stdlib.h>.
7645
7646         * Makefile (tests): Add tst-fork2 and tst-fork3.
7647         * tst-fork2.c: New file.
7648         * tst-fork3.c: New file.
7649
7650 2002-11-28  Ulrich Drepper  <drepper@redhat.com>
7651
7652         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: New file.
7653
7654         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define macros which
7655         require it to 200112L.
7656
7657         * sysdeps/unix/sysv/linux/i386/i486/lowlevelrwlock.S: Use cmov
7658         instruction only if HAVE_CMOV is defined.
7659         * sysdeps/unix/sysv/linux/i386/i686/lowlevelrwlock.S: Define HAVE_CMOV.
7660
7661         * sysdeps/unix/sysv/linux/x86_64/bits/semaphore.h: New file.
7662
7663         * sysdeps/unix/sysv/linux/x86_64/pthread_once.S: New file.
7664
7665         * sysdeps/unix/sysv/linux/x86_64/bits/pthreadtypes.h: New file.
7666
7667         * sysdeps/unix/sysv/linux/x86_64/pt-vfork.S: New file.
7668
7669 2002-11-27  Ulrich Drepper  <drepper@redhat.com>
7670
7671         * sysdeps/x86_64/bits/atomic.h: New file.
7672
7673         * sysdeps/i386/i686/bits/atomic.h: Fix asm syntax for 8- and
7674         16-bit operations.
7675
7676         * sysdeps/unix/sysv/linux/raise.c (raise): Use INTERNAL_SYSCALL if
7677         possible since gettid cannot fail.
7678
7679         * sysdeps/x86_64/pthreaddef.h: New file.
7680
7681         * sysdeps/i386/pthreaddef.h (gettid): Removed.
7682
7683         * sysdeps/x86_64/pthread_spin_init.c: New file.
7684         * sysdeps/x86_64/pthread_spin_lock.c: New file.
7685         * sysdeps/x86_64/pthread_spin_trylock.c: New file.
7686         * sysdeps/x86_64/pthread_spin_unlock.c: New file.
7687
7688         * sysdeps/i386/i686/pthread_spin_trylock.S (pthread_spin_trylock):
7689         Add missing lock prefix.  Minute optimization.
7690
7691         * tst-spin2.c (main): Also check successful trylock call.
7692
7693         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Use correct
7694         syscall.  Fix typo in case INTERNAL_SYSCALL is not used.
7695
7696         * sysdeps/i386/pthread_spin_destroy.c: Moved to...
7697         * sysdeps/pthread/pthread_spin_destroy.c: ...here.  New file.
7698
7699         * sysdeps/i386/pthread_sigmask.c: Removed.  Use the generic code.
7700         * sysdeps/pthread/pthread_sigmask.c (pthread_sigmask): Return correct
7701         value in case of an error.  Add support for INTERNAL_SYSCALL.
7702
7703         * sysdeps/i386/pthread_sigmask.c (pthread_sigmask): Return correct
7704         value in case of an error.
7705
7706         * sysdeps/x86_64/tls.h: New file.
7707
7708 2002-11-26  Ulrich Drepper  <drepper@redhat.com>
7709
7710         * sysdeps/i386/tls.h (THREAD_GETMEM_NC): Change interface.  It now
7711         takes the array member name and the index as parameters.
7712         (THREAD_SETMEM_NC): Likewise.
7713         * pthread_getspecific.c: Use new THREAD_GETMEM_NC interface.
7714         * pthread_setspecific.c: Use new THREAD_GETMEM_NC and THREAD_SETMEM_NC
7715         interfaces.
7716
7717         * sysdeps/i386/tls.h (THREAD_SETMEM): Use size of member element
7718         to decide which code to use.
7719         (THREAD_SETMEM_NC): Likewise.
7720
7721         * allocatestack.c (queue_stack): Don't remove stack from list here.
7722         Do it in the caller.  Correct condition to prematurely terminate
7723         loop to free stacks.
7724         (__deallocate_stack): Remove stack from list here.
7725
7726 2002-11-26  Ulrich Drepper  <drepper@redhat.com>
7727
7728         * Makefile (tests): Add tst-stack1.
7729         * tst-stack1.c: New file.
7730
7731         * allocatestack.c (allocate_stack): Initialize the TCB on a user
7732         provided stack.
7733
7734         * pthread_attr_getstack.c: Return bottom of the thread area.
7735
7736 2002-11-25  Ulrich Drepper  <drepper@redhat.com>
7737
7738         * Makefile (libpthread-routines): Add pt-allocrtsig and
7739         pthread_kill_other_threads.
7740         * pt-allocrtsig.c: New file.
7741         * pthread_kill_other_threads.c: New file.
7742         * sysdeps/unix/sysv/linux/allocrtsig.c: Add additional aliases for
7743         all three functions.
7744         * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove
7745         allocrtsig.
7746         * sysdeps/unix/sysv/linux/Versions (libc:GLIBC_PRIVATE): Export
7747         __libc_current_sigrtmin_private, __libc_current_sigrtmax_private,
7748         and __libc_allocate_rtsig_private.
7749         * Versions (libpthread): Export pthread_kill_other_threads_np,
7750         __libc_current_sigrtmin, and __libc_current_sigrtmax.
7751
7752 2002-11-24  Ulrich Drepper  <drepper@redhat.com>
7753
7754         * allocatestack.c (allocate_stack): stackaddr in attribute points to
7755         the end of the stack.  Adjust computations.
7756         When mprotect call fails dequeue stack and free it.
7757         * pthread_attr_setstack.c: Store top of the stack in stackaddr
7758         attribute.
7759         * pthread_getattr_np.c: Likewise.
7760
7761         * descr.h (IS_DETACHED): Add some more parenthesis to prevent
7762         surprises.
7763
7764 2002-11-23  Ulrich Drepper  <drepper@redhat.com>
7765
7766         * sysdeps/pthread/pthread.h (pthread_self): __THROW must come before
7767         attribute definitions.  Patch by Luca Barbieri <ldb@ldb.ods.org>.
7768
7769 2002-11-22  Ulrich Drepper  <drepper@redhat.com>
7770
7771         * pthread_getspecific.c: Optimize access to first 2nd-level array.
7772         * pthread_setspecific.c: Likewise.
7773
7774 2002-11-21  Ulrich Drepper  <drepper@redhat.com>
7775
7776         * sysdeps/unix/sysv/linux/i386/createthread.c: Remove CLONE_ flags
7777         definitions.  Get them from the official place.
7778         * sysdeps/unix/sysv/linux/i386/fork.c: Likewise.
7779
7780         * sysdeps/unix/sysv/linux/i386/createthread.c: Update CLONE_* flags.
7781         Use new CLONE_ flags in clone() calls.
7782
7783         * sysdeps/unix/sysv/linux/fork.c: Use ARCH_FORK to actually fork.
7784         * sysdeps/unix/sysv/linux/i386/fork.c: New file.
7785
7786         * Versions: Add pthread_* functions for libc.
7787         * forward.c: New file.
7788
7789         * sysdeps/pthread/Makefile (libpthread-sysdeps_routines): Add
7790         errno-loc.
7791         * herrno.c: New file.
7792         * res.c: New file.
7793
7794         * Makefile (libpthread-routines): Remove sem_post, sem_wait,
7795         sem_trywait, and sem_timedwait.  Add herrno and res.
7796         * sem_init.c: Don't initialize lock and waiters members.
7797         * sem_open.c: Likewise.
7798         * sem_post.c: Removed.
7799         * sem_wait.c: Removed.
7800         * sem_trywait.c: Removed.
7801         * sem_timedwait.c: Removed.
7802         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Complete rewrite.
7803         Includes full implementations of sem_post, sem_wait, sem_trywait,
7804         and sem_timedwait.
7805         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h (lll_sem_post): Adjust
7806         for new implementation.
7807         * sysdeps/unix/sysv/linux/internaltypes.h (struct sem): Remove lock
7808         and waiters fields.
7809
7810         * tst-sem3.c: Improve error message.
7811         * tst-signal3.c: Likewise.
7812
7813         * init.c (__pthread_initialize_minimal): Use set_tid_address syscall
7814         to tell the kernel about the termination futex and to initialize tid
7815         member.  Don't initialize main_thread.
7816         * descr.h (struct pthread): Remove main_thread member.
7817         * cancelllation.c (__do_cancel): Remove code handling main thread.
7818         The main thread is not special anymore.
7819
7820         * allocatestack.c (__reclaim_stacks): Mark stacks as unused.  Add
7821         size of the stacks to stack_cache_actsize.
7822
7823         * pt-readv.c: Add missing "defined".
7824         * pt-sigwait.c: Likewise.
7825         * pt-writev.c: Likewise.
7826
7827 2002-11-09  Ulrich Drepper  <drepper@redhat.com>
7828
7829         * Versions: Export __connect from libpthread.
7830         Patch by Luca Barbieri <ldb@ldb.ods.org>.
7831
7832         * Makefile (libpthread-routines): Add pt-raise.
7833         * sysdeps/unix/sysv/linux/raise.c: New file.
7834         * sysdeps/unix/sysv/linux/pt-raise.c: New file.
7835         * sysdeps/generic/pt-raise.c: New file.
7836
7837         * pthread_cond_init.c: Initialize all data elements of the condvar
7838         structure.  Patch by Luca Barbieri <ldb@ldb.ods.org>.
7839
7840         * pthread_attr_init.c: Actually implement 2.0 compatibility version.
7841         * pthread_create.c: Likewise.
7842
7843         * Makefile (tests): Add tst-key1, tst-key2, tst-key3.
7844         * tst-key1.c: New file.
7845         * tst-key2.c: New file.
7846         * tst-key3.c: New file.
7847
7848         * Versions: Export pthread_detach for version GLIBC_2.0.
7849         Reported by Saurabh Desai <sdesai@austin.ibm.com>.
7850
7851 2002-11-08  Ulrich Drepper  <drepper@redhat.com>
7852
7853         * pthread_key_create.c: Terminate search after an unused key was found.
7854         Patch by Luca Barbieri <ldb@ldb.ods.org>.
7855
7856         * sysdeps/unix/sysv/linux/i386/pthread_once.S: Return zero.
7857         Patch by Luca Barbieri <ldb@ldb.ods.org>.
7858
7859 2002-10-10  Ulrich Drepper  <drepper@redhat.com>
7860
7861         * sysdeps/unix/sysv/linux/i386/i486/lowlevelsem.S: Use slow generic
7862         dynamic lookup for errno in PIC.
7863
7864         * allocatestack.c (get_cached_stack): Rearrange code slightly to
7865         release the stack lock as soon as possible.
7866         Call _dl_allocate_tls_init for TCB from the cache to re-initialize
7867         the static TLS block.
7868         (allocate_stack): Call _dl_allocate_tls_init for user-provided stack.
7869
7870         * cancellation.c: Renamed from cancelation.c.
7871         * Makefile: Adjust accordingly.
7872         * pthreadP.h (CANCELLATION_P): Renamed from CANCELATION_P.
7873         * cleanup_defer.c: Use CANCELLATION_P.
7874         * pthread_testcancel.c: Likewise.
7875         * descr.h: Fix spelling in comments.
7876         * init.c: Likewise.
7877         * pthread_getattr_np.c: Likewise.
7878         * pthread_getschedparam.c: Likewise.
7879         * pthread_setschedparam.c: Likewise.
7880         * Versions: Likewise.
7881
7882         * pt-pselect.c: New file.
7883         * Makefile (libpthread-routines): Add pt-pselect.
7884         * Versions: Add pselect.
7885
7886         * tst-cancel4.c: New file.
7887         * Makefile (tests): Add tst-cancel4.
7888
7889 2002-10-09  Ulrich Drepper  <drepper@redhat.com>
7890
7891         * pthread_mutex_lock.c: Always record lock ownership.
7892         * pthread_mutex_timedlock.c: Likewise.
7893         * pthread_mutex_trylock.c: Likewise.
7894
7895         * pt-readv.c: New file.
7896         * pt-writev.c: New file.
7897         * pt-creat.c: New file.
7898         * pt-msgrcv.c: New file.
7899         * pt-msgsnd.c: New file.
7900         * pt-poll.c: New file.
7901         * pt-select.c: New file.
7902         * pt-sigpause.c: New file.
7903         * pt-sigsuspend.c: New file.
7904         * pt-sigwait.c: New file.
7905         * pt-sigwaitinfo.c: New file.
7906         * pt-waitid.c: New file.
7907         * Makefile (libpthread-routines): Add pt-readv, pt-writev, pt-creat,
7908         pt-msgrcv, pt-msgsnd, pt-poll, pt-select, pt-sigpause, pt-sigsuspend,
7909         pt-sigwait, pt-sigwaitinfo, and pt-waitid.
7910         * Versions: Add all the new functions.
7911
7912         * tst-exit1.c: New file.
7913         * Makefile (tests): Add tst-exit1.
7914
7915         * sem_timedwait.c: Minor optimization for more optimal fastpath.
7916
7917 2002-10-08  Ulrich Drepper  <drepper@redhat.com>
7918
7919         * pt-fcntl.c: Only enable asynchronous cancellation for F_SETLKW.
7920
7921         * pthread_join.c: Enable asynchronous cancellation around lll_wait_tid
7922         call.  pthread_join is an official cancellation point.
7923         * pthread_timedjoin.c: Likewise.
7924
7925         * pthread_cond_wait.c: Revert order in which internal lock are dropped
7926         and the condvar's mutex are retrieved.
7927         * pthread_cond_timedwait.c: Likewise.
7928         Reported by dice@saros.East.Sun.COM.
7929
7930 2002-10-07  Ulrich Drepper  <drepper@redhat.com>
7931
7932         * pthreadP.h: Cut out all type definitions and move them...
7933         * sysdeps/unix/sysv/linux/internaltypes.h: ...here.  New file.
7934         * pthreadP.h: Include <internaltypes.h>.
7935
7936         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h (lll_sem_post): Little
7937         performance tweaks.
7938
7939         * sem_trywait.c: Shuffle #includes around to get right order.
7940         * sem_timedwait.c: Likewise.
7941         * sem_post.c: Likewise.
7942         * sem_wait.c: Likewise.
7943
7944         * nptl 0.3 released.
7945
7946         * Makefile (tests): Add tst-signal3.
7947         * tst-signal3.c: New file.
7948
7949 2002-10-05  Ulrich Drepper  <drepper@redhat.com>
7950
7951         * sysdeps/unix/sysv/linux/i386/lowlevelsem.h: Tell the compiler that
7952         the asms modify the sem object.
7953         (__lll_sem_timedwait): Now takes struct sem* as first parameter.
7954
7955         * sysdeps/unix/sysv/linux/i386/bits/semaphore.h (sem_t): Don't expose
7956         the actual members.
7957         * pthreadP.h (struct sem): New type.  Actual semaphore type.
7958         * semaphoreP.h: Include pthreadP.h.
7959         * sem_getvalue.c: Adjust to sem_t change.
7960         * sem_init.c: Likewise.
7961         * sem_open.c: Likewise.
7962         * sem_post.c: Likewise.
7963         * sem_timedwait.c: Likewise.
7964         * sem_trywait.c: Likewise.
7965         * sem_wait.c: Likewise.
7966
7967 2002-10-04  Ulrich Drepper  <drepper@redhat.com>
7968
7969         * Makefile (tests): Add tst-basic2, tst-exec1, tst-exec3, tst-exec3.
7970         * tst-basic2.c: New file.
7971         * tst-exec1.c: New file.
7972         * tst-exec2.c: New file.
7973         * tst-exec3.c: New file.
7974
7975         * tst-fork1.c: Remove extra */.
7976
7977         * nptl 0.2 released.  The API for IA-32 is complete.