Commit Graph

422 Commits

Author SHA1 Message Date
John Polstra
3600eb76c6 Work around an assert failure in the dynamic linker's default thread
locking functions.  If an application loads a shared object with
dlopen() and the shared object has an init function which requires
lazy binding, then _rtld_bind is called when the thread is already
inside the dynamic linker.  This leads to a recursive acquisition
of the lock, which I was not expecting -- hence the assert failure.

This work-around makes the default locking functions handle recursive
locking.  It is NOT the correct fix -- that should be implemented
at the generic locking level rather than in the default locking
functions.  I will implement the correct fix in a future commit.

Since the dllockinit() interface will likely need to change, warn
about that in both the man page and the header file.
1999-12-28 04:38:17 +00:00
Yoshinobu Inoue
7d56d3747c Getaddrinfo(), getnameinfo(), and etc support in libc/net.
Several udp and raw apps IPv6 support.

Reviewed by: freebsd-arch, cvs-committers
Obtained from: KAME project
1999-12-28 02:37:14 +00:00
John Polstra
d3980376e8 Add a new function dllockinit() for registering thread locking
functions to be used by the dynamic linker.  This can be called by
threads packages at start-up time.  I will add the call to libc_r
soon.

Also add a default locking method that is used up until dllockinit()
is called.  The default method works by blocking SIGVTALRM, SIGPROF,
and SIGALRM in critical sections.  It is based on the observation
that most user-space threads packages implement thread preemption
with one of these signals (usually SIGVTALRM).

The dynamic linker has never been reentrant, but it became less
reentrant in revision 1.34 of "src/libexec/rtld-elf/rtld.c".
Starting with that revision, multiple threads each doing lazy
binding could interfere with each other.  The usual symptom was
that a symbol was falsely reported as undefined at start-up time.
It was rare but not unseen.  This commit fixes it.
1999-12-27 04:44:04 +00:00
Bruce Evans
de7067ac25 Fixed missing declaration of ctermid_r(3). 1999-12-23 16:33:12 +00:00
Bruce Evans
c6dfd71a9f Fixed missing declaration of getlogin_r(3). 1999-12-23 16:06:12 +00:00
Bruce Evans
dea750ae4c Fixed missing declaration of rand_r(3). 1999-12-23 15:58:20 +00:00
Bruce Evans
19fa8f60e9 Fixed missing declaration of getdents(2). 1999-12-23 15:52:13 +00:00
Jason Evans
386812d440 Fix some minor POSIX/SUSv2 compliance nits.
PR:		kern/11982
1999-12-18 01:00:42 +00:00
Alexey Zelkin
94da96bf18 Back up following macros by functions: ishexnumber, isideogram, isnumber,
isphonogram, isrune, isspecial. Fix ordering.

Reviewed by: bde
1999-12-17 15:12:21 +00:00
Jason Evans
346b6c5db8 Move POSIX feature constants from pthread.h to unistd.h, as required by
1003.1c-1995.

Undefine _POSIX_THREAD_SAFE_FUNCTIONS, since we do not implement all of the
necessary interfaces.  At least getgrgid_r(), getrnam_r(), getpwuid_r(),
getpwnam_r(), getc_unlocked(), getchar_unlocked(), putc_unlocked(),
and putchar_unlocked() are missing.  Due to a likely typo in 1003.1c-1995,
we are not technically allowed to define _POSIX_THREADS without defining
_POSIX_THREAD_SAFE_FUNCTIONS, but either way we're non-compliant, so I'm
leaving _POSIX_THREADS defined.

PR:		bin/8281
1999-12-16 21:53:39 +00:00
Marcel Moolenaar
15f3c66cd2 Revert previous commit.
Requested by: bde
1999-12-09 09:35:36 +00:00
Marcel Moolenaar
02cca88299 Remove support for symlinks instead of copies. This also avoids
using mtree. Space is being saved by other means.
1999-12-08 13:47:30 +00:00
Peter Wemm
5af7944d91 Create a symlink for <machine/joystick.h>, like soundcard.h 1999-12-05 21:34:09 +00:00
Semen Ustimenko
5bf4211543 Added ntfs subdir to be filled. 1999-12-03 20:22:45 +00:00
Alfred Perlstein
8b6c02f328 style fixes, remove extra braces.
readdir_r is not POSIX according to POSIX_SOURCE, bruce says:
> readdir_r() is in the _POSIX_SOURCE section, but is not a POSIX.1-1990
> function.  It's POSIX.1-1996 so it should be under a different feature
> test which we don't support yet.

