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