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