make sure errno is saved so that its contents are cleared unless
necessary.

Submitted by: bde
1999-11-29 19:12:50 +00:00
Alfred Perlstein
7285bccf1a add pthread_cancel, obtained from OpenBSD.
eischen (Daniel Eischen) added wrappers to protect against cancled
threads orphaning internal resources.

the cancelability code is still a bit fuzzy but works for test
programs of my own, OpenBSD's and some examples from ORA's books.

add readdir_r to both libc and libc_r

add some 'const' attributes to function parameters

Reviewed by: eischen, jasone
1999-11-28 05:38:13 +00:00
Andrey A. Chernov
3cc1fd63ff Add FNM_FILE_NAME - GNU alias to FNM_PATHNAME
Move all excepting NOESCAPE,PATHNAME,PERIOD under !defined(_POSIX_SOURCE)
1999-11-21 17:32:45 +00:00
Jonathan Lemon
fd9ec25aaa Add missing netinet6.
Detected by:	make world
1999-11-05 18:49:00 +00:00
Julian Elischer
4cf49a4355 Whistle's Netgraph link-layer (sometimes more) networking infrastructure.
Been in production for 3 years now. Gives Instant Frame relay to if_sr
and if_ar drivers, and PPPOE support soon. See:
ftp://ftp.whistle.com/pub/archie/netgraph/index.html
for on-line manual pages.

Reviewed by: Doug Rabson (dfr@freebsd.org)
Obtained from:  Whistle CVS tree
1999-10-21 09:06:11 +00:00
Boris Popov
f24bb3a4b3 Make libncp actually compiled.
Reviewed by:	mdodd
1999-10-14 06:40:46 +00:00
Peter Wemm
56638eb686 Complete move of kvm.h to lib/libkvm so it's self contained. 1999-10-04 14:59:37 +00:00
Marcel Moolenaar
e1a1647870 Link ucontext.h to sys/ucontext.h
Pointed out by: bde
1999-10-03 15:12:26 +00:00
Marcel Moolenaar
9102cd0abd Remove the inline versions of sigaddset, sigdelset, sigemptyset,
sigfillset and sigismember.

Submitted by: bde
1999-10-02 19:33:23 +00:00
Marcel Moolenaar
3cf3c5d9dd sigset_t change (part 5 of 5)
-----------------------------

Most of the userland changes are in libc. For both the alpha
and the i386 setjmp has been changed to accomodate for the
new sigset_t. Internally, libc is mostly rewritten to use the
new syscalls. The exception is in compat-43/sigcompat.c

The POSIX thread library has also been rewritten to use the
new sigset_t. Except, that it currently only handles NSIG
signals instead of the maximum _SIG_MAXSIG. This should not
be a problem because current applications don't use any
signals higher than NSIG.

There are version bumps for the following libraries:
  libdialog
  libreadline
  libc
  libc_r
  libedit
  libftpio
  libss

These libraries either a) have one of the modified structures
visible in the interface, or b) use sigset_t internally and
may cause breakage if new binaries are used against libraries
that don't have the sigset_t change. This not an immediate
issue, but will be as soon as applications start using the
new range to its fullest.

NOTE: libncurses already had an version bump and has not been
      given one now.

NOTE: doscmd is a real casualty and has been disconnected for
      the moment. Reconnection will eventually happen after
      doscmd has been fixed. I'm aware that being the last one
      to touch it, I'm automaticly promoted to being maintainer.
      According to good taste this means that I will receive a
      badge which either will be glued or mechanically stapled,
      drilled or otherwise violently forced onto me :-)

