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