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