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