NOTE: pcvt/vttest cannot be compiled with -traditional. The
      change cause sys/types to be included along the way which
      contains the const and volatile modifiers. I don't consider
      this a solution, but more a workaround.
1999-09-29 15:18:46 +00:00
Peter Wemm
2c62730ab2 Zap $Revision$ 1999-09-05 17:43:31 +00:00
Peter Wemm
c08e808e2a Only install backwards compat symlink for <machine/soundcard.h> if using
the default SHARED=copies, otherwise the kernel source tree gets modified
if /usr/include/machine is a symlink to the source tree (which is not the
case by default).  Nothing in our src tree uses <machine/soundcard.h>.

Pointed out by:	bde
1999-09-05 07:58:28 +00:00
Peter Wemm
df791b1e94 Install a symlink for <machine/soundcard.h> -> <sys/soundcard.h> rather
than having stubs.  (OK'ed by dfr)
1999-09-04 15:44:44 +00:00
John Polstra
30f6d5b508 Add definition for RTLD_GLOBAL, which is soon to be supported. 1999-08-30 00:50:12 +00:00
Peter Wemm
a1a4f1a0d8 $Header$ -> $FreeBSD$ 1999-08-28 05:11:36 +00:00
Peter Wemm
a4add9a9b1 $Id$ -> $FreeBSD$ 1999-08-27 23:45:13 +00:00
Matthew N. Dodd
90cc1fbc53 Add 2 functions: el_data_set() and el_data_get() which do what you
would expect.  (Allow user data to be associated with an EditLine context).

As this changes no existing interfaces and doesn't alter any structs
visable to the user I've been told that its not necessary to bump
the version of the library.
1999-08-20 01:17:12 +00:00
Warner Losh
c0344bf061 Add prototypes for strl* functions
Forgotten by: imp
Reported by: bde
1999-08-16 06:53:13 +00:00
Ralf S. Engelschall
026cb3a62c Cleanups to the pthread header files.
Submitted by:   Ralf S. Engelschall <rse@engelschall.com>
Reviewed by:    John Birrell <jb@cimlogic.com.au>
1999-07-31 08:36:07 +00:00
Daniel Eischen
5b90d09f8a Hide pthread cancellation routines behind #ifdef NOT_YET. They are
not currently supported.  Also corrected the declaration for
pthread_testcancel which incorrectly returned int when POSIX and
SUSv2 both say it should be void.

Submitted by:	Ralf S. Engelschall <rse@engelschall.com>
Reviewed by:	John Birrell <jb@freebsd.org>
1999-07-27 03:29:01 +00:00
Hidetoshi Shimokawa
f2fd63aff2 Make profil() 64bit-safe for alpha.
uintfptr_t may be better for offset, but we must wait until
the definition of uintfptr_t moves from machine/profile.h.

Reviewed by: bde
1999-07-16 06:28:55 +00:00
Steve Price
47fe9db9e6 Allow fpsetmask(3) and friends to be used from a C++ program on the Alpha.
Reviewed by:	dfr
1999-06-22 17:08:25 +00:00
Sheldon Hearn
1e61f70124 Add missing declarations.
PR:	12058
Submitted by:	Mikhail Teterin <mi@aldan.algebra.com>
1999-06-21 17:07:20 +00:00
Peter Wemm
f05a568074 Change an internal variable from "class" to "ns_class" for C++'s benefit.
Apparently BIND-8.2.1 uses ns_class.

Submitted by: John Plevyak <jplevyak@inktomi.com>
1999-06-04 22:38:27 +00:00
Peter Wemm
78121e79aa Add a strsignal(3) (like strerror(3)) for libc compatability with other
systems. NetBSD, Linux, SVR4 etc all have it.
1999-05-18 04:48:58 +00:00
Bruce Evans
95b2e7ca5b Restored rev.1.11 which was clobbered by rev.1.12 (translated to `C'). 1999-05-11 07:28:53 +00:00
Jordan K. Hubbard
da8f43d1fc Protect declarations for C++ users.
Submitted by:	Richard Wiwatowski <rjwiwat@ozemail.com.au>
1999-05-08 05:50:07 +00:00
Jacques Vidrine
958ab463b8 16 characters for the device name in /etc/dumpdates is not long
enough, particularly when using vinum.  Allow 32 characters
(arbitrary, I know) instead.

PR:	bin/11433
1999-05-08 01:08:56 +00:00
Mark Murray
0feb57945e Part of routed upgrade.
Submitted by:	 Vernon Schryver <vjs@calcite.rhyolite.com>
1999-05-02 13:20:38 +00:00
John Polstra
6d30b16752 Back out my change from 6 April PDT that added a new dlversion()
function.  It was an ill-considered feature.  It didn't solve the
problem I wanted it to solve.   And it added Yet Another Version
Number that would have to be maintained at every release point.
I'm nuking it now before anybody grows too fond of it.
1999-04-22 01:54:38 +00:00
Bruce Evans
34597fa67f Oops, the previous log message should have been:
Include <machine/ansi.h> so that this file is self-sufficient again.
Rev.1.6 doesn't do this as claimed unless <nlist.h> has nonstandard
pollution.

Cleaned up includes.
1999-04-10 03:49:43 +00:00
Bruce Evans
95a7753b24 Declare mkstemps(). 1999-04-09 15:06:56 +00:00
John Polstra
14f5fa0596 Add a new function dlversion() which returns the version number of
the dynamic linker in the same form as __FreeBSD_version.  This is
mainly intended for checking the dynamic linker version during a make
world.
1999-04-07 02:43:11 +00:00
Dmitrij Tejblum
3a41a9b759 Add prototypes for pread and pwrite. 1999-04-04 21:47:53 +00:00
John Birrell
b847980f15 o Runnable threads are now maintained in priority queues. The
implementation requires two things:

      1.) The priority queues must be protected during insertion
          and removal of threads.  Since the kernel scheduler
          must modify the priority queues, a spinlock for
          protection cannot be used.   The functions
          _thread_kern_sched_defer() and _thread_kern_sched_undefer()
          were added to {un}defer kernel scheduler activation.

      2.) A thread (active) priority change can be performed only
          when the thread is removed from the priority queue.  The
          implementation uses a threads active priority when
          inserting it into the queue.

    A by-product is that thread switches are much faster.  A
    separate queue is used for waiting and/or blocked threads,
    and it is searched at most 2 times in the kernel scheduler
    when there are active threads.  It should be possible to
    reduce this to once by combining polling of threads waiting
    on I/O with the loop that looks for timed out threads and
    the minimum timeout value.

  o Functions to defer kernel scheduler activation were added.  These
    are _thread_kern_sched_defer() and _thread_kern_sched_undefer()
    and may be called recursively.  These routines do not block the
    scheduling signal, but latch its occurrence.  The signal handler
    will not call the kernel scheduler when the running thread has
    deferred scheduling, but it will be called when running thread
    undefers scheduling.

  o Added support for _POSIX_THREAD_PRIORITY_SCHEDULING.  All the
    POSIX routines required by this should now be implemented.
    One note, SCHED_OTHER, SCHED_FIFO, and SCHED_RR are required
    to be defined by including pthread.h.  These defines are currently
    in sched.h.  I modified pthread.h to include sched.h but don't
    know if this is the proper thing to do.

  o Added support for priority protection and inheritence mutexes.
    This allows definition of _POSIX_THREAD_PRIO_PROTECT and
    _POSIX_THREAD_PRIO_INHERIT.

  o Added additional error checks required by POSIX for mutexes and
    condition variables.

  o Provided a wrapper for sigpending which is marked as a hidden
    syscall.

  o Added a non-portable function as a debugging aid to allow an
    application to monitor thread context switches.  An application
    can install a routine that gets called everytime a thread
    (explicitly created by the application) gets context switched.
    The routine gets passed the pthread IDs of the threads that are
    being switched in and out.  I found this useful, but we can
    get rid of it if you want.

Submitted by: Dan Eischen <eischen@vigrid.com>
1999-03-23 05:11:30 +00:00
Poul-Henning Kamp
7f29144bc9 Nuke old copies of /usr/include/timepps.h 1999-03-22 12:58:15 +00:00