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