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