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