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