Update.
[kopensolaris-gnu/glibc.git] / linuxthreads / ChangeLog
1 2000-12-27  Ulrich Drepper  <drepper@redhat.com>
2
3         * attr.c (__pthread_attr_setstack): Fix setting of __stackaddr element.
4         (__pthread_attr_getstack): Return correct address.
5         Add warnings for using pthread_attr_getstackaddr and
6         pthread_attr_setstackaddr.
7
8 2000-12-26  Ulrich Drepper  <drepper@redhat.com>
9
10         * Examples/ex6.c (test_thread): Make static.
11         * Examples/ex12.c (test_thread): Make static and add noreturn
12         attribute.
13
14 2000-12-18  Jes Sorensen  <jes@linuxcare.com>
15
16         * linuxthreads/sysdeps/ia64/pt-machine.h: __compare_and_swap
17         and compare_and_swap_with_release_semantics returns int not long.
18
19 2000-12-17  Andreas Jaeger  <aj@suse.de>
20
21         * sysdeps/s390/pt-machine.h (testandset): Use long int as return
22         value.
23         * sysdeps/arm/pt-machine.h (testandset): Likewise.
24         * sysdeps/hppa/pt-machine.h (testandset): Likewise.
25         * sysdeps/m68k/pt-machine.h (testandset): Likewise.
26         * sysdeps/sh/pt-machine.h (testandset): Likewise.
27         * sysdeps/sparc/sparc32/pt-machine.h (testandset): Likewise.
28         * sysdeps/sparc/sparc64/pt-machine.h (testandset): Likewise.
29
30 2000-12-17  Ulrich Drepper  <drepper@redhat.com>
31
32         * sysdeps/i386/pt-machine.h (testandset): Adjust for prototype change.
33         * sysdeps/i386/i686/pt-machine.h (testandset): Likewise.
34
35 2000-12-17  Andreas Jaeger  <aj@suse.de>
36
37         * internals.h: Add prototypes for testandset and
38         __compare_and_swap to shut up gcc warnings.
39
40 2000-12-06  Wolfram Gloger  <wg@malloc.de>
41
42         * join.c (pthread_detach): Allow case where the thread has already
43         terminated.
44
45 2000-12-05  Andreas Jaeger  <aj@suse.de>
46
47         * sysdeps/mips/pspinlock.c (__pthread_spin_lock): Don't set mips2.
48         * sysdeps/mips/pt-machine.h (testandset): Likewise.
49         (__compare_and_swap): Likewise.
50         Patches by Maciej W. Rozycki <macro@ds2.pg.gda.pl>.
51
52 2000-11-20  Jakub Jelinek  <jakub@redhat.com>
53
54         * Examples/ex3.c (main): Cast int to long before casting to void *.
55         (search): Cast void * to long, not int.
56         * Examples/ex8.c (main, thread): Similarly.
57         * Examples/ex11.c (main): Similarly.
58         * Examples/ex14.c (worker, do_test): Similarly.
59         * ecmutex.c (worker, do_test): Similarly.
60         (nlocks): Cast to int.
61
62 2000-11-08  Bruce Mitchener  <bruce@cubik.org>
63
64         * linuxthreads.texi:  Add documentation for pthreads attributes
65         guardsize, stackaddr, stacksize, and stack.  Fix typo in previous
66         patch.  Document pthread_[sg]etconcurrency().  Mark
67         pthread_mutexattr_[sg]ettype() as POSIX rather than GNU.
68
69 2000-11-07  Ulrich Drepper  <drepper@redhat.com>
70
71         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_MESSAGE_PASSING):
72         Don't define it.
73         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
74         Reported by Christopher Yeoh <cyeoh@linuxcare.com.au>.
75
76 2000-11-06  Ulrich Drepper  <drepper@redhat.com>
77
78         * cancel.c (pthread_cancel): Always set p_canceled, even if we are
79         not doing it right now.
80         Reported by Kaz Kylheku <kaz@ashi.footprints.net>.
81
82 2000-10-30  Ulrich Drepper  <drepper@redhat.com>
83
84         * Examples/ex4.c (main): Don't use exit() to avoid warning with
85         broken compilers.
86
87 2000-10-29  Ulrich Drepper  <drepper@redhat.com>
88
89         * attr.c (__pthread_attr_setguardsize): Don't round guardsize
90         here.  Reported by Bruce Mitchener <bruce@cubik.org>.
91
92         * linuxthreads.texi: Changes terminology to 'type' from 'kind' when
93         discussing mutexes. (As per the Unix98 name for the API.)
94         Changes documentation for pthread_mutexattr_setkind_np() and
95         pthread_mutexattr_getkind_np() over to the Unix98 APIs for the
96         same: pthread_mutexattr_settype() and pthread_mutexattr_gettype().
97         Changes references to PTHREAD_MUTEXATTR_FAST_NP to
98         PTHREAD_MUTEXATTR_ADAPTIVE_NP.
99         Begins to introduce discussion of the ``timed'' mutex type.  This
100         discussion is currently incomplete.
101         Patch by Bruce Mitchener <bruce@cubik.org>.
102
103 2000-10-26  Kazumoto Kojima  <kkojima@rr.iij4u.or.jp>
104             Yutaka Niibe  <gniibe@chroot.org>
105
106         * sysdeps/sh/pt-machine.h (testandset): Since the operand of TAS.B
107         has restrictions, use register.
108
109 2000-10-23  Andreas Schwab  <schwab@suse.de>
110
111         * Examples/ex14.c (TIMEOUT): Override default timeout.
112
113 2000-10-16  Ulrich Drepper  <drepper@redhat.com>
114
115         * specific.c: Protect tsd array modification in thread data
116         structures by getting the thread lock in pthread_key_delete and
117         __pthread_destroy_specifics.
118         Patch by Wolfram Gloger <Wolfram.Gloger@dent.med.uni-muenchen.de>.
119
120 2000-10-12  Alan Modra <alan@linuxcare.com.au>
121
122         * sysdeps/pthread/bits/initspin.h: New file.
123         * spinlock.h: Move LOCK_INITIALIZER definition to <bits/initspin.h>.
124         (__pthread_init_lock): Initialize lock with LT_SPINLOCK_INIT.
125         (__pthread_alt_init_lock): Likewise.
126         (__pthread_alt_trylock): Release lock with LT_SPINLOCK_INIT.
127
128 2000-10-12  David Huggins-Daines  <dhd@linuxcare.com>
129
130         * oldsemaphore.c (__old_sem_init): Release lock with
131         LT_SPINLOCK_INIT, not zero.
132         * spinlock.c (__pthread_unlock): Likewise.
133         (__pthread_alt_lock): Likewise.
134         (__pthread_alt_timedlock): Likewise.
135         (__pthread_alt_unlock): Likewise.
136         * sysdeps/pthread/bits/libc-lock.h: Initialize locks with
137         LT_SPINLOCK_INIT if it is non-zero.  Likewise for init-once flags.
138         * sysdeps/pthread/pthread.h: Include bits/initspin.h.  Use
139         LT_SPINLOCK_INIT do initialize spinlocks not 0.
140
141 2000-10-12  David Huggins-Daines <dhd@linuxcare.com>
142
143         * shlib-versions: Add version definitions for hppa-linux.
144
145 2000-10-12  Alan Modra <alan@linuxcare.com.au>
146
147         * sysdeps/hppa/pspinlock.c: New file.
148         * sysdeps/hppa/pt-machine.h: New file.
149         * sysdeps/unix/sysv/linux/hppa/bits/initspin.h: New file.
150
151 2000-10-05  Jakub Jelinek  <jakub@redhat.com>
152
153         * mutex.c (__pthread_mutex_destroy): Correct test of
154         busy mutex for mutexes using alternate fastlocks.
155         Patch by dtc@cmucl.cons.org.
156
157 2000-09-28  Martin Schwidefsksy    <schwidefsky@de.ibm.com>
158
159         * sysdeps/s390/pt-machine.h: Make %a0 the thread register.
160
161 2000-09-28  Ulrich Drepper  <drepper@redhat.com>
162
163         * mutex.c (__pthread_mutex_unlock): For PTHREAD_MUTEX_RECURSIVE_NP
164         test for owner first.
165         Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
166
167         * cancel.c (pthread_cancel): Don't do anything if cancelation is
168         disabled.
169
170 2000-09-26  Ulrich Drepper  <drepper@redhat.com>
171
172         * spinlock.h (__pthread_set_own_extricate_if): Optimize a bit.
173         Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
174
175         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Remove
176         _POSIX_MONOTONIC_CLOCK.
177
178         * spinlock.h (__pthread_set_own_extricate_if): Add back locking
179         and explain why.
180
181 2000-09-20  Andreas Jaeger  <aj@suse.de>
182
183         * pthread.c [!__ASSUME_REALTIME_SIGNALS]: Make inclusion of
184         "testrtsig.h" conditional.
185
186 2000-09-11  Ulrich Drepper  <drepper@redhat.com>
187
188         * sysdeps/pthread/pthread.h: Declare pthread_attr_getstack and
189         pthread_attr_setstack.
190         * Versions [libpthread] (GLIBC_2.2): Export pthread_attr_getstack and
191         pthread_attr_setstack.
192         * attr.c (pthread_attr_getstack, pthread_attr_setstack): New functions.
193
194 2000-09-05  Ulrich Drepper  <drepper@redhat.com>
195
196         * Examples/ex14.c: New file.
197         * Makefile (tests): Add ex14.
198
199         * mutex.c (__pthread_mutex_unlock): Correct test for already unlocked
200         mutex.  Patch by dtc@cmucl.cons.org.
201
202         * ecmutex.c: New file.
203         * Makefile (tests): Add ecmutex.
204
205 2000-09-04  H.J. Lu  <hjl@gnu.org>
206
207         * attr.c (__pthread_attr_setguardsize): Use page_roundup
208         instead of roundup to round up to the page size.
209
210 2000-09-03  Mark Kettenis  <kettenis@gnu.org>
211
212         * manager.c (pthread_exited): Correctly report event as TD_REAP
213         instead of TD_DEATH.  Fix comments.
214
215 2000-09-03  Ulrich Drepper  <drepper@redhat.com>
216
217         * spinlock.h (testandset): Add cast to avoid warning.
218         Patch by Franz Sirl <Franz.Sirl-kernel@lauterbach.com>.
219
220 2000-09-02  Andreas Jaeger  <aj@suse.de>
221
222         * sysdeps/pthread/timer_routines.c: Include stdlib.h for abort
223         prototype.
224
225 2000-09-01  Ulrich Drepper  <drepper@redhat.com>
226
227         * sysdeps/pthread/bits/stdio-lock.h (_IO_cleanup_region_start):
228         Fix typo in last patch (_mode -> _flags).
229
230         * sysdeps/pthread/bits/stdio-lock.h (_IO_cleanup_region_start):
231         Provide definition which respects _IO_USER_LOCK flag.
232
233 2000-08-30  Ulrich Drepper  <drepper@redhat.com>
234
235         * manager.c (pthread_allocate_stack): Clear descriptor only if not
236         mmaped.
237
238 2000-08-25  Ulrich Drepper  <drepper@redhat.com>
239
240         * Makefile: Add rules to build and run unload.
241         * unload.c: New file.
242
243         * pthread.c (pthread_exit_process): Move thread_self use inside `if'.
244
245         * sysdeps/pthread/pthread.h
246         (PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP): Defined.
247         (PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP: Defined.
248
249 2000-08-24  Andreas Jaeger  <aj@suse.de>
250
251         * Examples/ex13.c: Include <string.h> for strerror prototype and
252         <stdlib.h> for abort prototype.
253         (pthr_cond_signal_mutex): Rewrite to silence GCC.
254         (thread_start): Remove unused variable err.
255         (main): Silence GCC warnings.
256
257 2000-08-22  Andreas Jaeger  <aj@suse.de>
258
259         * Examples/ex13.c: New test by Kurt Garloff <garloff@suse.de>.
260
261         * Makefile (tests): Add ex13.
262
263 2000-08-20  Ulrich Drepper  <drepper@redhat.com>
264
265         * semaphore.h: Add restrict where required by AGd4.
266         * sysdeps/pthread/pthread.h: Likewise.
267         * sysdeps/pthread/unix/sysv/linux/bits/sigthread.h: Likewise.
268
269 2000-08-15  Ulrich Drepper  <drepper@redhat.com>
270
271         * Makefile (tests): Add ex12.  Add rule to build it.
272         * Examples/ex12.c: New file.
273
274 2000-08-13  Ulrich Drepper  <drepper@redhat.com>
275
276         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define _POSIX_SEMAPHORES
277         even though the implementation is not quite complete (but it reports
278         it).  Define _POSIX_MESSAGE_PASSING to -1.
279         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
280
281 2000-08-12  Andreas Jaeger  <aj@suse.de>
282
283         * sysdeps/mips/pt-machine.h (testandset): Add .set mips2 for
284         assembler.
285         (__compare_and_swap): Likewise.
286         * sysdeps/mips/pspinlock.c (__pthread_spin_lock): Likewise.
287
288 2000-08-10  Ulrich Drepper  <drepper@redhat.com>
289
290         * pthread.c (__pthread_initial_thread): Initialize p_errnop and
291         p_h_errnop correctly and not to NULL.
292
293 2000-08-05  Ulrich Drepper  <drepper@redhat.com>
294
295         * Banner: Bump version number to 0.9.
296
297 2000-08-04  Ulrich Drepper  <drepper@redhat.com>
298
299         * Makefile (tests): Add tststack.  Add rule to build the program.
300         * tststack.c: New file.
301
302         * internals.h: Declare __pthread_max_stacksize.
303         * pthread.c (__pthread_max_stacksize): New variable.
304         (__pthread_initialize_manager): Determine __pthread_initialize_manager
305         value.
306         * manager.c (thread_segment): Return always NULL if FLOATING_STACKS.
307         (pthread_allocate_stack): Allow kernel to choose stack address if
308         FLOATING_STACKS.  This also handles variable-sized stacks.
309         Always allocate stack and guardpage together.  Use mprotect to
310         change guardpage access.
311         * sysdeps/i386/useldt.h: Define FLOATING_STACKS and
312         ARCH_STACK_MAX_SIZE.
313
314         * attr.c (__pthread_attr_setstacksize): Also test value against
315         upper limit.
316
317         * manager.c (__pthread_nonstandard_stacks): Define only if
318         THREAD_SELF is not defined.
319         (pthread_allocate_stack): Always initialize gardaddr to a correct
320         value.
321         (pthread_handle_create): Unmap thread with one call.
322         (pthread_free): Remove test for initial thread before removing stack.
323         Unmap stack with one call.
324
325         * pthread.c (__pthread_initial_thread): Initialize p_userstack to
326         1 to avoid removing the stack.
327
328 2000-07-27  Jes Sorensen  <jes@linuxcare.com>
329
330         * sysdeps/ia64/pspinlock.c (__pthread_spin_lock): Add
331         load of spin lock to prime the cache before the atomic compare and
332         exchange operation (cmpxchg4). This avoids the spinning on the
333         cmpxchg4 instruction and reduces movement of the cache line back
334         and forth between the processors (explanation by Asis K. Mallick
335         from Intel). This basically makes the implementation operate the
336         same as the Linux kernel implementation.
337
338         * shlib-versions: Use GLIBC_2_2 for Linux/ia64.
339         * sysdeps/ia64/pspinlock.c: New file.
340
341 2000-08-03  Ulrich Drepper  <drepper@redhat.com>
342
343         * pthread.c: Move definition of __pthread_set_own_extricate_if...
344         * spinlock.h: ...here.  Remove locking.
345         * internals.h: Remove __pthread_set_own_extricate_if prototype.
346
347         * rwlock.c: Use THREAD_GETMEM And THREAD_SETMEM.
348         (rwlock_rd_extricate_func): Don't determine self, let
349         __pthread_lock do it.
350         (rwlock_wr_extricate_func): Likewise.
351         (rwlock_have_already): Optimize *pself handling a bit.
352
353         * mutex.c: Use __builtin_expect.
354         * pthread.c: Likewise.
355
356 2000-08-02  Andreas Jaeger  <aj@suse.de>
357
358         * sysdeps/s390/pspinlock.c: New file.
359         * sysdeps/s390/pt-machine.h: New file.
360         Patches by Martin Schwidefsky <schwidefsky@de.ibm.com>.
361
362 2000-07-12  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>
363
364         * sysdeps/mips/pspinlock.c (__pthread_spin_lock): Implement for
365         R3K.
366         * sysdeps/mips/pt-machine.h (testandset): Likewise.
367
368 2000-07-26  Andreas Jaeger  <aj@suse.de>
369
370         * pthread.c: Initialize p_sem_avail.
371
372 2000-07-25  Ulrich Drepper  <drepper@redhat.com>
373
374         * internals.h (struct __pthread_descr_struct): Add p_sem_avail.
375         * semaphore.c: Handle spurious wakeups.
376
377         * sysdeps/pthread/pthread.h: Add back PTHREAD_MUTX_FAST_NP as an alias
378         for PTHREAD_MUTEX_ADAPTIVE_NP for source code compatibility.
379
380         * pthread.c (__pthread_set_own_extricate): Use THREAD_GETMEM.
381         (__pthread_wait_for_restart): Likewise.
382
383         * condvar.c (pthread_cond_wait): Also check whether thread is
384         cancelable before aborting loop.
385         (pthread_cond_timedwait): Likewise.
386
387         * signals.c (pthread_sighandler): Remove special code to restrore
388         %gs on x86.
389         (pthread_sighandler_t): Likewise.
390
391 2000-07-25  Mark Kettenis  <kettenis@gnu.org>
392
393         * internals.h (__RES_PTHREAD_INTERNAL): Remove define.
394         * pthread.c: Include <resolv.h>.
395         (_res): Undefine.  Add extern declaration.
396
397 2000-07-24  Ulrich Drepper  <drepper@redhat.com>
398
399         * pthread.c (__pthread_initial_thread): Update initializer.
400         (__pthread_manager_thread): Likewise.
401         (pthread_initialize): Move setrlimit call to...
402         (__pthread_initialize_manager): ...here.
403         (__pthread_reset_main_thread): Reset also soft limit on stack size.
404
405         * condvar.c: Handle spurious wakeups.  [PR libc/1749].
406         * internals.h (struct _pthread_descr_struct): Add p_condvar_avail.
407
408 2000-07-21  Ulrich Drepper  <drepper@redhat.com>
409
410         * spinlock.h: If IMPLEMENT_TAS_WITH_CAS is defined use
411         __compare_and_swap to define testandset.
412         * sysdeps/powerpc/pt-machine.h: Add volatile to asms.
413         Define IMPLEMENT_TAS_WITH_CAS.
414
415 2000-07-20  Ulrich Drepper  <drepper@redhat.com>
416
417         * Makefile: Pass -z nodelete to linker for libpthread.so
418         generation if it understand this option.
419
420 2000-07-18  Mark Kettenis  <kettenis@gnu.org>
421
422         * manager.c (pthread_handle_create): Remove initialization of
423         new_thread->p_res._sock.
424
425 2000-07-19  Kaz Kylheku  <kaz@ashi.footprints.net>
426
427         Bugfixes to the variant of the code for machines with no compare
428         and swap.
429
430         * spinlock.c (__pthread_alt_lock, __pthread_alt_timedlock): Wait
431         node was not being properly enqueued, due to failing to update
432         the lock->__status field.
433
434         * spinlock.c (__pthread_alt_timedlock): The oldstatus variable was
435         being set inappropriately, causing the suspend function to be called
436         with a null self pointer and crash.
437
438 2000-07-18  Ulrich Drepper  <drepper@redhat.com>
439
440         * spinlock.h (__pthread_alt_trylock): Fix code used if no
441         compare&swap is available.
442
443         * spinlock.h (__pthread_trylock): Use __compare_and_swap, not
444         compare_and_swap.
445
446         * pthread.c (pthread_initialize): Don't use sysconf to determine
447         whether the machine has more than one processor.
448
449         * spinlock.c (__pthread_alt_timedlock): Add back one of the
450         removed thread_self calls.
451
452 2000-07-18  Kaz Kylheku  <kaz@ashi.footprints.net>
453
454         * spinlock.c (__pthread_alt_lock, __pthread_alt_timedlock): Changed
455         __compare_and_swap to compare_and_swap in code which assumes
456         compare swap is available.
457
458 2000-07-18  Kaz Kylheku  <kaz@ashi.footprints.net>
459
460         * spinlock.c (__pthread_alt_lock, __pthread_alt_timedlock): Fixed
461         bug whereby thr field of waitnode structure would not be correctly
462         set unless a null self pointer is passed to the functions.
463         Eliminated redundant calls to thread_self().
464
465 2000-07-18  Jakub Jelinek  <jakub@redhat.com>
466
467         * pthread.c (__pthread_initialize_manager): Lock
468         __pthread_manager_thread.p_lock before calling clone.
469
470 2000-05-05  H.J. Lu  <hjl@gnu.org>
471
472         * sysdeps/ia64/pt-machine.h (__compare_and_swap): Change it to
473         have acquire semantics.
474         (__compare_and_swap_with_release_semantics): New inline
475         function.
476         (HAS_COMPARE_AND_SWAP_WITH_RELEASE_SEMANTICS): New macro.
477
478 2000-01-28  Hans Boehm  <hboehm@exch.hpl.hp.com>
479
480         * manager.c: Fix the problem with signals at startup.
481         Change the way that thread stacks are allocated on IA64.
482         Clean up some of the guard page allocation stuff.
483
484 1999-12-19  H.J. Lu  <hjl@gnu.org>
485
486         * internals.h (page_roundup): New.
487         * attr.c (__pthread_attr_setguardsize); Use page_roundup
488         instead of roundup.
489         * manager.c (pthread_allocate_stack): Make sure guardaddr is
490         page aligned with page_roundup if NEED_SEPARATE_REGISTER_STACK
491         is define.
492
493 1999-12-17  Hans Boehm  <hboehm@exch.hpl.hp.com>
494
495         * manager.c (pthread_allocate_stack): Unmap the stack top
496         if failed to map the stack bottom.
497         Fix the guard page.
498         (pthread_free): Fix the guard page.
499
500         * pthread.c (pthread_initialize): Set rlimit correctly for
501         NEED_SEPARATE_REGISTER_STACK.
502
503 1999-12-16  H.J. Lu  <hjl@gnu.org>
504
505         * pthread.c (__pthread_initialize_manager): Pass
506         __pthread_manager_thread_bos instead of
507         __pthread_manager_thread_tos to __clone2.
508
509 1999-12-16  H.J. Lu  <hjl@gnu.org>
510
511         * manager.c (pthread_allocate_stack): Correct the calculation
512         of "new_thread_bottom". Remove MAP_GROWSDOWN from mmap for
513         stack bottom.
514
515 1999-12-13  H.J. Lu  <hjl@gnu.org>
516
517         * sysdeps/ia64/pt-machine.h (__compare_and_swap): Added a stop
518         bit after setting ar.ccv.
519
520 1999-12-12  H.J. Lu  <hjl@gnu.org>
521
522         * manager.c (pthread_allocate_stack): Make the starting
523         address of the stack bottom page aligned. FIXME: it may
524         need changes in other places.
525         (pthread_handle_create): Likewise.
526
527 1999-12-11  Hans Boehm  <hboehm@exch.hpl.hp.com>
528
529         * manager.c (pthread_allocate_stack): Handle
530         NEED_SEPARATE_REGISTER_STACK.
531         (pthread_handle_create): Likewise.
532         * pthread.c (__pthread_initialize_manager): Likewise.
533
534         * sysdeps/ia64/pt-machine.h: Use r13 for thread pointer.
535
536 1999-12-02  H.J. Lu  <hjl@gnu.org>
537
538         * sysdeps/ia64/pt-machine.h: New.
539
540 2000-07-13  Ulrich Drepper  <drepper@redhat.com>
541
542         * wrapsyscall.c: Mark non-__ protected names as weak.
543         PR libc/1466.
544
545 2000-07-12  Bruno Haible  <haible@clisp.cons.org>
546
547         * Examples/ex8.c: Include <sys/wait.h>, not <wait.h>.
548
549 2000-07-12  Ulrich Drepper  <drepper@redhat.com>
550
551         * spinlock.c: Fix code for TEST_FOR_COMPARE_AND_SWAP being defined.
552         Add tests also to new alternative spinlock implementation.
553         * spinlock.h: Likewise.
554         Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
555
556 2000-07-06  Ulrich Drepper  <drepper@redhat.com>
557
558         * Version: Export __sigaction.
559         * signals.c: Define __sigaction alias.  Use __libc_sigaction instead
560         of __sigaction.
561         * pthread.c: Use __libc_sigaction instead of __sigaction.
562
563         * condvar.c: Implement pthread_condattr_getpshared and
564         pthread_condattr_setpshared.
565         * mutex.c: Implement pthread_mutexattr_getpshared and
566          pthread_mutexattr_setpshared.
567         * Versions: Export new functions.
568         * sysdeps/pthread/pthread.h: Add prototypes for new functions.
569
570         * rwlock.c (pthread_rwlockattr_init): Use PTHREAD_PROCESS_PRIVATE.
571         (pthread_rwlockattr_setpshared): Fail if PTHREAD_PROCESS_PRIVATE
572         is not selected.
573
574 2000-07-04  Greg McGary  <greg@mcgary.org>
575
576         * sysdeps/pthread/bits/libc-lock.h: Remove BP_SYM from
577         pragmas.  Include bp-sym.h only if _LIBC.
578
579 2000-07-04  Ulrich Drepper  <drepper@redhat.com>
580
581         * spinlock.c (__pthread_unlock): Properly place write barrier.
582         Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
583
584 2000-07-03  Ulrich Drepper  <drepper@redhat.com>
585
586         * spinlock.c: Replace fast spinlocks by adaptive spinlocks which are
587         faster on SMP systems.  No more emulation of compare&swap for adaptive
588         spinlocks.
589         * spinlock.h: Likewise.
590         * sysdeps/pthread/pthread.h: Shuffle PTHREAD_MUTEX_* values around.
591         Replace fast with adaptive mutex.
592         * mutex.c: Rewrite for replacement of fast by adaptive mutex.
593         * condvar.c: Likewise.
594         * pthread.c: Define and initialize __pthread_smp_kernel variable.
595         * internals.h: Declare __pthread_smp_kernel.
596         * sysdeps/pthread/bits/pthreadtypes.h: Update comment of
597         _pthread_fastlock structure.
598         Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
599
600         * pthread.c: Remove initialization to zero from global variables.
601
602 2000-06-29  Jakub Jelinek  <jakub@redhat.com>
603
604         * shlib-versions: Make sparc64 GLIBC_2.2+ only.
605
606 2000-06-28  Greg McGary  <greg@mcgary.org>
607
608         * weaks.c: Wrap BP_SYM () around weak extern declarations of
609         pthread functions that have pointers in their return+arg signatures.
610
611 2000-06-27  Greg McGary  <greg@mcgary.org>
612
613         * sysdeps/pthread/bits/libc-lock.h: Wrap BP_SYM () around weak
614         extern declarations of pthread functions that have pointers in
615         their return+arg signatures.
616
617 2000-06-26  Ulrich Drepper  <drepper@redhat.com>
618
619         * Makefile (tests): Add ex11.  Add rules to build it.
620         * Examples/ex11.c: New file.
621         * rwlock.c: Fix complete braindamaged previous try to implement
622         timedout functions.
623
624         * spinlock.c: Pretty print.
625
626 2000-06-25  Ulrich Drepper  <drepper@redhat.com>
627
628         * Makefile (tests): Add ex10.  Add rules to build it.
629         * Versions [GLIBC_2.2] (libpthread): Add pthread_mutex_timedlock,
630         pthread_rwlock_timedrdlock, and pthread_rwlock_timedwrlock.
631         * condvar.c (pthread_cond_wait): Allow mutex of kind
632         PTHREAD_MUTEX_TIMED_NP.
633         (pthread_cond_timedwait_relative): Likewise.
634         * mutex.c (__pthread_mutex_init): Default is PTHREAD_MUTEX_TIMED_NP.
635         (__pthread_mutex_trylock): Use __pthread_alt_trylock for
636         PTHREAD_MUTEX_ERRORCHECK_NP.  Handle PTHREAD_MUTEX_TIMED_NP.
637         (__pthread_mutex_lock): Use __pthread_alt_lock for
638         PTHREAD_MUTEX_ERRORCHECK_NP.  Handle PTHREAD_MUTEX_TIMED_NP.
639         (__pthread_mutex_timedlock): New function.
640         (__pthread_mutex_unlock): Use __pthread_alt_unlock for
641         PTHREAD_MUTEX_ERRORCHECK_NP.  Handle PTHREAD_MUTEX_TIMED_NP.
642         (__pthread_mutexattr_init): Use PTHREAD_MUTEX_TIMED_NP.
643         (__pthread_mutexattr_settype): Allow PTHREAD_MUTEX_TIMED_NP.
644         * spinlock.c: Implement alternate fastlocks.
645         * spinlock.h: Add prototypes.
646         * Examples/ex10.c: New file.
647         * sysdeps/pthread/pthread.h: Add prototypes for new functions.
648         Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
649
650         * rwlock.c (__pthread_rwlock_rdlock): Optimize loop a bit.
651         (__pthread_rwlock_timedrdlock): New function.
652         (__pthread_rwlock_timedwrlock): New function.
653         Use laternate fastlock function everywhere.
654
655 2000-06-21  Andreas Jaeger  <aj@suse.de>
656
657         * sysdeps/pthread/timer_routines.c: Include <string.h> for memset
658         prototype.
659
660         * join.c: Include <stdlib.h> for exit prototype.
661
662 2000-06-20  Ulrich Drepper  <drepper@redhat.com>
663
664         * sysdeps/i386/useldt.h: Include <stdlib.h>.
665
666         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define _POSIX_BARRIERS.
667         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
668
669         * Makefile (libpthread-routines): Add barrier.
670         (tests): Add ex9.  Add rule to build ex9.
671         * Versions: Export barrier functions.
672         * barrier.c: New file.
673         * Examples/ex9.c: New file.
674         * sysdeps/pthread/pthread.h: Add barrier data types and declarations.
675         * sysdeps/pthread/bits/pthreadtypes.h: Likewise.
676         Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
677
678 2000-06-19  H.J. Lu  <hjl@gnu.org>
679
680         * spinlock.h (HAS_COMPARE_AND_SWAP): Defined if
681         HAS_COMPARE_AND_SWAP_WITH_RELEASE_SEMANTICS is defined.
682         (compare_and_swap_with_release_semantics): New. Default to
683         compare_and_swap if HAS_COMPARE_AND_SWAP_WITH_RELEASE_SEMANTICS
684         is not defined.
685
686         * spinlock.c (__pthread_unlock): Call
687         compare_and_swap_with_release_semantics () instead of
688         compare_and_swap ().
689
690 2000-06-19  Ulrich Drepper  <drepper@redhat.com>
691
692         * sysdeps/pthread/timer_create.c: Use _set_errno instead of assigning
693         to errno directly.
694         * sysdeps/pthread/timer_delete.c: Likewise.
695         * sysdeps/pthread/timer_getoverr.c: Likewise.
696         * sysdeps/pthread/timer_gettime.c: Likewise.
697         * sysdeps/pthread/timer_settime.c: Likewise.
698
699 2000-06-13  Kaz Kylheku  <kaz@ashi.footprints.net>
700
701         Timer nodes are now reference counted, and can be marked
702         as deleted. This allows for the safe release of the global mutex
703         in the middle without losing the timer being operated on.
704
705         * sysdeps/pthread/posix-timer.h (struct timer_node):  The inuse
706         member is now an enum with three values, so that an intermediate
707         state can be represented (deleted but not free for reuse yet).
708         New refcount member added.
709         * sysdeps/pthread/timer_routines.c: Likewise.
710
711         * sysdeps/pthread/posix-timer.h (timer_addref, timer_delref,
712         timer_valid): New inline functions added.
713
714         * sysdeps/pthread/timer_gettime.c (timer_gettime): Function
715         restructured, recursive deadlock bug fixed.
716
717         * sysdeps/pthread/timer_gettime.c (timer_gettime): Uses new
718         timer_addref to ensure that timer won't be deleted while mutex is not
719         held. Also uses timer_invalid to perform validation of timer handle.
720         * sysdeps/pthread/timer_settime.c (timer_settime): Likewise.
721         * sysdeps/pthread/timer_getoverr.c (timer_getoverrun): Likewise.
722
723 2000-06-14  Ulrich Drepper  <drepper@redhat.com>
724
725         * shlib-versions: Add entry for SH.
726         Patch by Kaz Kojima <kkojima@rr.iij4u.or.jp>.
727
728 2000-06-13  Kaz Kylheku  <kaz@ashi.footprints.net>
729
730         A few optimizations.  Got rid of unnecessary wakeups of timer threads,
731         tightened up some critical regions and micro-optimized some list
732         manipulation code.
733
734         * sysdeps/pthread/timer_routines.c (__timer_thread_queue_timer):
735         Returns int value now to indicate whether timer was queued at head.
736         * sysdeps/pthread/posix-timer.h: Likewise.
737         * sysdeps/pthread/timer_settime.c (timer_settime): Takes advantage of
738         new return value from __timer_thread_queue_timer to avoid waking
739         up timer thread unnecessarily.
740
741         * sysdeps/pthread/posix-timer.h (timer_id2ptr): No longer checks
742         inuse flag, because this requires mutex to be held.  Callers updated
743         to do the check when they have the mutex.
744         * sysdeps/pthread/timer_getoverr.c: Add check for inuse here.
745
746         * sysdeps/pthread/timer_settime.c (timer_settime): Tighter critical
747         regions: avoids making system calls while holding timer mutex, and
748         a few computations were moved outside of the mutex as well.
749         * sysdeps/pthread/timer_gettime.c (timer_gettime): Likewise.
750
751         * sysdeps/pthread/posix-timer.h (list_unlink_ip): Function name changed
752         to list_unlink_ip, meaning idempotent.  Pointer manipulation
753         changed to get better better code out of gcc.
754         * sysdeps/pthread/timer_routines.c (list_unlink): Non-idempotent
755         version of list_unlink added here.
756         * sysdeps/pthread/timer_delete.c: Use appropriate list unlink
757         function in all places: idempotent one for timers, non-idempotent
758         one for thread nodes.
759         * sysdeps/pthread/timer_settime: Likewise.
760         * sysdeps/pthread/timer_routines.c: Likewise.
761
762 2000-06-13  Ulrich Drepper  <drepper@redhat.com>
763
764         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_TIMERS): Define.
765         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
766
767         * sysdeps/pthread/Makefile: Remove tests definition.
768
769 2000-06-12  Kazumoto Kojima  <kkojima@rr.iij4u.or.jp>
770             Yutaka Niibe  <gniibe@chroot.org>
771
772         * sysdeps/sh/pspinlock.c: New file.
773         * sysdeps/sh/pt-machine.h: New file.
774
775 2000-06-12  Ulrich Drepper  <drepper@redhat.com>
776
777         * Makefile (tests): Add joinrace.
778
779         * Examples/ex6.c: Test return value of pthread_join.
780
781 2000-06-11  Geoff Keating  <geoffk@cygnus.com>
782
783         * sysdeps/powerpc/pspinlock.c (__pthread_spin_lock): Implement.
784         (__pthread_spin_trylock): Implement.
785         (__pthread_spin_unlock): Implement.
786         (__pthread_spin_init): Implement.
787         (__pthread_spin_destroy): Implement.
788
789 2000-06-10  Ulrich Drepper  <drepper@redhat.com>
790
791         * sysdeps/pthread/timer_routines.c (list_append): Little fix to
792         really append the entry.
793
794 2000-06-10  Andreas Jaeger  <aj@suse.de>
795
796         * lockfile.c (__fresetlockfiles): Remove unused variable fp.
797
798 2000-06-10  Kaz Kylheku  <kaz@ashi.footprints.net>
799
800         * sysdeps/pthread/timer_create.c: Thread matching now done on
801         clock type as well as thread attributes.
802         There are individual global signal-delivering threads for
803         different clock types.
804         * sysdeps/pthread/posix-timer.h: Likewise.
805         * sysdeps/pthread/timer_routines.c: Likewise.
806
807         * sysdeps/pthread/timer_routines.c: Thread allocation and
808         deallocation function now remembers to put thread on active
809         list and remove from active list.
810         Thus now the feature of binding multiple timers
811         to a single thread actually works.
812
813 2000-06-10  Ulrich Drepper  <drepper@redhat.com>
814
815         * pthread.c (__pthread_create_2_1): Optimize a bit.
816
817         * internals.h (invalid_handle): Also test for p_terminated != 0.
818         (nonexisting_handle): New function.  Same as old invalid_handle.
819         * join.c (pthread_join): Use nonexisting_handle instead of
820         invalid_handle to test for acceptable thread handle.
821         * manager.c (pthread_handle_free): Likewise.
822         * joinrace.c: New file.
823         Reported by Permaine Cheung <pcheung@cygnus.com>.
824
825 2000-06-08  Ulrich Drepper  <drepper@redhat.com>
826
827         * sysdeps/pthread/timer_routines.c (__timer_thread_queue_timer):
828         Correct handling of matching variable.
829
830         * sysdeps/pthread/tst-timer.c (main): Rewrite initializers to
831         avoid warnings.
832
833         * sysdeps/pthread/timer_routines.c (__timer_thread_queue_timer):
834         Be prepared for empty timer list.
835
836         * sysdeps/pthread/timer_create.c (timer_create): Correct names of
837         CPUTIME clock ID.  Add support for thread clocks.
838
839         * sysdeps/pthread/posix-timer.h (timer_ptr2id): Operands in
840         subtraction were switched.
841
842         * sysdeps/pthread/timer_routines.c (init_module): Use
843         THREAD_MAXNODES threads.
844
845         * sysdeps/pthread/posix-timer.h (struct timer_node): Add creator_pid.
846         * sysdeps/pthread/timer_create.c: Fill in creator_pid.
847         * sysdeps/pthread/timer_routines.c (thread_expire_timer): Send signal
848         with sigqueueinfo is this system call is available.
849
850         * sysdeps/pthread/timer_create.c (timer_create): Allow
851         CLOCK_CPUTIME if _POSIX_CPUTIME is defined.
852
853         * sysdeps/pthread/Makefile: New file.  Add rules to build timer
854         functionality.
855         * sysdeps/unix/sysv/linux/bits/local_lim.h: Add TIMER_MAX.
856
857 2000-06-04  Kaz Kylheku  <kaz@ashi.footprints.net>
858
859         * sysdeps/pthread/posix-timer.h: New file.
860         * sysdeps/pthread/timer_create.c: New file.
861         * sysdeps/pthread/timer_delete.c: New file.
862         * sysdeps/pthread/timer_getoverr.c: New file.
863         * sysdeps/pthread/timer_gettime.c: New file.
864         * sysdeps/pthread/timer_routines.c: New file.
865         * sysdeps/pthread/timer_settime.c: New file.
866         * sysdeps/pthread/tst-timer.c: New file.
867
868 2000-06-08  Ulrich Drepper  <drepper@redhat.com>
869
870         * sysdeps/unix/sysv/linux/bits/local_lim.h: Remove OPEN_MAX and
871         LINK_MAX definitions if necessary.
872
873 2000-06-04  Kaz Kylheku  <kaz@ashi.footprints.net>
874
875         Added missing fork time handling of global libio lock.
876
877         * lockfile.c (__fresetlockfiles): Now also resets the list lock,
878         not just the individual stream locks. Rewritten to use new
879         iterator interface provided by libio rather than accessing
880         global variable.
881
882         * lockfile.c (__flockfilelist, _funlockfilelist): New functions
883         which lock and unlock the stream list using the new interface
884         provied by libio.
885         * internals.h: Likewise.
886
887         * ptfork.c (__fork): Now calls __flockfilelist before fork,
888         and __funlockfilelist in the parent after the fork.
889         Child still calls __fresetlockfiles as before.
890
891         * linuxthreads.texi: Now explains what happens to streams at
892         fork time. Also whole new section on forking and thread added.
893         Definition of pthread_atfork moved out of Miscellaneous Functions
894         to this new section.
895
896 2000-06-04  Jakub Jelinek  <jakub@redhat.com>
897
898         * sysdeps/sparc/sparc32/sparcv9/pspinlock.c (__pthread_spin_lock):
899         Add missing register.
900         * sysdeps/sparc/sparc64/pspinlock.c (__pthread_spin_lock): Likewise.
901
902 2000-06-02  Jakub Jelinek  <jakub@redhat.com>
903
904         * sysdeps/sparc/sparc32/pspinlock.c: Implement spinlocks.
905         * sysdeps/sparc/sparc32/sparcv9/pspinlock.c: New.
906         * sysdeps/sparc/sparc64/pspinlock.c: Implement spinlocks.
907
908 2000-05-31  Andreas Jaeger  <aj@suse.de>
909
910         * sysdeps/mips/pspinlock.c: Implement spinlocks.
911
912 2000-05-28  Ulrich Drepper  <drepper@redhat.com>
913
914         * spinlock.c (__pthread_lock): Remove ASSERT.
915
916         * Makefile (tests): Add ex8.
917         * Examples/ex8.c: New file.
918
919 2000-05-12  Kaz Kylheku  <kaz@ashi.footprints.net>
920
921         Bugfix: The pthread_atfork mechanism now takes care of its
922         own internal mutex at fork time.
923
924         * ptfork.c (__fork): Revised so that the mutex is held across
925         the fork operation and while the handlers are called, and so that
926         the child resets the mutex.
927
928         * linuxthreads.texi: Updated pthread_atfork documentation to make
929         it clear that fork and pthread_atfork can't be reentered from
930         atfork handlers, that pthread_atfork and fork are mutually atomic,
931         and that the handlers are inherited by the child process.
932
933 2000-05-24  Ulrich Drepper  <drepper@redhat.com>
934
935         * Makefile (libpthread-routines): Add pspinlock.
936         * cancel.c: Rename __pthread_spin_unlock back to __pthread_unlock.
937         Use struct _pthread_fastlock instead of pthread_spinlock_t.
938         * condvar.c: Likewise.
939         * internals.h: Likewise.
940         * join.c: Likewise.
941         * manager.c: Likewise.
942         * mutex.c: Likewise.
943         * pthread.c: Likewise.
944         * rwlock.c: Likewise.
945         * semaphore.c: Likewise.
946         * signals.c: Likewise.
947         * spinlock.h: Likewise.
948         * spinlock.c: Likewise.  Remove pthread_spin_lock functions.
949         * sysdeps/alpha/pspinlock.c: New file.
950         * sysdeps/arm/pspinlock.c: New file.
951         * sysdeps/i386/pspinlock.c: New file.
952         * sysdeps/m68k/pspinlock.c: New file.
953         * sysdeps/mips/pspinlock.c: New file.
954         * sysdeps/powerpc/pspinlock.c: New file.
955         * sysdeps/sparc/sparc32/pspinlock.c: New file.
956         * sysdeps/sparc/sparc64/pspinlock.c: New file.
957         * sysdeps/pthread/bits/pthreadtypes.h: Remove pthread_spinlock_t
958         back to _pthread_fastlock.  Define new pthread_spinlock_t.
959
960 2000-05-24  Andreas Jaeger  <aj@suse.de>
961
962         * sysdeps/i386/i686/pt-machine.h: Only use LDT on newer kernels.
963
964 2000-05-21  Jakub Jelinek  <jakub@redhat.com>
965
966         * manager.c (pthread_handle_create): Initialize p_res._sock to -1.
967
968 2000-05-13  Jakub Jelinek  <jakub@redhat.com>
969
970         * internals.h (__RES_PTHREAD_INTERNAL): Define.
971
972 2000-05-06  Kaz Kylheku  <kaz@ashi.footprints.net>
973
974         * mutex.c (pthread_once): IN_PROGRESS state of pthread_once_t
975         object state is represented with additional bits which distinguish
976         whether that state was set up in the current process, or
977         in an ancestor process. If that state was set in an ancestor,
978         it means that a fork happened while thread was executing the init
979         function. In that case, the state is reset to NEVER.
980         * mutex.c (__pthread_once_fork_prepare): New function.
981         (__pthread_once_fork_child): Likewise
982         (__pthread_once_fork_parent): Likewise
983         (__pthread_reset_pthread_once): Removed.
984         * ptfork.c (__fork): Call new handlers in mutex.c.
985         * internals.h: Declarations of new mutex.c functions added.
986         Declaration of removed function deleted.
987         * linuxthreads.texi: Updated documentation about pthread_once
988         to clarify what happens under cancellation and forking.
989
990 2000-05-06  Kaz Kylheku  <kaz@ashi.footprints.net>
991
992         * internals.h: New thread manager request type, REQ_KICK.
993         * join.c (pthread_exit): main thread now calls exit() instead
994         of _exit() in order to proper process cleanup.
995         * manager.c (__pthread_manager): Do not terminate manager
996         after unblocking main thread; wait for main thread's
997         REQ_PROCESS_EXIT request instead.
998         Also, added REQ_KICK case to handle new request; this just does
999         nothing.
1000         * manager.c (pthread_exited): Do not terminate manager after
1001         unblocking main thread.
1002         * manager.c (__pthread_manager_sighandler): If the main thread
1003         is waiting for all other threads to die, send a REQ_KICK into
1004         the thread manager request pipe to get it to clean out the threads
1005         and unblock the main thread as soon as possible. This fixes
1006         the 2000 millisecond hang on shutdown bug.
1007         * Examples/ex7.c: New file, tests shutdown behavior when all threads
1008         including the main one call pthread_exit(), or implicitly do so.
1009         * Makefile (tests): Add ex7.
1010
1011 2000-05-05  Andreas Jaeger  <aj@suse.de>
1012
1013         * sysdeps/unix/sysv/linux/i386/getcpuclockid.c
1014         (pthread_getcpuclockid): Correct test for ourselves.
1015
1016 2000-05-05  Ulrich Drepper  <drepper@redhat.com>
1017
1018         * internals.h (struct _pthread_descr_struct): Reorganization.
1019         Allocate room for 16 pointers at head of the structure for future
1020         thread-local data handling.  Move p_self member in this area.
1021         * manager.c (pthread_handle_create): Adjust use of p_self.
1022         * sysdeps/i386/useldt.h (THREAD_SELF): Likewise.
1023         * pthread.c (__pthread_initial_thread): Adjust initialization.
1024         (__pthread_manager_thread): Likewise.
1025
1026 2000-04-29  Bruno Haible  <haible@clisp.cons.org>
1027
1028         * join.c (pthread_exit): Use THREAD_GETMEM_NC instead of THREAD_GETMEM
1029         for eventmask larger than 1 word.
1030
1031 2000-04-27  Ulrich Drepper  <drepper@redhat.com>
1032
1033         * Versions [libpthread] (GLIBC_2.2): Add __pthread_initialize_minimal.
1034         * pthread.c (__pthread_initialize_minimal): New function.  Perform
1035         minimal initialization.
1036         (pthread_initialize): Remove this code here.
1037         * sysdeps/i386/i686/pt-machine.h: Include "../useldt.h" again.  We
1038         are working around the problem in glibc.
1039
1040 2000-04-25  Ulrich Drepper  <drepper@redhat.com>
1041
1042         * sysdeps/i386/i686/pt-machine.h: Do not use "../useldt.h" for
1043         now.  First gcc must be fixed (more concrete: libgcc).
1044
1045 2000-04-24  Ulrich Drepper  <drepper@redhat.com>
1046
1047         * pthread.c: Remove special treatement for interrupt handlers on x86.
1048         * manager.c (pthread_free): Use FREE_THREAD not FREE_THREAD_SELF.
1049         * sysdeps/i386/useldt.h: Use "q" constraint instead of "r" where
1050         necessary.
1051         * sysdeps/i386/i686/pt-machine.h: Include "../useldt.h".
1052
1053 2000-04-24  Mark Kettenis  <kettenis@gnu.org>
1054
1055         * join.c (pthread_exit): Set p_terminated after reporting the
1056         termination event instead of before.
1057
1058 2000-04-20  Jakub Jelinek  <jakub@redhat.com>
1059
1060         * sysdeps/pthread/bits/libc-lock.h: Only declare __pthread_rwlock_*
1061         if __USE_UNIX98.
1062
1063 2000-04-18  Andreas Jaeger  <aj@suse.de>
1064
1065         * Versions: Use ld instead of ld.so.
1066
1067 2000-04-18  Jakub Jelinek  <jakub@redhat.com>
1068
1069         * sysdeps/unix/sysv/linux/sparc/bits/sigcontext.h (struct sigcontext):
1070         Remove the typedef keyword.
1071
1072 2000-04-18  Jakub Jelinek  <jakub@redhat.com>
1073
1074         * sysdeps/sparc/sparc64/pt-machine.h (MEMORY_BARRIER): Use membar,
1075         not stbar.
1076         (READ_MEMORY_BARRIER): Define.
1077         * spinlock.c (__pthread_spin_unlock): Use READ_MEMORY_BARRIER, not
1078         MEMORY_BARRIER.
1079         * internals.h (READ_MEMORY_BARRIER): Define if not defined in sysdep
1080         headers.
1081
1082 2000-04-17  Ulrich Drepper  <drepper@redhat.com>
1083
1084         * sysdeps/unix/sysv/linux/i386/getcpuclockid.c
1085         (pthread_getcpuclockid): Don't compare thread_id with thread_self,
1086         use thread_handle().
1087
1088 2000-04-16  Ulrich Drepper  <drepper@redhat.com>
1089
1090         * condvar.c (pthread_cond_timedwait_relative): Don't test for owner
1091         if fast mutex is used.  Don't initialize `already_canceled' twice.
1092         Correctly test for return value of timedsuspend.
1093
1094         * pthread.c: Correct long-time braino.  We never set SA_SIGINFO and
1095         therefore don't need the _rt versions of the signal handlers.
1096
1097 2000-04-15  Ulrich Drepper  <drepper@redhat.com>
1098
1099         * pthread.c (pthread_yield): New function.
1100         * sysdeps/pthread/pthread.h (pthread_yield): Add prototype.
1101         * Versions [libpthread] (GLIBC_2.2): Add pthread_yield.
1102         * internals.h: Declare __pthread_yield.
1103
1104         * pthread.c (pthread_initialize): Avoid a bit more code if
1105         realtime signals are known to exist.
1106
1107         * pthread.c: Is __ASSUME_REALTIME_SIGNALS then avoid generating code
1108         to dynamically detect RT signals and avoid generating compatibility
1109         functions with old kernel.
1110         * restart.h (restart) [__ASSUME_REALTIME_SIGNALS]: Use
1111         __pthread_restart_new directly.
1112         (suspend) [__ASSUME_REALTIME_SIGNALS]: Use
1113         __pthread_wait_for_restart_signal directly.
1114         (timedsuspend) [__ASSUME_REALTIME_SIGNALS]: Use
1115         __pthread_timedsuspend_new directly.
1116
1117 2000-04-15  Ulrich Drepper  <drepper@redhat.com>
1118
1119         * condvar.c: Remove all the special code to handle cond_timedwait.
1120         Use timedsuspend instead.
1121         * internals.h: Declare __pthread_timedsuspend_old,
1122         __pthread_timedsuspend_new, and __pthread_timedsuspend.
1123         Remove declaration of __pthread_init_condvar.
1124         * pthread.c: Define __pthread_timedsuspend variable.
1125         (__pthread_timedsuspend_old): New function.  Timed suspension
1126         implementation for old Linux kernels.
1127         (__pthread_timedsuspend_new): New function.  Timed suspension
1128         implementation for new Linux kernels.
1129         * restart.h (timedsuspend): New function.  Call appropriate
1130         suspension function through __pthread_timedsuspend.
1131         * semaphore.c (sem_timedwait): Use timedsuspend, don't duplicate
1132         the code.
1133         Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
1134
1135         * internals.h (WRITE_MEMORY_BARRIER): Define as MEMORY_BARRIER if
1136         undefined.
1137         * spinlock.c: Use WRITE_MEMORY_BARRIER instead of MEMORY_BARRIER
1138         where possible.
1139         * sysdeps/alpha/pt-machine.h: Define WRITE_MEMORY_BARRIER.
1140         * sysdeps/sparc/sparc64/pt-machine.h: Likewise.
1141
1142         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Add _POSIX_SPAWN.
1143         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
1144
1145 2000-04-14  Andreas Jaeger  <aj@suse.de>
1146
1147         * weaks.c: Fix typo.
1148
1149         * shlib-versions (mips.*-.*-linux.*): Support only GLIBC 2.0 and
1150         2.2 for linuxthreads.
1151
1152 2000-04-13  Ulrich Drepper  <drepper@redhat.com>
1153
1154         * sysdeps/unix/sysv/linux/i386/getcpuclockid.c
1155         (pthread_getcpuclockid): Fix typo.
1156
1157 2000-04-12  Ulrich Drepper  <drepper@redhat.com>
1158
1159         * Makefile (libpthread-routines): Add getcpuclockid.
1160         * Versions [libpthread] (GLIBC_2.2): Add pthread_getcpuclockid.
1161         * sysdeps/pthread/getcpuclockid.c: New file.
1162         * sysdeps/unix/sysv/linux/i386/getcpuclockid.c: New file.
1163         * sysdeps/pthread/pthread.h: Add prototype for pthread_getcpuclockid.
1164
1165         * sysdeps/unix/sysv/linux/bits/posix_opt.h (_POSIX_SPIN_LOCKS):
1166         Defined.
1167         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: Likewise.
1168
1169         * sysdeps/pthread/pthread.h: Add prototypes for pthread_spin_init,
1170         pthread_spin_destroy, pthread_spin_lock, pthread_spin_trylock,
1171         and pthread_spin_unlock.
1172         * sysdeps/pthread/bits/pthreadtypes.h: Change struct _pthread_fastlock
1173         into pthread_spinlock_t.  Change all uses.
1174         * spinlock.c: Implement pthread_spin_lock.
1175         Rename __pthread_unlock to __pthread_spin_unlock and define weak
1176         alias for real name.
1177         Define pthread_spin_trylock, pthread_spin_init, and
1178         pthread_spin_destroy.
1179         Change all uses of _pthread_fastlock to pthread_spinlock_t.
1180         * spinlock.h: Rename __pthread_unlock to __pthread_spin_unlock.
1181         Change all uses of _pthread_fastlock to pthread_spinlock_t.
1182         * Versions [libpthread] (GLIBC_2.2): Add pthread_spin_init,
1183         pthread_spin_destroy, pthread_spin_lock, pthread_spin_trylock,
1184         and pthread_spin_unlock.
1185         * cancel.c: Use __pthread_spin_unlock instead of __pthread_unlock.
1186         Change all uses of _pthread_fastlock to pthread_spinlock_t.
1187         * condvar.c: Likewise.
1188         * internals.h: Likewise.
1189         * join.c: Likewise.
1190         * manager.c: Likewise.
1191         * mutex.c: Likewise.
1192         * pthread.c: Likewise.
1193         * rwlock.c: Likewise.
1194         * semaphore.c: Likewise.
1195         * signals.c: Likewise.
1196
1197         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Add various new POSIX
1198         macros.
1199         * sysdeps/unix/sysv/linux/i386/bits/posix_opt.h: New file.
1200
1201 2000-04-11  Ulrich Drepper  <drepper@redhat.com>
1202
1203         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Add
1204         _POSIX_SHARED_MEMORY_OBJECTS.
1205
1206 2000-04-11  Andreas Jaeger  <aj@suse.de>
1207
1208         * sysdeps/mips/pt-machine.h (MEMORY_BARRIER): Define.
1209         (__compare_and_swap): Mark as modifying memory.
1210
1211 2000-04-11  Geoff Keating  <geoffk@cygnus.com>
1212
1213         * sysdeps/powerpc/pt-machine.h (MEMORY_BARRIER): Don't be
1214         __volatile__.
1215         (__compare_and_swap): Replace other 'sync' with MEMORY_BARRIER.
1216         Don't have the 'asm' __volatile__.
1217
1218 2000-04-11  Ulrich Drepper  <drepper@redhat.com>
1219
1220         * internals.h: Define MEMORY_BARRIER as empty if not defined already.
1221         * spinlock.c (__pthread_lock): Add memory barriers.
1222         (__pthread_unlock): Likewise.
1223         * sysdeps/alpha/pt-machine.h (MEMORY_BARRIER): Define using mb
1224         instruction.
1225         (RELEASE): Not needed anymore.
1226         (__compare_and_swap): Mark asm as modifying memory.
1227         * sysdeps/powerpc/pt-machine.h (sync): Remove.  Replace with definition
1228         of MEMORY_BARRIER.
1229         (__compare_and_swap): Use MEMORY_BARRIER instead of sync.
1230         * sysdeps/sparc/sparc32/pt-machine.h (RELEASE): Not needed anymore.
1231         (MEMORY_BARRIER): Define using stbar.
1232         * sysdeps/sparc/sparc64/pt-machine.h (MEMORY_BARRIER): Define using
1233         stbar.
1234         (__compare_and_swap): Use MEMORY_BARRIER to ensure ordering.
1235         Patch by Xavier Leroy <Xavier.Leroy@inria.fr> based on comments by
1236         Mike Burrows <m3b@pa.dec.com>.
1237
1238 2000-04-09  Ulrich Drepper  <drepper@redhat.com>
1239
1240         * signals.c (sigaction): Fix return value for the case SIG is one
1241         of the signals the implementation uses.
1242         Patch by Xavier.Leroy@inria.fr.
1243
1244 2000-04-01  Andreas Jaeger  <aj@suse.de>
1245
1246         * attr.c: Use shlib-compat macros.
1247         * oldsemaphore.c: Likewise.
1248         * pthread.c: Likewise.
1249         * weaks.c: Likewise.
1250
1251 2000-03-26  Ulrich Drepper  <drepper@redhat.com>
1252
1253         * semaphore.c (sem_timedwait): New function.
1254         Patch by Carl Mailloux <carlm@oricom.ca>.
1255         * semaphore.h: Declare sem_timedwait.
1256         * Versions [libpthread] (GLIBC_2.2): Add sem_timedwait.
1257
1258 2000-03-26  Roland McGrath  <roland@baalperazim.frob.com>
1259
1260         * sysdeps/pthread/Makefile: File removed.
1261
1262 2000-03-23  Ulrich Drepper  <drepper@redhat.com>
1263
1264         * mutex.c (__pthread_reset_pthread_once): Reset once_masterlock.
1265         * internals.h (__pthread_reset_pthread_once): Add prototype.
1266         * ptfork.c (__fork): Call __pthread_reset_pthread_once.
1267
1268         * manager.c (pthread_handle_create): Store ID of new thread before
1269         clone call.
1270
1271 2000-03-21  Ulrich Drepper  <drepper@redhat.com>
1272
1273         * attr.c: Use new macros from shlib-compat.h to define versions.
1274         * oldsemaphore.c: Likewise.
1275         * semaphore.c: Likewise.
1276         * weaks.c: Likewise.
1277
1278         * pthread.c: Update for new SHLIB_COMPAT definition.
1279
1280         * manager.c (__pthread_manager): Unmask debug signal.
1281
1282         * pthread.c (pthread_initialize): Test for address of __dso_handle
1283         being NULL, not value.  Use __on_exit, not on_exit.
1284         Patch by Andreas Jaeger <aj@suse.de>.
1285
1286         * pthread.c: Use new macros from shlib-compat.h to define versions.
1287
1288 2000-03-19  Ulrich Drepper  <drepper@redhat.com>
1289
1290         * pthread.c (pthread_initialize): Instead of on_exit use
1291         __cxa_atexit if __dso_label is available to allow unloading the
1292         libpthread shared library.
1293
1294 2000-03-16  Ulrich Drepper  <drepper@redhat.com>
1295
1296         * condvar.c: Make tests for ownership of mutex less strict.
1297
1298 2000-03-14  Ulrich Drepper  <drepper@redhat.com>
1299
1300         * condvar.c (pthread_cond_wait): Check whether mutex is owned by
1301         current thread and return error if not.
1302         (pthread_cond_timedwait_relative_old): Likewise.
1303         (pthread_cond_timedwait_relative_new): Likewise.
1304
1305         * mutex.c (__pthread_once): Handle cancelled init function correctly.
1306         (pthread_once_cancelhandler): New function.
1307         Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
1308
1309 2000-03-14  Andreas Jaeger  <aj@suse.de>
1310
1311         * pthread.c (pthread_handle_sigcancel_rt): GS has been renamed to
1312         REG_GS.
1313         (pthread_handle_sigrestart_rt): Likewise.
1314         * signals.c (pthread_sighandler_rt): Likewise.
1315
1316 2000-03-02  Andreas Jaeger  <aj@suse.de>
1317
1318         * sysdeps/pthread/bits/libc-lock.h: Fix typo.
1319         Reported by Sean Chen <sean.chen@turbolinux.com>.
1320
1321 2000-02-28  Andreas Jaeger  <aj@suse.de>
1322
1323         * rwlock.c: Fix typo.
1324
1325 2000-02-27  Ulrich Drepper  <drepper@redhat.com>
1326
1327         * rwlock.c: Define __* variants of the functions and make old names
1328         aliases.
1329         * Versions [GLIBC_2.2]: Export the __pthread_rwlock_* functions.
1330         * sysdeps/pthread/bits/libc-lock.h: Define __libc_rwlock_* macros.
1331
1332 2000-02-25  Andreas Jaeger  <aj@suse.de>
1333
1334         * Versions: Export pread, __pread64, pread64, pwrite, __pwrite64,
1335         pwrite64, lseek64, open64, and __open64 with version 2.2.
1336
1337 2000-02-22  Ulrich Drepper  <drepper@redhat.com>
1338
1339         * semaphore.h (SEM_FAILED): Use 0 not NULL.
1340
1341 2000-02-14  Ulrich Drepper  <drepper@redhat.com>
1342
1343         * condvar.c (pthread_cond_timedwait_relative_old): Tight loop with
1344         nanosleep does not work either.  Get absolute time inside the
1345         loop.
1346         (pthread_cond_timedwait_relative_new): Likewise.
1347         Patch by Kaz Kylheku <kaz@ashi.footprints.net>.
1348
1349 2000-02-13  Andreas Jaeger  <aj@suse.de>
1350
1351         * condvar.c (pthread_cond_timedwait_relative_new): Fix last patch.
1352         (pthread_cond_timedwait_relative_old): Likewise.
1353
1354 2000-02-13  Ulrich Drepper  <drepper@redhat.com>
1355
1356         * condvar.c (pthread_cond_timedwait_relative_old): Undo last patch
1357         but keep the code around.  A bug in the kernel prevent us from
1358         using the code.
1359         (pthread_cond_timedwait_relative_new): Likewise.
1360         (PR libc/1597 and libc/1598).
1361
1362 2000-02-01  Kaz Kylheku  <kaz@ashi.footprints.net>
1363
1364         * condvar.c (pthread_cond_timedwait_relative_old): Do tight
1365         loop around nanosleep calls instead of around most of the function
1366         (pthread_cond_timedwait_relative_new): Likewise.
1367         body.  Got rid of backwards goto and one local.
1368
1369 2000-01-31  Ulrich Drepper  <drepper@redhat.com>
1370
1371         * condvar.c (pthread_cond_timedwait_relative_old): Recompute time
1372         before every nanosleep call to account for time spent in the rest
1373         of the function.
1374         (pthread_cond_timedwait_relative_new): Likewise.
1375         Patch by khendricks@ivey.uwo.ca (PR libc/1564).
1376
1377 2000-01-29  Ulrich Drepper  <drepper@redhat.com>
1378
1379         * condvar.c (pthread_cond_timedwait_relative_old): Get remaining time
1380         from nanosleep call so that in case we restart we only wait for the
1381         remaining time.
1382         (pthread_cond_timedwait_relative_new): Likewise.
1383         Patch by khendricks@ivey.uwo.ca (PR libc/1561).
1384
1385 2000-01-18  Ulrich Drepper  <drepper@cygnus.com>
1386
1387         * manager.c (pthread_allocate_stack): Compute guard page address
1388         correctly.  Patch by HJ Lu.
1389
1390         * sysdeps/pthread/pthread.h: Define
1391         PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP.
1392
1393 2000-01-16  Ulrich Drepper  <drepper@cygnus.com>
1394
1395         * rwlock.c (pthread_rwlock_unlock): Correct one more problem with
1396         preference handling.
1397         (pthread_rwlockattr_setkind_np): Allow
1398         PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP.
1399         Patches by Kaz Kylheku <kaz@ashi.footprints.net>.
1400
1401 2000-01-12  Ulrich Drepper  <drepper@cygnus.com>
1402
1403         * internals.h (pthread_readlock_info): New structure.
1404         (_pthread_descr_struct): Add p_readlock_list, p_readlock_free, and
1405         p_untracked_readlock_count.
1406         * pthread.c (__pthread_initial_thread, pthread_manager_thread):
1407         Add initializers for new fields.
1408         * manager.c (pthread_free): Free read/write lock lists.
1409         * queue.h (queue_is_empty): New function.
1410         * rwlock.c: Implement requirements about when readers should get
1411         locks assigned.
1412         * sysdeps/pthread/pthread.h
1413         (PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP): New definition.
1414         * sysdeps/pthread/bits/pthreadtypes.h (struct _pthread_rwlock_t):
1415         Define this name as well.
1416         Patches by Kaz Kylheku <kaz@ashi.footprints.net>.
1417
1418 2000-01-05  Ulrich Drepper  <drepper@cygnus.com>
1419
1420         * pthread.c (__pthread_initial_thread, pthread_manager_thread):
1421         Adjust initializers for struct _pthread_descr_struct change.
1422         * internals.h (struct _pthread_descr_struct): Move new elements to
1423         the end.
1424
1425 2000-01-03  Kaz Kylheku  <kaz@ashi.footprints.net>
1426
1427         Redesigned how cancellation unblocks a thread from internal
1428         cancellation points (sem_wait, pthread_join,
1429         pthread_cond_{wait,timedwait}).
1430         Cancellation won't eat a signal in any of these functions
1431         (*required* by POSIX and Single Unix Spec!).
1432         * condvar.c: Spontaneous wakeup on pthread_cond_timedwait won't eat a
1433         simultaneous condition variable signal (not required by POSIX
1434         or Single Unix Spec, but nice).
1435         * spinlock.c: __pthread_lock queues back any received restarts
1436         that don't belong to it instead of assuming ownership of lock
1437         upon any restart; fastlock can no longer be acquired by two threads
1438         simultaneously.
1439         * restart.h: Restarts queue even on kernels that don't have
1440         queued real time signals (2.0, early 2.1), thanks to atomic counter,
1441         avoiding a rare race condition in pthread_cond_timedwait.
1442
1443 1999-12-31  Andreas Jaeger  <aj@suse.de>
1444
1445         * internals.h: Remove duplicate prototype declarations.
1446
1447         * weaks.c: Remove __THROW from prototypes since the file is not
1448         compiled by a C++ compiler.
1449         * internals.h: Likewise.
1450
1451 1999-12-30  Andreas Jaeger  <aj@suse.de>
1452
1453         * sysdeps/pthread/pthread.h: Move internal functions to...
1454         * sysdeps/pthread/bits/libc-lock.h: ...here.
1455
1456 1999-12-29  Andreas Jaeger  <aj@suse.de>
1457
1458         * sysdeps/pthread/pthread.h: Fix typos, reformat comments.
1459
1460 1999-12-28  Ulrich Drepper  <drepper@cygnus.com>
1461
1462         * sysdeps/alpha/pt-machine.h: Move stack_pointer definition to the
1463         beginning.
1464
1465         * manager.c (__pthread_start): Add one more cast to prevent
1466         warning on 64bit machines.
1467
1468 1999-12-21  Ulrich Drepper  <drepper@cygnus.com>
1469
1470         * manager.c (pthread_handle_create): Set p_pid of new thread
1471         before calling the callback function to report a new thread.
1472
1473 1999-12-20  Andreas Jaeger  <aj@suse.de>
1474
1475         * pthread.c (pthread_initialize): Move getrlimit call after
1476         setting of errno.
1477
1478 1999-12-18  Ulrich Drepper  <drepper@cygnus.com>
1479
1480         * Versions: Export pread, __pread64, pread64, pwrite, __pwrite64,
1481         pwrite64, lseek64, open64, and __open64.
1482         * wrapsyscall.c: Define pread, __pread64, pread64, pwrite, __pwrite64,
1483         pwrite64, lseek64, open64, and __open64.
1484
1485         * manager.c (pthread_allocate_stack): Correct computation of
1486         new_thread_bottom.  Correct handling of stack size and when the
1487         rlimit method to guard for stack growth is used.
1488         * pthread.c (pthread_initialize): Stack limit must be STACK_SIZE
1489         minus one pagesize (not two).
1490
1491 1999-12-03  Andreas Jaeger  <aj@suse.de>
1492
1493         * Versions: Add __res_state with version GLIBC_2.2.
1494
1495         * errno.c (__res_state): New function to return thread specific
1496         resolver state.
1497
1498         * pthread.c (pthread_initialize): Initialize p_resp.
1499         (__pthread_reset_main_thread): Also set p_resp.
1500
1501         * manager.c (pthread_handle_create): Initialize p_resp.
1502
1503         * internals.h: Add thread specific resolver state.
1504         Based on patches by Adam D. Bradley <artdodge@cs.bu.edu>.
1505
1506 1999-12-01  Ulrich Drepper  <drepper@cygnus.com>
1507
1508         * sysdeps/i386/pt-machine.h: Move stack_pointer definition to the
1509         beginning.
1510         * sysdeps/i386/i686/pt-machine.h: Likewise.
1511         Patches by Alan Modra <alan@SPRI.Levels.UniSA.Edu.Au>.
1512
1513 1999-11-23  Ulrich Drepper  <drepper@cygnus.com>
1514
1515         * manager.c (pthread_start_thread_event): Initialize p_pid already
1516         here.
1517
1518 1999-11-22  Ulrich Drepper  <drepper@cygnus.com>
1519
1520         * internals.h: Add prototype for __pthread_manager_event.
1521         * manager.c (__pthread_manager_event): New function.
1522         (pthread_start_thread_event): Correct computation of self.
1523         Use INIT_THREAD_SELF.
1524         * pthread.c (__pthread_manager_thread): Initialize p_lock.
1525         (__pthread_initialize_manager): Respect event flags also for creation
1526         of the manager thread.
1527
1528 1999-11-08  Ulrich Drepper  <drepper@cygnus.com>
1529
1530         * pthread.c (__pthread_initialize_manager): Initialize
1531         __pthread_manager_thread.p_tid.
1532
1533 1999-11-02  Ulrich Drepper  <drepper@cygnus.com>
1534
1535         * internals.h: Declare __pthread_last_event.
1536         * manager.c: Define __pthread_last_event.
1537         (pthread_handle_create): Set __pthread_last_event.
1538         (pthread_exited): Likewise.
1539         * join.c (pthread_exit): Likewise.
1540
1541         * Makefile (libpthread-routines): Add events.
1542         * events.c: New file.
1543         * internals.h: Protect against multiple inclusion.
1544         Include thread_dbP.h header.
1545         (struct _pthread_descr_struct): Add new fields p_report_events and
1546         p_eventbuf.
1547         Declare event reporting functions.
1548         * join.c (pthread_exit): Signal event if this is wanted.
1549         * manager.c (__pthread_threads_events): New variable.
1550         (pthread_handle_create): Take new parameters with event information.
1551         Signal TD_CREATE event if wanted.
1552         (__pthread_manager): Adjust pthread_handle_create call.
1553         (pthread_start_thread_event): New function.  Block until manager is
1554         finished and then call pthread_start_thread.
1555         (pthread_exited): Signal TD_REAP event if wanted.
1556
1557 1999-10-26  Ulrich Drepper  <drepper@cygnus.com>
1558
1559         * restart.h (suspend_with_cancellation): Rewrite as a macro.
1560
1561         * condvar.c (pthread_cond_timedwait_relative): Don't mark as inline.
1562
1563 1999-10-25  Andreas Jaeger  <aj@suse.de>
1564
1565         * internals.h: Remove K&R compatibility.
1566         * no-tsd.c: Likewise.
1567         * semaphore.h: Likewise.
1568         * signals.c: Likewise.
1569         * sysdeps/pthread/bits/libc-tsd.h: Likewise.
1570         * sysdeps/unix/sysv/linux/bits/sigthread.h: Likewise.
1571         * weaks.c: Likewise.
1572
1573 1999-10-21  Xavier Leroy  <Xavier.Leroy@inria.fr>
1574
1575         * pthread.c: For i386, wrap pthread_handle_sigrestart and
1576         pthread_handle_sigcancel with functions that restore %gs from the
1577         signal context.  For each signal handling function, two wrappers
1578         are required, one for a non-RT signal and one for a RT signal.
1579         * signal.c: For i386, add code to restore %gs from the signal
1580         context in pthread_sighandler and pthread_sighandler_rt.
1581
1582 1999-10-17  Ulrich Drepper  <drepper@cygnus.com>
1583
1584         * internals.h (PTHREAD_START_ARGS_INITIALIZER): Add cast.
1585
1586 1999-10-14  Ulrich Drepper  <drepper@cygnus.com>
1587
1588         * pthread.c (__pthread_initial_thread): Pass argument to
1589         PTHREAD_START_ARGS_INITIALIZER.
1590         (__pthread_manager_thread): Likewise.
1591
1592         * internals.h (PTHREAD_START_ARGS_INITIALIZER): Add parameter to
1593         initialize function.
1594
1595         * manager.c (pthread_handle_create): Remove p_startfct initialization.
1596
1597         * internals.h (_pthread_descr_struct): We don't need p_startfct field.
1598
1599 1999-10-12  Ulrich Drepper  <drepper@cygnus.com>
1600
1601         * internals.h: Correct return types for __libc_read and __libc_write.
1602
1603 1999-10-09  Andreas Jaeger  <aj@suse.de>
1604
1605         * internals.h: Add __new_sem_post to get prototype in
1606         manager.c; include semaphore.h for needed types.
1607
1608 1999-10-08  Ulrich Drepper  <drepper@cygnus.com>
1609
1610         * manager.c (__pthread_manager) [REQ_POST]: Use __new_sem_post
1611         directly instead of calling sem_post which should not be necessary
1612         but is faster and might help in some case to work around problems.
1613         Patch by khendricks@ivey.uwo.ca [libc/1382].
1614
1615 1999-10-08  Andreas Schwab  <schwab@suse.de>
1616
1617         * sysdeps/pthread/Subdirs: New file.
1618         * Implies: Removed.
1619
1620 1999-10-07  Ulrich Drepper  <drepper@cygnus.com>
1621
1622         * Implies: New file.
1623         * internals.h (struct _pthread_descr_struct): Add p_startfct.
1624         * manager.c (pthread_handle_create): Initialize p_startfct.
1625         * pthread.c: Define __linuxthread_pthread_sizeof_descr variable.
1626
1627 1999-09-25  Ulrich Drepper  <drepper@cygnus.com>
1628
1629         * manager.c (__linuxthreads_pthread_threads_max): New variable.
1630         * specific.c (__linuxthreads_pthread_keys_max): New variable.
1631         (__linuxthreads_pthread_key_2ndlevel_size): New variable.
1632
1633         * condvar.c (pthread_cond_timedwait_relative): Never return with
1634         EINTR.  Patch by Andreas Schwab.
1635
1636 1999-09-19  Ulrich Drepper  <drepper@cygnus.com>
1637
1638         * signals.c (sigaction): Correct last patch.  Don't select
1639         pthread_sighandler_rt based on the signal number but instead of
1640         the SA_SIGINFO flag.
1641
1642 1999-09-23  Ulrich Drepper  <drepper@cygnus.com>
1643
1644         * specific.c: Move definitions of struct pthread_key_struct and
1645         destr_function to ...
1646         * internals.h: ...here.
1647
1648 1999-09-18  Ulrich Drepper  <drepper@cygnus.com>
1649
1650         * pthread.c (pthread_handle_sigrestart_rt): New function.  Use
1651         this instead of pthread_handle_sigrestart if the signal is an RT
1652         signal.
1653
1654         * signals.c: Handle passing through of sighandler arguments also
1655         for real-time signals.
1656
1657 1999-09-03  Andreas Schwab  <schwab@suse.de>
1658
1659         * ptfork.c (__fork): Renamed from fork and use __libc_fork.  Add
1660         fork as weak alias.
1661         (__vfork): New function, alias vfork.
1662         * Versions: Export __fork, vfork, and __vfork in libpthread.
1663
1664 1999-08-23  Andreas Schwab  <schwab@suse.de>
1665
1666         * signals.c (pthread_sighandler): Add SIGCONTEXT_EXTRA_ARGS to
1667         call to signal handler.
1668
1669 1999-08-20  Ulrich Drepper  <drepper@cygnus.com>
1670
1671         * pthread.c (__pthread_reset_main_thread): Undo last change.
1672         (__pthread_kill_other_threads_np): Reset signal handlers for the
1673         signals we used in the thread implementation here.
1674
1675 1999-08-19  Ulrich Drepper  <drepper@cygnus.com>
1676
1677         * pthread.c (__pthread_reset_main_thread): Reset signal handlers
1678         for the signals we used in the thread implementation [PR libc/1234].
1679
1680         * Versions: Export __pthread_kill_other_threads_np from libpthread
1681         for GLIBC_2.1.2.
1682
1683         * signals.c: Pass sigcontext through wrapper to the user function.
1684
1685 1999-08-01  Ulrich Drepper  <drepper@cygnus.com>
1686
1687         * Versions [ld.so] (GLIBC_2.0): Export __libc_internal_tsd_get and
1688         __libc_internal_tsd_set.
1689
1690 1999-07-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
1691
1692         * manager.c: Remove inclusion of <linux/tasks.h> since it's not
1693         needed anymore.
1694
1695 1999-07-16  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
1696
1697         * internals.h: Align _pthread_descr_struct to 32 bytes.
1698         Reported by Tim Hockin <thockin@cobaltnet.com>, close PR
1699         libc/1206.
1700
1701 1999-07-09  Ulrich Drepper  <drepper@cygnus.com>
1702
1703         * oldsemaphore.c (sem_compare_and_swap): Fix use of compare and
1704         swap function.
1705
1706 1999-07-09  Cristian Gafton  <gafton@redhat.com>
1707
1708         * Makefile (libpthread-routines): Add oldsemaphore routine.
1709         * Versions: Add sem_destroy, sem_getvalue, sem_init, sem_post,
1710         sem_trywait, and sem_wait to GLIBC_2.1.
1711         * oldsemaphore.c: New file.
1712         * semaphore.c: Add default_symbol_versions for the changed functions.
1713         (__new_sem_init): Rename from sem_init.
1714         (__new_sem_post): Rename from sem_post.
1715         (__new_sem_wait): Rename from sem_wait.
1716         (__new_sem_trywait): Rename from sem_trywait.
1717         (__new_sem_getvalue): Rename from sem_getvalue.
1718         (__new_sem_destroy): Rename from sem_destroy.
1719
1720 1999-06-23  Robey Pointer  <robey@netscape.com>
1721
1722         * internals.h: Added p_nextlock entry to separate queueing for a
1723         lock from queueing for a CV (sometimes a thread queues on a lock
1724         to serialize removing itself from a CV queue).
1725         * pthread.c: Added p_nextlock to initializers.
1726         * spinlock.c: Changed to use p_nextlock instead of p_nextwaiting.
1727
1728 1999-07-09  Ulrich Drepper  <drepper@cygnus.com>
1729
1730         * manager.c (pthread_handle_create): Free mmap region after stack
1731         if clone failed.  Patch by Kaz Kylheku <kaz@ashi.FootPrints.net>.
1732
1733 1999-05-23  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
1734
1735         * man/pthread_cond_init.man: Correct example.
1736         Reported by Tomas Berndtsson <tomas@nocrew.org>.
1737
1738         * linuxthreads.texi (Condition Variables): Likewise.
1739
1740 1999-05-18  Jakub Jelinek  <jj@ultra.linux.cz>
1741
1742         * sysdeps/sparc/sparc64/pt-machine.h (__compare_and_swap): Use
1743         casx not cas, also successful casx returns the old value in rd
1744         and not the new value.
1745
1746 1999-05-16  Xavier Leroy  <Xavier.Leroy@inria.fr>
1747
1748         * manager.c: If pthread_create() is given a NULL attribute
1749         and the thread manager runs with a realtime policy, set the
1750         scheduling policy of the newly created thread back to SCHED_OTHER.
1751         * manager.c: If the PTHREAD_INHERIT_SCHED attribute is given,
1752         initialize the schedpolicy field of new_thread->p_start_args
1753         to that of the calling thread.
1754
1755 1999-04-29  Ulrich Drepper  <drepper@cygnus.com>
1756
1757         * sysdeps/sparc/sparc64/pt-machine.h (__compare_and_swap): cas
1758         instruction does not allow memory element to use offset.
1759
1760 1999-04-28  Ulrich Drepper  <drepper@cygnus.com>
1761
1762         * manager.c (pthread_allocate_stack): Optimize initialization of new
1763         thread descriptor.
1764
1765         * sysdeps/pthread/bits/libc-lock.h (__libc_lock_define_initialized):
1766         Don't use initializer since it is all zeroes.
1767         (__libc_once_define): Likewise.
1768
1769 1999-04-16  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
1770
1771         * sysdeps/arm/Implies: Removed since cmpxchg/no-cmpxchg
1772         doesn't exist anymore.
1773         * sysdeps/i386/Implies: Likewise.
1774         * sysdeps/m68k/Implies: Likewise.
1775         * sysdeps/mips/Implies: Likewise.
1776         * sysdeps/powerpc/Implies: Likewise.
1777         * sysdeps/sparc/sparc32/Implies: Likewise.
1778         * sysdeps/sparc/sparc64/Implies: Likewise.
1779
1780 1999-04-15  Ulrich Drepper  <drepper@cygnus.com>
1781
1782         * sysdeps/alpha/bits/semaphore.h: Removed.
1783         * sysdeps/powerpc/bits/semaphore.h: Removed.
1784         * sysdeps/pthread/cmpxchg/bits/semaphore.h: Removed.
1785         * sysdeps/pthread/no-cmpxchg/bits/semaphore.h: Removed.
1786         * Makefile (headers): Remove bits/semaphore.h.
1787
1788         * semaphore.h: Define _pthread_descr if necessary.
1789         Don't include limits.h.  Define SEM_VALUE_MAX directly.
1790         Define SEM_FAILED.
1791         (sem_t): Protect element names with leading __.
1792         Add declarations for sem_close, sem_open, and sem_unlink.
1793         * semaphore.c: Adjust all functions for new element names.
1794         Define sem_close, sem_open, and sem_unlink.
1795         * Versions (libthread): Add sem_close, sem_open, and sem_unlink for
1796         GLIBC_2.1.1.
1797         * sysdeps/pthread/bits/pthreadtypes.h: Define _pthread_descr only if
1798         necessary.
1799
1800 1999-03-16  H.J. Lu  <hjl@gnu.org>
1801
1802         * specific.c (pthread_key_delete): Check th->p_terminated to see
1803         if the thread is running.
1804
1805         * Versions (__libc_internal_tsd_get, __libc_internal_tsd_set):
1806         Added to GLIBC_2.0 for libc.so.
1807
1808 1999-02-12  H.J. Lu  <hjl@gnu.org>
1809
1810         * Versions (__libc_current_sigrtmin, __libc_current_sigrtmax,
1811         __libc_allocate_rtsig): Added to GLIBC_2.1.
1812
1813         * internals.h (DEFAULT_SIG_RESTART): Removed.
1814         (DEFAULT_SIG_CANCEL): Removed.
1815
1816         * pthread.c (init_rtsigs, __libc_current_sigrtmin,
1817         __libc_current_sigrtmax, __libc_allocate_rtsig): New functions.
1818         (__pthread_sig_restart, __pthread_sig_cancel,
1819         __pthread_sig_debug): Initialized.
1820         (pthread_initialize): Call init_rtsigs () to initialize
1821         real-time signals.
1822
1823 1999-02-03  H.J. Lu  <hjl@gnu.org>
1824
1825         * manager.c (__pthread_manager): Do block __pthread_sig_debug.
1826         Don't restart the thread which sent REQ_DEBUG.
1827         (pthread_start_thread): Check if __pthread_sig_debug > 0
1828         before debugging.
1829
1830         * pthread.c (__pthread_initialize_manager): Suspend ourself
1831         after sending __pthread_sig_debug to gdb instead of
1832         __pthread_sig_cancel.
1833
1834 1999-01-24  H.J. Lu  <hjl@gnu.org>
1835
1836         * manager.c (__pthread_manager): Delete __pthread_sig_debug
1837         from mask if __pthread_sig_debug > 0.
1838         (pthread_handle_create): Increment __pthread_handles_num.
1839
1840         * manager.c (pthread_handle_create): Don't pass CLONE_PTRACE to clone.
1841         * pthread.c (__pthread_initialize_manager): Likewise.
1842
1843         * pthread.c (pthread_initialize): Use __libc_allocate_rtsig (1)
1844         instead of __libc_allocate_rtsig (2).
1845         (__pthread_initialize_manager): Send __pthread_sig_debug to gdb
1846         instead of __pthread_sig_cancel.
1847         (pthread_handle_sigdebug): Fix comments.
1848
1849 1999-01-21  Ulrich Drepper  <drepper@cygnus.com>
1850
1851         * manager.c (pthread_allocate_stack): Set
1852         __pthread_nonstandard_stacks if user-specified stack is used.
1853
1854 1999-01-16  Ulrich Drepper  <drepper@cygnus.com>
1855
1856         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Add _LFS_ASYNCHRONOUS_IO,
1857         _LFS_LARGEFILE, _LFS64_LARGEFILE, and _LFS64_STDIO from Unix98.
1858
1859 1999-01-07  Xavier Leroy  <Xavier.Leroy@inria.fr>
1860
1861         * pthread.c: Use a third signal __pthread_sig_debug distinct
1862         from __pthread_sig_cancel to notify gdb when a thread is
1863         created
1864         * manager.c: Likewise.
1865         * internals.h: Likewise.
1866         * signals.c: The implementation of sigwait(s) assumed that
1867         all signals in s have signal handlers already attached.
1868         This is not required by the standard, so make it work
1869         also if some of the signals have no handlers.
1870
1871 1999-01-05  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
1872
1873         * linuxthreads.texi: Remove pointers from first @node.  Move old
1874         @node spec inside comment.
1875
1876 1998-12-31  Ulrich Drepper  <drepper@cygnus.com>
1877
1878         * sysdeps/pthread/bits/stdio-lock.h: Define _IO_lock_lock and
1879         _IO_lock_unlock.
1880
1881 1998-12-29  Ulrich Drepper  <drepper@cygnus.com>
1882
1883         * semaphore.c (sem_trywait): Don't forget to unlock the semaphore
1884         lock.  Patch by Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>.
1885
1886 1998-12-21  Ulrich Drepper  <drepper@cygnus.com>
1887
1888         * manager.c: Threads now send __pthread_sig_cancel on termination.
1889         Change clone call and signal masks.
1890         * thread.c (pthread_handle_sigrestart): Remove special code for
1891         manager.
1892         (pthread_handle_sigcancel): In manager thread call
1893         __pthread_manager_sighandler.
1894         * sysdeps/i386/pt-machine.h (__compare_and_swap): Add memory clobber.
1895         * sysdeps/i386/i686/pt-machine.h: Likewise.
1896         Patches by Xavier Leroy.
1897
1898 1998-12-14  Ulrich Drepper  <drepper@cygnus.com>
1899
1900         * spinlock.c (__pthread_unlock): Don't crash if called for an
1901         untaken mutex.  Reported by Ruslan V. Brushkoff <rus@Snif.Te.Net.UA>.
1902
1903         * Examples/ex6.c: Unbuffer stdout and reduce sleep time to reduce
1904         overall runtime.
1905
1906 1998-12-13  Ulrich Drepper  <drepper@cygnus.com>
1907
1908         * Examples/ex3.c: Wait until all threads are started before
1909         searching for the number to avoid race condition on very fast
1910         systems.
1911
1912 1998-12-08  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
1913
1914         * sysdeps/pthread/pthread.h: Remove __pthread_setcanceltype
1915         declaration since it's not needed.
1916
1917         * sysdeps/pthread/pthread.h: Move internal functions to ...
1918         * internals.h: ...here.
1919
1920 1998-12-02  H.J. Lu  <hjl@gnu.org>
1921
1922         * pthread.c (__pthread_sig_restart): Initiliaze to 0 if
1923         SIGRTMIN is defined.
1924         (__pthread_sig_cancel): Likewise.
1925
1926 1998-12-01  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
1927
1928         * wrapsyscall.c: Include <sys/mman.h> for msync,
1929         <stdlib.h> for system and <termios.h> for tcdrain prototype.
1930         Correct msync declaration.
1931
1932 1998-11-29  Roland McGrath  <roland@baalperazim.frob.com>
1933
1934         * sysdeps/pthread/bits/libc-tsd.h (__libc_tsd_define, __libc_tsd_get,
1935         __libc_tsd_set): New macros for new interface.
1936         * no-tsd.c: New file, provide uninitialized defns of
1937         __libc_internal_tsd_get and __libc_internal_tsd_set.
1938         * Makefile (routines): Add no-tsd.
1939
1940 1998-10-12  Roland McGrath  <roland@baalperazim.frob.com>
1941
1942         * internals.h: Include <bits/libc-tsd.h>, not <bits/libc-lock.h>.
1943         * sysdeps/pthread/bits/libc-lock.h (__libc_internal_tsd_get,
1944         __libc_internal_tsd_set): Move decls to ...
1945         * sysdeps/pthread/bits/libc-tsd.h: New file for __libc_internal_tsd_*
1946         declarations.
1947
1948         * sysdeps/pthread/bits/libc-lock.h (__libc_internal_tsd_get,
1949         __libc_internal_tsd_set): Make these pointers to functions, not
1950         functions; remove #pragma weak decls for them.
1951         * specific.c (__libc_internal_tsd_get, __libc_internal_tsd_set):
1952         Define static functions and initialized pointers to them.
1953
1954 1998-11-18  Ulrich Drepper  <drepper@cygnus.com>
1955
1956         * Makefile (CFLAGS-mutex.c): Define as -D__NO_WEAK_PTHREAD_ALIASES.
1957         (CFLAGS-specific.c): Likewise.
1958         (CFLAGS-pthread.c): Likewise.
1959         (CFLAGS-ptfork.c): Likewise.
1960         (CFLAGS-cancel.c): Likewise.
1961         * sysdeps/pthread/bits/libc-lock.h: Don't mark __pthread_* functions
1962         as weak references if __NO_WEAK_PTHREAD_ALIASES is defined.
1963
1964         * mutex.c (pthread_mutex_init): Define as strong symbol.
1965         (pthread_mutex_destroy): Likewise.
1966         (pthread_mutex_trylock): Likewise.
1967         (pthread_mutex_lock): Likewise.
1968         (pthread_mutex_unlock): Likewise.
1969         (pthread_mutexattr_init): Likewise.
1970         (pthread_mutexattr_destroy): Likewise.
1971         (pthread_once): Likewise.
1972         * ptfork.c (pthread_atfork): Likewise.
1973         * specific.c (pthread_key_create): Likewise.
1974         (pthread_setspecific): Likewise.
1975         (pthread_getspecific): Likewise.
1976
1977 1998-11-15  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>
1978
1979         * linuxthreads.texi: Fix punctuation after xref.
1980
1981 1998-11-10  H.J. Lu  <hjl@gnu.org>
1982
1983         * sysdeps/unix/sysv/linux/bits/local_lim.h: Undefine NR_OPEN
1984         if it is defined in <linux/limits.h>.
1985
1986 1998-10-29 14:28  Ulrich Drepper  <drepper@cygnus.com>
1987
1988         * spinlock.h (__pthread_trylock): Define inline.
1989         (__pthread_lock): Add extra parameter to declaration.  Declare
1990         using internal_function.
1991         (__pthread_unlock): Declare using internal_function.
1992         * spinlock.c (__pthread_lock): Add new parameter.  Use it instead
1993         of local variable self.  Avoid recomputing self.  Define using
1994         internal_function.
1995         (__pthread_trylock): Remove.
1996         (__pthread_unlock): Define using internal_function.
1997         * cancel.c: Adjust for __pthread_lock interface change.  Use already
1998         computed self value is possible.
1999         * condvar.c: Likewise.
2000         * join.c: Likewise.
2001         * manager.c: Likewise.
2002         * mutex.c: Likewise.
2003         * pthread.c: Likewise.
2004         * rwlock.c: Likewise.
2005         * semaphore.c: Likewise.
2006         * signals.c: Likewise.
2007
2008 1998-10-27 13:46  Ulrich Drepper  <drepper@cygnus.com>
2009
2010         * sysdeps/pthread/pthread.h (struct _pthread_cleanup_buffer): Prepend
2011         __ to field names of the struct.
2012         * sysdeps/pthread/bits/pthreadtypes.h (struct _pthread_fastlock):
2013         Likewise.
2014         (pthread_attr_t): Likewise.
2015         (pthread_cond_t): Likewise.
2016         (pthread_condattr_t): Likewise.
2017         (pthread_mutex_t): Likewise.
2018         (pthread_mutexattr_t): Likewise.
2019         (pthread_rwlock_t): Likewise.
2020         (pthread_rwlockattr_t): Likewise.
2021         * attr.c: Adjust for pthread.h and pthreadtypes.h change.
2022         * cancel.c: Likewise.
2023         * condvar.c: Likewise.
2024         * manager.c: Likewise.
2025         * mutex.c: Likewise.
2026         * pthread.c: Likewise.
2027         * ptlongjmp.c: Likewise.
2028         * rwlock.c: Likewise.
2029         * spinlock.c: Likewise.
2030
2031 1998-10-09  Ulrich Drepper  <drepper@cygnus.com>
2032
2033         * sysdeps/i386/pt-machine.h (get_eflags, set_eflags): Mark these
2034         also with PT_EI.
2035
2036         * sysdeps/i386/i686/pt-machine.h: Remove unused inline
2037         definitions.
2038
2039         * Makefile (libpthread-routines): Add pt-machine.
2040         * pt-machine.c: New file.
2041         * sysdeps/alpha/pt-machine.h: Define PT_EI as extern inline is not
2042         yet defined.  Use PT_EI in extern inline definitions.
2043         * sysdeps/arm/pt-machine.h: Likewise.
2044         * sysdeps/i386/pt-machine.h: Likewise.
2045         * sysdeps/i386/i686/pt-machine.h: Likewise.
2046         * sysdeps/m68k/pt-machine.h: Likewise.
2047         * sysdeps/mips/pt-machine.h: Likewise.
2048         * sysdeps/powerpc/pt-machine.h: Likewise.
2049         * sysdeps/sparc/sparc32/pt-machine.h: Likewise.
2050         * sysdeps/sparc/sparc64/pt-machine.h: Likewise.
2051
2052 1998-10-02  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
2053
2054         * semaphore.h: Include <sys/types.h> so that _pthread_descr
2055         is declared.
2056
2057 1998-09-15  David S. Miller  <davem@pierdol.cobaltmicro.com>
2058
2059         * sysdeps/sparc/sparc32/pt-machine.h (INIT_THREAD_SELF): Add nr
2060         argument.
2061         * sysdeps/sparc/sparc64/pt-machine.h (INIT_THREAD_SELF): Likewise.
2062
2063 1998-09-12 14:24 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>
2064
2065         * sysdeps/unix/sysv/linux/bits/sigthread.h: Add multiple inclusion
2066         guard.
2067
2068 1998-09-02 11:08  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2069
2070         * signals.c (sigaction): Check that sig is less than NSIG to avoid
2071         array index overflow.
2072
2073 1998-09-06 10:56  Ulrich Drepper  <drepper@cygnus.com>
2074
2075         * sysdeps/pthread/semaphore.h: New file.
2076
2077 1998-09-06 09:08  Ulrich Drepper  <drepper@cygnus.com>
2078
2079         * sysdeps/pthread/bits/libc-lock.h (enum __libc_tsd_key_t): Add
2080         _LIBC_TSD_KEY_DL_ERROR.
2081
2082 1998-08-31  Ulrich Drepper  <drepper@cygnus.com>
2083
2084         * sysdeps/i386/i686/pt-machine.h (testandset): Add memory clobber.
2085         * sysdeps/i386/pt-machine.h: Likewise.
2086         Suggested by Roland McGrath.
2087
2088 1998-08-28 13:58  Ulrich Drepper  <drepper@cygnus.com>
2089
2090         * internals.h: Also define THREAD_GETMEM_NC and THREAD_SETMEM_NC to
2091         access thread data with non-constant offsets.
2092         * specific.c: Use THREAD_GETMEM_NC and THREAD_SETMEM_NC where
2093         necessary.
2094
2095         * sysdeps/i386/useldt.h: Fix typo.  Add THREAD_GETMEM_NC and
2096         THREAD_SETMEM_NC definitions.
2097
2098         * sysdeps/sparc/sparc32/pt-machine.h: Define THREAD_GETMEM_NC and
2099         THREAD_SETMEM_NC.
2100         * sysdeps/sparc/sparc64/pt-machine.h: Likewise.
2101
2102 1998-08-26 15:46  Ulrich Drepper  <drepper@cygnus.com>
2103
2104         * internals.h: Define THREAD_GETMEM and THREAD_SETMEM to default if
2105         not already defined.
2106         (struct _pthread_descr_struct): Add p_self and p_nr field.
2107         * manager.c (__pthread_handles): Define second element to point
2108         to manager thread.
2109         (__pthread_handles_num): Initialize to 2.
2110         (__pthread_manager): Use INIT_THREAD_SELF with two arguments.
2111         (pthread_start_thread): Likewise.
2112         (pthread_handle_create): Start search for free slot at entry 2.
2113         Initialize new fields p_self and p_nr.
2114         Call __clone with CLONE_PTRACE if available.
2115         (pthread_free): Call FREE_THREAD_SELF if available.
2116         * pthread.c (__pthread_initial_thread): Initialize new fields.
2117         (__pthread_manager_thread): Likewise.
2118         (__pthread_initialize_manager): Call __clone with CLONE_PTRACE.
2119
2120         * cancel.c: Use THREAD_GETMEM and THREAD_SETMEM to access the
2121         elements of the thread descriptor.
2122         * condvar.c: Likewise.
2123         * errno.c: Likewise.
2124         * join.c: Likewise.
2125         * manager.c: Likewise.
2126         * pthread.c: Likewise.
2127         * ptlongjmp.c: Likewise.
2128         * semaphore.c: Likewise.
2129         * signals.c: Likewise.
2130         * specific.c: Likewise.
2131         * spinlock.c: Likewise.
2132
2133         * sysdeps/alpha/pt-machine.h (INIT_THREAD_SELF): Add extra parameter.
2134
2135         * sysdeps/i386/useldt.h: New file.
2136         * sysdeps/i386/i686/pt-machine.h: Show how to use this file.
2137
2138         * sysdeps/sparc/sparc32/pt-machine.h: Define THREAD_GETMEM and
2139         THREAD_SETMEM using __thread_self.
2140         * sysdeps/sparc/sparc64/pt-machine.h: Likewise.
2141
2142 1998-08-24  Geoff Keating  <geoffk@ozemail.com.au>
2143
2144         * spinlock.c (__pthread_lock): Reset p_nextwaiting to NULL if it
2145         turned out that we didn't need to queue after all.
2146
2147 1998-08-22  Geoff Keating  <geoffk@ozemail.com.au>
2148
2149         * sysdeps/powerpc/pt-machine.h: Remove testandset, it's not used
2150         and wastes space; correct types.
2151
2152 1998-08-08 11:18  H.J. Lu  <hjl@gnu.org>
2153
2154         * signals.c (sigaction): Handle NULL argument.
2155
2156 1998-08-04  Ulrich Drepper  <drepper@cygnus.com>
2157
2158         * sysdeps/unix/sysv/linux/bits/sigthread.h: Use __sigset_t instead
2159         of sigset_t.
2160
2161 1998-08-02  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2162
2163         * Makefile (linuxthreads-version): Extract correct number from
2164         Banner.
2165
2166 1998-07-29  Xavier Leroy  <Xavier.Leroy@inria.fr>
2167
2168         * Banner: Bump version number to 0.8
2169         * FAQ.html: Many updates, in particular w.r.t. debugging.
2170         * manager.c: Support for non-default stacksize for
2171         LinuxThreads-allocated stacks;
2172         don't use guard pages for stacks with default size, rely on
2173         rlimit(RLIMIT_STACK) instead (it's cheaper).
2174         * attr.c: Likewise.
2175         * cancel.c: Use __pthread_sig_cancel and __pthread_sig_restart
2176         everywhere instead of PTHREAD_SIG_CANCEL and PTHREAD_SIG_RESTART.
2177         * condvar.c: Likewise.
2178         * internals.h: Likewise.
2179         * restart.h: Likewise.
2180         * signals.c: Likewise.
2181         * pthread.c: Likewise; set rlimit(RLIMIT_STACK) as we need it.
2182
2183 1998-07-23  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2184
2185         * weaks.c: Define pthread_mutexattr_[sg]ettype instead of
2186         __pthread_mutexattr_[sg]ettype.  Add more weak aliases.
2187         * Versions: Put __pthread_mutexattr_settype under version
2188         GLIBC_2.0.  Don't export __pthread_mutexattr_setkind_np and
2189         __pthread_mutexattr_gettype.
2190
2191 1998-07-23  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2192
2193         * sysdeps/pthread/bits/libc-lock.h: Make
2194         __pthread_mutexattr_settype weak.  Don't make
2195         __pthread_mutexattr_setkind_np weak.
2196
2197 1998-07-16 10:52  Ulrich Drepper  <drepper@cygnus.com>
2198
2199         * manager.c (pthread_handle_create): Check whether sched_setscheduler
2200         call can succeed here.
2201
2202         * mutex.c: Define __pthread_mutexattr_settype and make
2203         __pthread_mutexattr_setkind_np an alias.
2204         Likewise for __pthread_mutexattr_gettype.
2205
2206 1998-07-15 11:00 -0400  Zack Weinberg  <zack@rabi.phys.columbia.edu>
2207
2208         * attr.c (pthread_attr_setschedpolicy): Don't check whether caller
2209         is root.
2210
2211 1998-07-14 19:38  Ulrich Drepper  <drepper@cygnus.com>
2212
2213         * sysdeps/pthread/bits/libc-lock.h: Define __libc_cleanup_end.
2214
2215 1998-07-11  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
2216
2217         * Examples/ex6.c: Include <unistd.h> for usleep.
2218
2219 1998-06-13 11:04  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2220
2221         * Examples/ex4.c (main): Use exit, not pthread_exit.
2222
2223 1998-07-09 13:39  Ulrich Drepper  <drepper@cygnus.com>
2224
2225         * Versions: Add __pthread_mutexattr_gettype and
2226         __pthread_mutexattr_settype.
2227         * lockfile.c: Use __pthread_mutexattr_settype instead of
2228         __pthread_mutexattr_setkind_np.
2229         * mutex.c: Define __pthread_mutexattr_gettype and
2230         __pthread_mutexattr_settype.
2231         * weak.c: Likewise.
2232         * sysdeps/pthread/pthread.h: Declare __pthread_mutexattr_gettype and
2233         __pthread_mutexattr_settype.
2234         * sysdeps/pthread/bits/libc-lock.h (__libc_lock_init_recursive):
2235         Use __pthread_mutexattr_settype.
2236
2237 1998-07-08 22:26  Ulrich Drepper  <drepper@cygnus.com>
2238
2239         * Versions: Add pthread_mutexattr_gettype, pthread_mutexattr_settype.
2240         * mutex.c: Define weak alias pthread_mutexattr_gettype and
2241         pthread_mutexattr_settype.
2242         * sysdeps/pthread/pthread.h: Declare these functions.
2243         Move pthread_sigmask and pthread_kill declaration in separate header.
2244         * sysdeps/unix/sysv/linux/bits/sigthread.h: New file.
2245
2246 1998-07-07 15:20  Ulrich Drepper  <drepper@cygnus.com>
2247
2248         * Makefile: Add rules to compile and run tests.
2249         * Examples/ex1.c: Little changes to fix warnings.
2250         * Examples/ex2.c: Likewise.
2251         * Examples/ex3.c: Likewise.
2252         * Examples/ex4.c: Likewise.
2253         * Examples/ex5.c: Likewise.
2254         * Examples/ex6.c: New file.
2255
2256 1998-07-05 11:54  Ulrich Drepper  <drepper@cygnus.com>
2257
2258         * Versions: Add pthread_attr_init to GLIBC_2.1 version in libc.
2259
2260 1998-07-01  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
2261
2262         * attr.c: Include <string.h>.
2263
2264 1998-06-30 11:47  Ulrich Drepper  <drepper@cygnus.com>
2265
2266         * attr.c: Include errno.h.  Use memcpy to copy sched_param.
2267         * internals.h: Include limits.h.
2268         * manager.c: Use memcpy to copy sched_param.
2269         * ptfork.c: Include errno.h.
2270         * pthread.c: Likewise.
2271         * semaphore.c: Likewise.
2272         * specific.c: Likewise.
2273         * spinlock.h: Likewise.
2274         * sysdeps/pthread/pthread.h: Include only allowed headers.  Move
2275         type definition to ...
2276         * sysdeps/pthread/bits/pthreadtypes.h: ...here.  New file.
2277
2278 1998-06-29 12:34  Ulrich Drepper  <drepper@cygnus.com>
2279
2280         * sysdeps/pthread/pthread.h: Use __PMT not __P for function pointers.
2281
2282         * sysdeps/pthread/pthread.h: Define various PTHREAD_* symbols also
2283         as macros as demanded in POSIX.1, Annex C.
2284
2285 1998-06-29 12:29  Ulrich Drepper  <drepper@cygnus.com>
2286
2287         * internals.h (struct pthread_request): For free use pthread_t
2288         instead of pthread_descr.
2289         * join.c (pthread_join): Pass thread_id, not th to manager.
2290         (pthread_detach): Likewise.
2291         * manager.c (__pthread_manager): Except thread ID in FREE_REQ case.
2292         (pthread_exited): Remove detached queue code.
2293         (pthread_handle_free): Expect thread ID parameter and use it to
2294         validate the thread decsriptor.  Don't use detached queue.
2295         Patches by Xavier Leroy.
2296
2297 1998-06-27  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2298
2299         * libpthread.map: Export accept, longjmp, sigaction, siglongjmp,
2300         _IO_flockfile, _IO_ftrylockfile, _IO_funlockfile,
2301         __pthread_atfork, __pthread_key_create, __pthread_once.
2302         * internals.h: Doc fix.
2303         * pthread.c (__pthread_initialize): Define again.
2304
2305 1998-06-26  Ulrich Drepper  <drepper@cygnus.com>
2306
2307         * manager.c (pthread_exited): If thread is not detached put it on
2308         special list.
2309         (pthread_handle_free): If thread is not on list with living threads
2310         search on list with detached threads.
2311
2312         * sysdeps/pthread/pthread.h (PTHREAD_RWLOCK_INITIALIZER): Correct
2313         for new definition of pthread_rwlock_t.
2314
2315         * spinlock.c: Correct test whether to compile
2316         __pthread_compare_and_swap or not.
2317
2318 1998-06-25 19:27  Ulrich Drepper  <drepper@cygnus.com>
2319
2320         * attr.c: Finish user stack support.  Change locking code to be safe
2321         in situations with different priorities.
2322         * cancel.c: Likewise.
2323         * condvar.c: Likewise.
2324         * internals.h: Likewise.
2325         * join.c: Likewise.
2326         * manager.c: Likewise.
2327         * mutex.c: Likewise.
2328         * pthread.c: Likewise.
2329         * ptlongjmp.c: Likewise.
2330         * queue.h: Likewise.
2331         * rwlock.c: Likewise.
2332         * semaphore.c: Likewise.
2333         * semaphore.h: Likewise.
2334         * signals.c: Likewise.
2335         * spinlock.c: Likewise.
2336         * spinlock.h: Likewise.
2337         * sysdeps/pthread/pthread.h: Likewise.
2338         Patches by Xavier Leroy.
2339
2340         * sysdeps/i386/i686/pt-machine.h: New file.
2341
2342 1998-06-25  Ulrich Drepper  <drepper@cygnus.com>
2343
2344         * sysdeps/pthread/pthread.h: Make [sg]et_stacksize and
2345         [sg]et_stackaddr prototypes always available.
2346
2347         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
2348         _POSIX_THREAD_ATTR_STACKSIZE and _POSIX_THREAD_ATTR_STACKADDR.
2349
2350 1998-06-24  Ulrich Drepper  <drepper@cygnus.com>
2351
2352         * manager.c (pthread_free): Undo patch from 980430.
2353         Reported by David Wragg <dpw@doc.ic.ac.uk>.
2354
2355 1998-06-09 15:07  Ulrich Drepper  <drepper@cygnus.com>
2356
2357         * manager.c: Define __pthread_manager_adjust_prio and use it to
2358         increase priority when needed.
2359         * internals.h: Add prototype for __pthread_manager_adjust_prio.
2360         * mutex.c: Optimize mutexes to wake up only one thread.
2361         * pthread.c: Move PID of manager for global variable in structure
2362         element.
2363         Patches by Xavier Leroy.
2364
2365 1998-06-07 13:47  Ulrich Drepper  <drepper@cygnus.com>
2366
2367         * sysdeps/pthread/bits/libc-lock.h: Optimize cleanup handlers a bit.
2368
2369 1998-06-03  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
2370
2371         * attr.c: Correct typo.
2372
2373 1998-05-01  Ulrich Drepper  <drepper@cygnus.com>
2374
2375         * manager.c (pthread_free): Unmap guard before the stack.
2376         Patch by Matthias Urlichs.
2377
2378 1998-04-30  Ulrich Drepper  <drepper@cygnus.com>
2379
2380         * manager.c (pthread_free): Detect already free child.
2381         Patch by Xavier Leroy, reported by Matthias Urlichs.
2382
2383 1998-04-23  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2384
2385         * Makefile (linuxthreads-version): Renamed back from
2386         libpthread-version.
2387
2388 1998-04-21  Ulrich Drepper  <drepper@cygnus.com>
2389
2390         * ptlongjmp.c: Add prototypes for __libc_siglongjmp and
2391         __libc_longjmp.
2392
2393 1998-04-20 14:55  Ulrich Drepper  <drepper@cygnus.com>
2394
2395         * Makefile (libpthread-routines): Add ptlongjmp and spinlock.
2396         * internals.h: Add definitions for new spinlock implementation.
2397         * ptlongjmp.c: New file.
2398         * spinlock.c: New file.
2399         * spinlock.h (acquire): Don't reschedule using __sched_yield, use
2400         new function __pthread_acquire to prevent deadlocks with thread
2401         with different priorities.
2402         Patches by Xavier Leroy <Xavier.Leroy@inria.fr>.
2403
2404 1998-03-16  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2405
2406         * manager.c (__pthread_manager): Reduce first argument to select
2407         to include just the needed file descriptor.
2408
2409 1998-03-17 00:06  Ulrich Drepper  <drepper@cygnus.com>
2410
2411         * manager.c: Fix last patch which caused core dumps.
2412
2413         * pthread.c: Correctly handle missing SIGRTMIN.
2414
2415 1998-03-15  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2416
2417         * libpthread.map: Add __libc_internal_tsd_get and
2418         __libc_internal_tsd_set.  Add missing cancelable functions. Export
2419         libc internal versions of the cancelable functions.
2420
2421 1998-03-13 16:51  Ulrich Drepper  <drepper@cygnus.com>
2422
2423         * weaks.c: Define pthread_attr_init as GLIBC_2.0 and GLIBC_2.1.
2424
2425 1998-03-13 00:46  Ulrich Drepper  <drepper@cygnus.com>
2426
2427         * attr.c: Implement pthread_attr_[gs]etguardsize,
2428         pthread_attr_[gs]setstackaddr, pthread_attr_[gs]etstacksize.
2429         Change pthread_attr_init to have two interfaces.
2430         * internals.h (struct _pthread_descr_struct): Add new fields for
2431         above functions.
2432         * libpthread.map: Add names in GLIBC_2.1 section.
2433         * manager.c (pthread_handle_create): Implement guardsize and
2434         user stack.
2435         (pthread_free): Likewise.
2436         * pthread.c (pthread_create): Add new interface for changed
2437         pthread_attr_t.
2438         * sysdeps/pthread/pthread.h: Add prototypes for new functions.
2439         * sysdeps/unix/sysv/linux/bits/local_lim.h: Add definition of
2440         PTHREAD_STACK_MIN.
2441
2442 1998-03-11 00:42  Wolfram Gloger  <wmglo@dent.med.uni-muenchen.de>
2443
2444         * manager.c: Enable resetting of the thread scheduling policy
2445         to SCHED_OTHER when the parent thread has a different one.
2446
2447 1998-02-01 13:51  Ulrich Drepper  <drepper@cygnus.com>
2448
2449         * sysdeps/unix/sysv/linux/bits/posix_opt.h: Define
2450         _POSIX_ASYNCHRONOUS_IO.
2451
2452         * sysdeps/pthread/pthread.h: Define bits for Unix98 variants of
2453         mutexes.
2454         * mutex.c: Implement new mutex types.
2455
2456         * internals.h: Include <signal.h>.
2457
2458         * libpthread.map: Add __erno_location and __h_errno_location.
2459
2460         * errno.c: Return pointer to variable actually in use.  This might
2461         not be the one in the thread structure.
2462         * internals.h (struct _pthread_descr_struct): Add new fields p_errnop
2463         and p_h_errnop.
2464         * manager.c (__pthread_manager): Set p_errnop and p_h_errnop member
2465         of manager thread structure.
2466         (pthread_handle_create): Set p_errnop and p_h_errnop members for new
2467         thread.
2468         * pthread.c: Adapt initializer for thread structures.
2469         (__pthread_initial_thread): Set p_errnop and p_h_errnop member.
2470         (__pthread_reset_main_thread): Reset p_errnop and p_h_errnop of
2471         current thread to global variables.
2472
2473 1998-01-31 17:27  Ulrich Drepper  <drepper@cygnus.com>
2474
2475         * rwlock.c: New file.
2476         * Makefile (libpthread-routines): Add rwlock.
2477         * sysdeps/pthread/pthread.h: Define data structures and declare
2478         functions.
2479         * libpthread.map: Add new functions.
2480
2481 1997-12-18 13:50  Philip Blundell  <pb@nexus.co.uk>
2482
2483         * sysdeps/arm/pt-machine.h: New file; add ARM support.
2484         * sysdeps/arm/Implies: likewise.
2485         * README: Document it.
2486
2487 1997-12-13  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2488
2489         * signals.c: Remove unneeded initializer for sigwaited, saving a
2490         warning.
2491
2492 1997-04-11 01:18  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2493
2494         * semaphore.c (sem_init): Set sem_spinlock only if available.
2495
2496 1997-12-04 01:48  Ulrich Drepper  <drepper@cygnus.com>
2497
2498         * mutex.c: Implement PTHREAD_MUTEX_CHECKERROR.
2499         * sysdeps/pthread/pthread.h: Define PTHREAD_MUTEX_CHECKERROR.
2500
2501         * Makefile: Update from LinuxThreads 0.7.
2502         * internals.h. Likewise.
2503         * manager.c: Likewise.
2504         * mutex.c: Likewise.
2505         * pthread.c: Likewise.
2506         * signals.c: Likewise.
2507         * specific.c: Likewise.
2508         * Examples/ex3.c: Likewise.
2509
2510 1997-11-20 18:13  Ulrich Drepper  <drepper@cygnus.com>
2511
2512         * pthread.c (__pthread_reset_main_thread): Close pipe only if still
2513         open.
2514
2515 1997-10-29 05:38  Ulrich Drepper  <drepper@cygnus.com>
2516
2517         * wrapsyscall.c: Add socket functions which are also cancelation
2518         points.
2519
2520 1997-10-19 21:40  Wolfram Gloger  <wg@wolfram.dent.med.uni-muenchen.de>
2521
2522         * specific.c (__libc_internal_tsd_set, __libc_internal_tsd_get):
2523         New functions for fast thread specific data within libc.
2524
2525         * internals.h: Add new array p_libc_specific to struct
2526         _pthread_descr_struct.
2527
2528         * sysdeps/pthread/bits/libc-lock.h: Declare new functions.
2529
2530 1997-10-13 05:39  Ulrich Drepper  <drepper@cygnus.com>
2531
2532         * semaphore.h: Add __BEGIN_DECLS/__END_DECLS.
2533         Reported by Ralf Corsepius <corsepiu@faw.uni-ulm.de>.
2534
2535 1997-08-29 03:05  Ulrich Drepper  <drepper@cygnus.com>
2536
2537         * internals.h (struct _pthread_descr_struct): Add definitions for
2538         two-level specific key handling.
2539         * manager.c (pthread_handle_create): Initialize specific memory array.
2540         * specific.c: Implement two-level key handling.
2541         * weaks.c: Don't provide dummy key handling.
2542         * sysdeps/pthread/bits/libc-lock.h: Typedef __libc_lock_t (no #define).
2543         Add definition of __libc_key_t.
2544         * sysdeps/unix/sysv/linux/bits/local_lim.h: Define PTHREAD_KEYS_MAX
2545         as 1024.
2546         Add definition of _POSIX_THREAD_DESTRUCTOR_ITERATIONS and
2547         PTHREAD_DESTRUCTOR_ITERATIONS.
2548
2549         * manager.c (pthread_handle_create): Compare mmap result with
2550         MAP_FAILED.
2551
2552         * ptfork.c: Rename to __pthread_atfork and make old name a weak alias.
2553         * sysdeps/pthread/bits/pthread.h: Add prototype for __pthread_atfork.
2554
2555 1997-08-22 19:04  Richard Henderson  <rth@cygnus.com>
2556
2557         sysdeps/sparc -> sysdeps/sparc/sparc32
2558         sysdeps/sparc64 -> sysdeps/sparc/sparc64
2559
2560         * internals.h: Change definition of THREAD_SELF to be an expression,
2561         not a statement that did a return.
2562         * sysdeps/alpha/pt-machine.h (THREAD_SELF): Update accordingly.
2563         * sysdeps/sparc/sparc32/pt-machine.h (THREAD_SELF, INIT_THREAD_SELF):
2564         Follow Solaris and use a "system reserved" register (%g6) to hold
2565         the thread descriptor.
2566         * sysdeps/sparc/sparc64/pt-machine.h: Likewise.
2567
2568 1997-08-03 00:09  Ulrich Drepper  <drepper@cygnus.com>
2569
2570         * mutex.c: Correct pthread_once.  Patch by Xavier Leroy.
2571         * sysdeps/pthread/pthread.h: Add prototype for __pthread_once.
2572         * sysdeps/pthread/bits/pthread.h: Add macros for __libc_once.
2573
2574         * semaphore.c: Include spinlock.h only when needed.
2575
2576         * specific.c (__pthread_setsepcific, __pthread_getspecific): Reject
2577         keys for entries not in use.
2578
2579         * weaks.c: Implement key handling functions for real.
2580
2581 1997-06-29  01:04  Richard Henderson  <richard@gnu.ai.mit.edu>
2582
2583         Initial sparc64-linux support:
2584         * sysdeps/sparc64/Implies: New file.
2585         * sysdeps/sparc64/pt-machine.h: Likewise.
2586
2587 1997-06-29 00:48  Ulrich Drepper  <drepper@cygnus.com>
2588
2589         * semaphore.c: Include spinlock.h at correct place.
2590         Patch by HJ Lu.
2591
2592 1997-06-13 10:06  Richard Henderson  <rth@tamu.edu>
2593
2594         The Great Bit File Move:
2595         * sysdeps/alpha/semaphorebits.h: -> .../bits/semaphore.h.
2596         * sysdeps/powerpc/semaphorebits.h: Likewise.
2597         * sysdeps/pthread/cmpxchg/semaphorebits.h: Likewise.
2598         * sysdeps/pthread/no-cmpxchg/semaphorebits.h: Likewise.
2599         * sysdeps/pthread/libc-lock.h: -> bits/
2600         * sysdeps/pthread/stdio-lock.h: Likewise.
2601         * sysdeps/unix/sysv/linux/local_lim.h: Likewise.
2602         * sysdeps/unix/sysv/linux/posix_opt.h: Likewise.
2603         * semaphore.h: Likewise.
2604         * sysdeps/pthread/pthread.h: Likewise.
2605
2606         * lockfile.c: <foo.h> -> <bits/foo.h>.
2607         * semaphore.h: Likewise.
2608
2609         * Makefile: (headers): foo.h -> bits/foo.h.
2610         * sysdeps/pthread/Makefile: Likewise.
2611
2612 1997-04-11 01:18  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
2613
2614         * semaphore.c (sem_init): Set sem_spinlock only if available.
2615
2616         * sysdeps/m68k/pt-machine.h (testandset, __compare_and_swap): Fix
2617         asm constraints.
2618
2619 1997-04-09 03:00  Ulrich Drepper  <drepper@cygnus.com>
2620
2621         Update from LinuxThreads 0.6.
2622
2623         * attr.c (pthread_attr_getdetachstate): Use __sched_get_priority_max
2624         and __sched_get_priority_min instead of names without `__'.
2625
2626         * manager.c: Rewrite large parts to implement opaque pthread_t.
2627
2628         * cancel.c: Adapt for opaque pthread_t type.
2629         * condvar.c: Likewise.
2630         * errno.c: Likewise.
2631         * join.c: Likewise.
2632         * mutex.c: Likewise.
2633         * pthread.c: Likewise.
2634         * signals.c: Likewise.
2635         * specific.c: Likewise.
2636         * restart.h: Likewise.
2637         * queue.h: Likewise.
2638         * Examples/ex3.c: Likewise.
2639         * Examples/ex4.c: Likewise.
2640         * sysdeps/pthread/pthread.h: Likewise.
2641
2642         * pthread.c: Accumulate time for all threads in thread manager.
2643
2644         * semaphore.c: Implement fallback implementation for architectures
2645         sometimes missing compare-exchange operations.
2646
2647         * cancel.c (pthread_cancel): Validate handle argument.
2648         * join.c (pthread_join): Likewise.
2649         (pthread_detach): Likewise.
2650         * signals.c (pthread_kill): Likewise.
2651
2652         * spinlock.h (acquire): Use __sched_yield not sched_yield.
2653
2654         * queue.h (enqueue): Enqueue thread according to priority.
2655
2656         * internals.c (struct pthread_start_args): New struct for passing
2657         args to cloning function.
2658         (struct _pthread): Rename to _pthread_descr_struct and adapt for
2659         opaque pthread_t.
2660
2661         * Examples/Makefile (clean): Pass -f option to rm.
2662
2663         * sysdeps/i386/pt-machine.h: Add check for compare-exchange instruction
2664         and define TEST_FOR_COMPARE_AND_SWAP.
2665         * sysdeps/i386/i486/pt-machine.h: Removed.
2666
2667         * sysdeps/unix/sysv/linux/local_lim.h (PTHREAD_THREADS_MAX): Increase
2668         to 1024.
2669
2670 1997-04-04 16:38  Ulrich Drepper  <drepper@cygnus.com>
2671
2672         * restart.h (suspend): Clear p_signal before suspending.
2673         (suspend_with_cancellation): Likewise.
2674         Patch by Xavier Leroy <Xavier.Leroy@inria.fr>.
2675
2676         * weaks.c: Make __pthread_key_create return 1.
2677         * sysdeps/pthread/libc-lock.h: Define __libc_key_create,
2678         __libc_getspecific, __libc_setspecific, and __libc_key_t.
2679         * sysdeps/pthread/stdio-lock.h: Don't care for implementation not
2680         using libio.
2681
2682 1997-03-19 15:13  Miguel de Icaza  <miguel@nuclecu.unam.mx>
2683
2684         * sysdeps/sparc/pt-machine (RELEASE): Fix.
2685
2686 1997-03-01 07:55  Geoff Keating  <geoffk@ozemail.com.au>
2687
2688         * sysdeps/powerpc/Implies: Added.
2689         * sysdeps/powerpc/pt-machine.h: Added.
2690         * sysdeps/powerpc/semaphorebits.h: Added.
2691
2692 1997-01-22 01:22  Ulrich Drepper  <drepper@cygnus.com>
2693
2694         * pthread.c (__pthread_initial_thread): Correct
2695         initializer.
2696         (__pthread_manager_thread): Likewise.
2697         Reported by Andreas Jaeger.
2698
2699 1997-01-18 22:15  Richard Henderson  <rth@tamu.edu>
2700
2701         Since sigset_t no longer fits in a register, we can't pass in the
2702         thread's initial mask so easily.  Take this opportunity to simplify
2703         the clone implementation by only accepting a single void* argument.
2704
2705         * manager.c (__pthread_manager): Put thread vitals in the thread
2706         struct instead of as arguments through clone.
2707         (pthread_start_thread): Look for them there.
2708         * internals.h (struct _pthread): Add p_initial_fn,
2709         p_initial_fn_arg, p_initial_mask.  Fix __pthread_manager proto.
2710         * pthread.c (pthread_initialize_manager): Revise clone invocation.