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