* sysdeps/mach/hurd/i386/intr-msg.h (INTR_MSG_TRAP): Make
_hurd_intr_rpc_msg_about_to global point to start of controlled
assembly snippet. Make it check canceled flag.
* hurd/hurdsig.c (_hurdsig_abort_rpcs): Only mutate thread if it passed
the _hurd_intr_rpc_msg_about_to point.
* hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): Remove comment on mutation
issue, remove cancel flag check.
Seeing a server not able to get interrupted for 3s is not so surprising when
e.g. a lot of writes are happening. 1 minute allows to actually notice the
issue and be able to debug it.
* hurd/hurdsig.c (_hurd_interrupted_rpc_timeout): Set to 60000.
Exec needs that mach_setup_thread does *not* set up TLS since it works on
another task, so we have to split this into mach_setup_tls.
* mach/mach.h (__mach_setup_tls, mach_setup_tls): Add prototypes.
* mach/setup-thread.c (__mach_setup_thread): Move TLS setup to...
(__mach_setup_tls): ... new function.
(mach_setup_tls): New alias.
* hurd/hurdsig.c (_hurdsig_init): Call __mach_setup_tls after
__mach_setup_thread.
* sysdeps/mach/hurd/profil.c (update_waiter): Likewise.
* sysdeps/mach/hurd/setitimer.c (setitimer_locked): Likewise.
* mach/Versions [libc] (mach_setup_tls): Add symbol.
* sysdeps/mach/hurd/i386/libc.abilist (mach_setup_tls): Likewise.
* hurd/Makefile (routines): Add hurdlock.
* hurd/Versions (GLIBC_PRIVATE): Added new entry to export the above
interface.
(HURD_CTHREADS_0.3): Remove __libc_getspecific.
* hurd/hurdpid.c: Include <lowlevellock.h>
(_S_msg_proc_newids): Use lll_wait to synchronize.
* hurd/hurdsig.c: (reauth_proc): Use __mutex_lock and __mutex_unlock.
* hurd/setauth.c: Include <hurdlock.h>, use integer for synchronization.
* mach/Makefile (lock-headers): Remove machine-lock.h.
* mach/lock-intern.h: Include <lowlevellock.h> instead of
<machine-lock.h>.
(__spin_lock_t): New type.
(__SPIN_LOCK_INITIALIZER): New macro.
(__spin_lock, __spin_unlock, __spin_try_lock, __spin_lock_locked,
__mutex_init, __mutex_lock_solid, __mutex_unlock_solid, __mutex_lock,
__mutex_unlock, __mutex_trylock): Use lll to implement locks.
* mach/mutex-init.c: Include <lowlevellock.h> instead of <cthreads.h>.
(__mutex_init): Initialize with lll.
* manual/errno.texi (EOWNERDEAD, ENOTRECOVERABLE): New errno values.
* sysdeps/mach/Makefile: Add libmachuser as dependencies for libs
needing lll.
* sysdeps/mach/hurd/bits/errno.h: Regenerate.
* sysdeps/mach/hurd/cthreads.c (__libc_getspecific): Remove function.
* sysdeps/mach/hurd/bits/libc-lock.h: Remove file.
* sysdeps/mach/hurd/setpgid.c: Include <lowlevellock.h>.
(__setpgid): Use lll for synchronization.
* sysdeps/mach/hurd/setsid.c: Likewise with __setsid.
* sysdeps/mach/bits/libc-lock.h: Include <tls.h> and <lowlevellock.h>
instead of <cthreads.h>.
(_IO_lock_inexpensive): New macro
(__libc_lock_recursive_t, __rtld_lock_recursive_t): New structures.
(__libc_lock_self0): New declaration.
(__libc_lock_owner_self): New macro.
(__libc_key_t): Remove type.
(_LIBC_LOCK_INITIALIZER): New macro.
(__libc_lock_define_initialized, __libc_lock_init, __libc_lock_fini,
__libc_lock_fini_recursive, __rtld_lock_fini_recursive,
__libc_lock_lock, __libc_lock_trylock, __libc_lock_unlock,
__libc_lock_define_initialized_recursive,
__rtld_lock_define_initialized_recursive,
__libc_lock_init_recursive, __libc_lock_trylock_recursive,
__libc_lock_lock_recursive, __libc_lock_unlock_recursive,
__rtld_lock_initialize, __rtld_lock_trylock_recursive,
__rtld_lock_lock_recursive, __rtld_lock_unlock_recursive
__libc_once_define, __libc_mutex_unlock): Reimplement with lll.
(__libc_lock_define_recursive, __rtld_lock_define_recursive,
_LIBC_LOCK_RECURSIVE_INITIALIZER, _RTLD_LOCK_RECURSIVE_INITIALIZER):
New macros.
Include <libc-lockP.h> to reimplement libc_key* with pthread_key*.
* hurd/hurdlock.c: New file.
* hurd/hurdlock.h: New file.
* mach/lowlevellock.h: New file
This gets rid of a lot of kludge and gets closer to other ports.
* hurd/Makefile (headers): Remove threadvar.h.
(inline-headers): Remove threadvar.h.
* hurd/Versions (GLIBC_2.0: Remove __hurd_sigthread_stack_base,
__hurd_sigthread_stack_end, __hurd_sigthread_variables,
__hurd_threadvar_max, __hurd_errno_location.
(HURD_CTHREADS_0.3): Add pthread_getattr_np, pthread_attr_getstack.
* hurd/hurd/signal.h: Do not include <hurd/threadvar.h>.
(_hurd_self_sigstate): Use THREAD_SELF to get _hurd_sigstate.
(_HURD_SIGNAL_H_EXTERN_INLINE): Use THREAD_SELF to get _hurd_sigstate,
unless TLS is not initialized yet, in which case we do not need a
critical section yet anyway.
* hurd/hurd/threadvar.h: Include <tls.h>, do not include
<machine-sp.h>.
(__hurd_sigthread_variables, __hurd_threadvar_max): Remove variables
declarations.
(__hurd_threadvar_index): Remove enum.
(_HURD_THREADVAR_H_EXTERN_INLINE): Remove macro.
(__hurd_threadvar_location_from_sp,__hurd_threadvar_location): Remove
inlines.
(__hurd_reply_port0): New variable declaration.
(__hurd_local_reply_port): New macro.
* hurd/hurdsig.c (__hurd_sigthread_variables): Remove variable.
(interrupted_reply_port_location): Add thread_t parameter. Use it
with THREAD_TCB to access thread-local variables.
(_hurdsig_abort_rpcs): Pass ss->thread to
interrupted_reply_port_location.
(_hurd_internal_post_signal): Likewise.
(_hurdsig_init): Use presence of cthread_fork instead of
__hurd_threadvar_stack_mask to start signal thread by hand.
Remove signal thread threadvar initialization.
* hurd/hurdstartup.c: Do not include <hurd/threadvar.h>
* hurd/sigunwind.c: Include <hurd/threadvar.h>
(_hurdsig_longjmp_from_handler): Use __hurd_local_reply_port instead
of threadvar.
* sysdeps/mach/hurd/Versions (libc.GLIBC_PRIVATE): Add
__libc_lock_self0.
(ld.GLIBC_2.0): Remove __hurd_sigthread_stack_base,
__hurd_sigthread_stack_end, __hurd_sigthread_variables.
(ld.GLIBC_PRIVATE): Add __libc_lock_self0.
* sysdeps/mach/hurd/cthreads.c: Add __libc_lock_self0.
* sysdeps/mach/hurd/dl-sysdep.c (errno, __hurd_sigthread_stack_base,
__hurd_sigthread_stack_end, __hurd_sigthread_variables, threadvars,
__hurd_threadvar_stack_offset, __hurd_threadvar_stack_mask): Do not
define variables.
* sysdeps/mach/hurd/errno-loc.c: Do not include <errno.h> and
<hurd/threadvar.h>.
[IS_IN(rtld)] (rtld_errno): New variable.
[IS_IN(rtld)] (__errno_location): New weak function.
[!IS_IN(rtld)]: Include "../../../csu/errno-loc.c".
* sysdeps/mach/hurd/errno.c: Remove file.
* sysdeps/mach/hurd/fork.c: Include <hurd/threadvar.h>
(__fork): Remove THREADVAR_SPACE macro and its use.
* sysdeps/mach/hurd/i386/init-first.c (__hurd_threadvar_max): Remove
variable.
(init): Do not initialize threadvar.
* sysdeps/mach/hurd/i386/libc.abilist (__hurd_threadvar_max): Remove
symbol.
* sysdeps/mach/hurd/i386/sigreturn.c (__sigreturn): Use
__hurd_local_reply_port instead of threadvar.
* sysdeps/mach/hurd/i386/tls.h (tcbhead_t): Add reply_port and
_hurd_sigstate fields.
(HURD_DESC_TLS, __LIBC_NO_TLS, THREAD_TCB): New macro.
* sysdeps/mach/hurd/i386/trampoline.c: Remove outdated comment.
* sysdeps/mach/hurd/libc-lock.h: Do not include <hurd/threadvar.h>.
(__libc_lock_owner_self): Use &__libc_lock_self0 and THREAD_SELF
instead of threadvar.
* sysdeps/mach/hurd/libc-tsd.h: Remove file.
* sysdeps/mach/hurd/mig-reply.c (GETPORT, reply_port): Remove macros.
(use_threadvar, global_reply_port): Remove variables.
(__hurd_reply_port0): New variable.
(__mig_get_reply_port): Use __hurd_local_reply_port and
__hurd_reply_port0 instead of threadvar.
(__mig_dealloc_reply_port): Likewise.
(__mig_init): Do not initialize threadvar.
* sysdeps/mach/hurd/profil.c: Fix comment.
Add net/ethernet.h net/if_arp.h net/if_ether.h net/if_ppp.h
net/route.h.
* hurd/report-wait.c (describe_number): Use __stpcpy to prepend
flavor to description only when flavor is not NULL.
* hurd/hurdsig.c (signal_allowed): Unlock _hurd_dtable_lock
mutex after SIGIO/SIGURG lookup loop.
ignore a signal that came from a machine exception, treat it as a
fatal core-dump signal instead.
Reported by Samuel Thibault <samuel.thibault@ens-lyon.org>.
Change argument type from int to intptr_t.
* locale/global-locale.c (__libc_tsd_LOCALE_data): Conditionalize the
initializer on [! _HURD_THREADVAR_H] (bad kludge).
* sysdeps/mach/hurd/i386/init-first.c (init): Initialize
_HURD_THREADVAR_LOCALE slot to &_nl_global_locale.
* hurd/hurdsig.c (_hurdsig_init): Likewise. Zero other slots.
Reported by Jon Arney <jarney1@cox.net>.
2002-02-23 Roland McGrath <roland@frob.com>
* hurd/hurd/threadvar.h (__hurd_threadvar_location): Add __THROW to
declaration.
(__hurd_errno_location): Function removed.
* hurd/hurdsig.c (_hurdsig_init): Remove a useless line of code.
2001-07-07 Roland McGrath <roland@frob.com>
* hurd/hurdsig.c (_hurd_thread_sigstate): Use MACH_PORT_NULL, not 0.
2001-07-06 Paul Eggert <eggert@twinsun.com>
* manual/argp.texi: Remove ignored LGPL copyright notice; it's
not appropriate for documentation anyway.
* manual/libc-texinfo.sh: "Library General Public License" ->
"Lesser General Public License".
2001-07-06 Andreas Jaeger <aj@suse.de>
* All files under GPL/LGPL version 2: Place under LGPL version
2.1.
2001-01-24 Mark Kettenis <kettenis@gnu.org>
* hurd/hurdsig.c (_hurdsig_getenv): Remove spurious innermost
declaration of value such that we actually return the value of the
environment variable.
2000-08-22 Mark Kettenis <kettenis@gnu.org>
* hurd/hurdsig.c: Rearrange headers a bit.
(_hurdsig_init): Block until _hurd_msgport_thread is initialized
when cthreads is being used.
* hurd/hurdsig.c (_hurdsig_init): If __hurd_threadvar_stack_mask is
nonzero, use cthread_fork to create the signal thread.
* hurd/msgportdemux.c (_hurd_msgport_receive): Initialize
_hurd_msgport_thread here (to self).
* sysdeps/mach/hurd/fork.c (__fork): When __hurd_sigthread_stack_end
is zero, instead compute child signal thread's starting SP from parent
signal thread's current SP and the threadvar_stack variables.
* hurd/Versions (GLIBC_2.1.3): Add cthread_fork, cthread_detach.
These are now referenced weakly by _hurdsig_init.
* hurd/report-wait.c (_S_msg_report_wait): Fix typo:
&_hurd_itimer_thread not &_hurd_msgport_thread.
1999-10-01 Roland McGrath <roland@baalperazim.frob.com>
* hurd/hurdfchdir.c (_hurd_change_directory_port_from_fd): Rewrite
without HURD_DPORT_USE to clean up warnings.
* hurd/dtable.c (get_dtable_port): Likewise.
* hurd/hurdioctl.c (rectty_dtable): Renamed to install_ctty.
(install_ctty): Do the changing of the cttyid port cell here, inside
the critical section while we holding the dtable lock.
(_hurd_setcttyid, tiocsctty, tiocnotty): Use that instead of changing
the port cell and calling rectty_dtable.
(_hurd_locked_install_cttyid): New function, split out of install_ctty.
(install_ctty): Use it inside a critical section, with the lock held.
* sysdeps/mach/hurd/setsid.c (__setsid): Use
_hurd_locked_install_cttyid to effect the cttyid and dtable changes
after proc_setsid, having held the dtable lock throughout.
* hurd/dtable.c (ctty_new_pgrp): With the dtable lock held, check the
cttyid port for null and bail out early if so. The dtable lock
serializes us after any cttyid change and its associated dtable update.
* sysdeps/mach/_strerror.c: Include <libintl.h>.
1999-07-19 Roland McGrath <roland@baalperazim.frob.com>
* hurd/hurdsig.c (_hurd_internal_post_signal): If a
hurd_signal_preemptor matches but its `preemptor' field is null, use
its `handler' field directly. This is to comply with behavior
documented in <hurd/sigpreempt.h>.
* hurd/hurdsig.c (_hurdsig_init): Take new args, INTARRAY and
INTARRAYSIZE. Initialize main thread's sigstate from INIT_SIG* ints.
* hurd/hurd/signal.h: Update _hurdsig_init decl.
* hurd/hurdinit.c (_hurd_proc_init): Take new args, INTARRAY and
INTARRAYSIZE, pass them down to _hurdsig_init.
* hurd/hurd.h: Update _hurd_proc_init decl.
1998-05-19 15:58 Ulrich Drepper <drepper@cygnus.com>
* elf/rtld.c (process_envvars): Fix typo. Don't handle
LD_PROFILE_OUTPUT in SUID binaries.
* intl/dcgettext.c: In SUID binaries don't let language part of
locale value contain path elements.
* intl/explodename.h: Define new function _nl_find_language.
* intl/loadinfo.h: Declare _nl_find_language.
* locale/findlocale.c (_nl_find_locale): Use _nl_find_locale to get
language part it drop the value is path element is contained.
* locale/setlocale.c: Fix typo.
1998-05-18 Philip Blundell <Philip.Blundell@pobox.com>
* sysdeps/unix/sysv/linux/arm/socket.S: Correct handling of arguments.
* sysdeps/arm/strlen.S: Support both big and little endian processors.
* sysdeps/arm/sysdep.h (ALIGNARG): ELF .align directive uses a
log, not a byte-count.
* sysdeps/unix/arm/sysdep.S (syscall_error): Use C_SYMBOL_NAME for
a.out compatibility.
1998-05-19 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sysdeps/unix/bsd/vax/vfork.S: Fix the "the the" problems.
* sysdeps/unix/bsd/sun/m68k/vfork.S: Likewise.
* sysdeps/unix/bsd/hp/m68k/vfork.S: Likewise.
* posix/unistd.h: Likewise.
* math/math.h: Likewise.
* manual/users.texi (Manipulating the Database): Likewise.
* manual/signal.texi (Job Control Signals): Likewise.
* manual/message.texi (The gencat program): Likewise.
* manual/filesys.texi (Hard Links): Likewise.
* manual/math.texi (SVID Random): Likewise.
* manual/llio.texi (Waiting for I/O): Likewise.
* manual/io.texi (File Name Errors): Likewise.
* manual/conf.texi (String Parameters): Likewise.
* manual/arith.texi (Infinity): Likewise.
* malloc/malloc.c: Likewise.
* hurd/hurdsig.c (_hurd_internal_post_signal): Likewise.
* csu/Makefile: Likewise.
1997-07-06 23:36 Ulrich Drepper <drepper@cygnus.com>
* isomac.c (get_null_defines): Put NULL at end of list.
* hurd/Makefile: Remove special handling of sunrpc code.
* sysdeps/mach/hurd/Makefile: Likewise.
Compile CThreads code.
* sunrpc/rpc_main.c: Don't use MAXPATHLEN.
* sysdeps/mach/bits/libc-lock.h: Add definitions for key handling
functions.
* sysdeps/stub/bits/libc-lock.h: Likewise.
* sysdeps/mach/hurd/net/ethernet.h: New file.
* sysdeps/mach/hurd/net/if.h: New file.
* sysdeps/mach/hurd/net/if_arp.h: New file.
* sysdeps/mach/hurd/net/if_ether.h: New file.
* sysdeps/mach/hurd/net/if_ppp.h: New file.
* sysdeps/mach/hurd/net/route.h: New file.
Patches by Fila Kolodny <fila@ibi.com>.
* math/fenv-test.c: Add more tests.
Patch by Andreas Jaeger <aj@arthur.rhein-neckar.de>.
* sysdeps/wordsize-32/inttypes.h: Correct values for INTFAST_MIN,
INTFAST_MAX, and UINTFAST_MAX.
* sysdeps/wordsize-64/inttypes.h: Likewise.
Correct intmax_t definition.
1997-07-04 15:33 H.J. Lu <hjl@gnu.ai.mit.edu>
* elf/rtld.c (dl_main): Add '\n' to _dl_sysdep_fatal ().
1997-07-01 09:18 H.J. Lu <hjl@gnu.ai.mit.edu>
* libc.map: Add missing symbol.
1997-07-04 18:04 H.J. Lu <hjl@gnu.ai.mit.edu>
* stdlib/tst-strtol.c: Don't assume cpp takes ~0UL as long
in cc1. Cpp in gcc doesn't do it.
1997-07-01 21:15 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* libio/libioP.h: Remove second definition of _IO_file_attach.
* sysdeps/i386/fpu/fraiseexcpt.c (feraiseexcept): Correct comments.
* sysdeps/sparc64/elf/start.S (_start): Update and reformat
copyright.
* manual/summary.awk: Likewise.
* misc/bits/stab.def: Likewise.
* posix/glob/Makefile.ami: Likewise.
* posix/glob/Makefile.in: Likewise.
* posix/glob/SMakefile: Likewise.
* sysdeps/gnu/errlist.awk: Likewise.
* sysdeps/mach/hurd/errnos.awk: Likewise.
* sysdeps/standalone/i386/force_cpu386/target.ld: Likewise.
* sysdeps/standalone/m68k/m68020/mvme136/mvme136.ld: Likewise.
* sysdeps/unix/snarf-ioctls: Likewise.
* sysdeps/vax/setjmp.c: Likewise.
1997-07-05 11:56 Ulrich Drepper <drepper@cygnus.com>
* login/login.c (tty_name): Use newly allocated buffer.
Patch by Jaakko Hyvätti <jaakko.hyvatti@iki.fi>.
* time/asctime.c: Never translate week and month name according
to LC_TIME. Patch by Paul Eggert <eggert@twinsun.com>.
1997-07-03 22:50 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* locale/setlocale.c (setname): Do nothing when reusing the same
name.
1997-07-03 20:18 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* libc.map: Add global variables of malloc.
1997-07-03 13:24 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/dl-version.c (find_needed): Look for needed objects also in
the dependency list of the current object. Added new parameter to
find its link map, caller changed.
1997-07-03 12:33 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* sysdeps/m68k/fpu/fraiseexcpt.c: Correct the FE_INEXACT and
FE_UNDERFLOW cases.
1997-07-01 13:36 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* elf/link.h: Remove final comma from enumerator list, forbidden
by ISO C. Use __inline instead of inline.
1997-07-01 16:40 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>
* hurd/hurdsig.c: Include <hurd/id.h>.
(reauth_proc): Call proc_setowner appropriately too.
1997-07-01 09:18 H.J. Lu <hjl@gnu.ai.mit.edu>
* libc.map: Add missing symbol.
1997-06-30 12:12 Fila Kolodny <fila@ibi.com>
* sysdeps/mach/hurd/fchdir.c: Make fchdir a weak alias of __fchdir.
* sysdeps/mach/hurd/getpeername.c (getpeername): Remove spurious
declaration of addr.
1997-06-29 17:56 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* manual/argp.texi (Argp Option Vectors): Fix use of @math to make
it work in TeX.
1997-06-27 21:25 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* Makeconfig (+includes): Add include directory to include path.
* configure.in (sysnames): Don't add it here.
* Makefile (subdir-dirs): Define and add it to vpath for headers.
* Make-dist (all-headers): Look in include directory for
indirection headers. Filter out header names pointing outside the
source directory.
* Makefile (distribute): Remove ansidecl.h, add libc.map.
* Make-dist (+tsrcs): Add version scripts for extra libraries.
* Makerules (distinfo-vars): Add %-map for extra libraries.
* sysdeps/unix/sysv/linux/alpha/Dist: Rename sys/kernel_termios.h
to kernel_termios.h.
* sysdeps/unix/sysv/linux/powerpc/Dist: Remove ioctl-types.h,
termbits.h and sys/kernel_termios.h.
* sysdeps/mips/mips64/Dist: New file.
* sysdeps/unix/sysv/linux/Dist: Add stdio_lim.h.in.
1997-06-29 23:03 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* math/test-fenv.c (feenv_nomask_test): New test for non masked
exceptions.
(feenv_mask_test): New test for masked exceptions
(feenv_tests): New function calls feenv_nomask_test and
feenv_mask_test.
(main): Call new tests.
(initial_tests): New test for initilisation.