Commit Graph

376 Commits

Author SHA1 Message Date
jb
d6f16463c4 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
phk
4c2b0ef747 Nuke old copies of /usr/include/timepps.h 1999-03-22 12:58:15 +00:00
phk
afd35689b6 Remove <timepps.h> here as well.
You will need to manually rip it from /usr/include if it gives you any
trouble.
1999-03-11 15:12:28 +00:00
phk
fa2ccdd2de removed from PPS-API draft 1999-03-11 15:07:09 +00:00
bde
270bcbcd25 Use __i386__ instead of i386 in an ifdef. 1999-03-05 18:15:05 +00:00
dt
09f3411c47 Added functions fseeko() and ftello() (from susv2).
Fixed fgetpos() and fsetpos() for offsets > 2GB.

PR:		8637
Submitted by:	 Dan Nelson <dnelson@emsphone.com> (adjusted by me a little)
1999-02-08 21:32:38 +00:00
bde
3b406daf49 Removed evil typedef kvm_swap_t and all uses of it (not many).
Hoped for by:	wollman
1999-01-27 11:29:15 +00:00
dillon
a5e0136be2 Oops, forgot this. Needed by libkvm. 1999-01-23 04:58:35 +00:00
jdp
ac1fc88548 Add a prototype for strtok_r(). 1999-01-20 21:21:26 +00:00
des
94d4a42a53 Use the correct type for uid and gid in struct passwd. Document it. 1999-01-18 02:14:20 +00:00
dt
bd731534ae Install <sys/aio.h> as <aio.h>. 1999-01-17 22:35:09 +00:00
jdp
586eaf382b Instead of a wrapper <linker_set.h>, use a symlink to
<sys/linker_set.h>.

Submitted by:	bde
1999-01-14 19:52:38 +00:00
jdp
01d2d81931 Add a wrapper <linker_set.h> for <sys/linker_set.h>, so that
userland programs can use linker sets.
1999-01-14 05:53:54 +00:00
msmith
a3f1f30436 optreset is a POSIX extension, make it visible in POSIX_SOURCE scope.
Submitted by:	 Andrzej Bialecki <abial@nask.pl>
1999-01-11 11:32:35 +00:00
asami
96ce6d18f1 Move nologin from /etc to /var/run. This means one less file that has
to be written to /etc.

The only essential change is in paths.h, so any third-party software
written correctly will pick it up in the next rebuild.

Reviewed by:	the committers list (actually an old version)
1999-01-11 09:07:42 +00:00
msmith
d2244b14fd POSIX introduced optreset to deal with multiple invocations
of getopt (as in, multiple input lines :). This is documented in the
man page and is used in the code, but unistd.h and stand.h do not
declare it. Incidentally, it prevents me fixing a bug in loader's
code... :-)

PR:		misc/9373
Submitted by:	"Daniel C. Sobral" <dcs@newsguy.com>
1999-01-11 06:01:29 +00:00
dt
b3785565fa Make ctime_r, asctime_r, gmtime_r, and localtime_r available in libc. 1999-01-04 20:45:20 +00:00
dfr
82f430f229 Implement fpsetmask() and other fp*() functions. Programs should use
#include <ieeefp.h>

to access these functions instead of the i386 specific

	#include <machine/floatingpoint.h>

Submitted by: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
1998-12-23 11:50:52 +00:00
dt
6bc5ea6f64 Install <sys/inttypes.h> as <inttypes.h>. 1998-12-19 00:21:13 +00:00
dt
0d8aac5510 Little reorganization:
- created internal names for fixed-size integral types, like __int32_t. They
  will be used to make several headers self-sufficient.
- <stdlib.h> don't include <machine/types.h> anymore.
- created <sys/inttypes.h>, which can be used as <inttypes.h>.
- declaration of uoff_t and ufs_daddr_t moved to <sys/types.h>.

Reviewed by:	bde
1998-12-19 00:02:34 +00:00
bde
e096a42520 Declare size_t and ssize_t if they are not already declared, so that
<kvm.h> is self-sufficient again.

Moved typedefs and forward struct declarations out of __BEGIN_DECLS/
__END_DECLS.

Don't comment out the prototype for kvm_uread().  This was a 4 year
old kludge for previous breakage of self-sufficiency.  The prototypwe
was broken instead.

Fixed bitrot (const poisoning) in the type of kvm_uread().

Fixed order of the declaration of kvm_uread().
1998-12-16 18:59:47 +00:00
dt
ace74446c2 Make this protototype of mmap return void *, like two other copies. 1998-12-14 19:23:16 +00:00
archie
e14218b29d Make rcsid a const char[] instead of char[] to avoid compiler warnings 1998-12-06 08:15:08 +00:00
eivind
22f53707dd Add support for pthread_mutexattr_settype(). As a side effect of
testing this, fix MUTEX_TYPE_COUNTING_FAST.  Recursive locks now work.
1998-11-28 23:52:58 +00:00
bde
027e8cf9b1 Don't forget to use the appropriate __printf*like attribute for verr*
and vwarn*.

Sorted attributes.

UnFrom'ed vendor id.
1998-11-22 05:12:27 +00:00
dima
2215710c14 64bit clean now 1998-11-08 08:27:16 +00:00
jdp
4892cfe4f1 Add support for -Wformat consistency checking between format strings
and their argument lists for the err(3) family of functions.  Note,
I intentionally used __printflike instead of __printf0like for
warnx.  Although a NULL format string is legal for that function, it
doesn't make any sense.
1998-10-29 22:18:47 +00:00
dima
cc75f20eb5 64bit fixes.
(Note: ``dump'' doesn't work on alpha yet. Apparently there's a problem
somewhere is the physio() area)

Submitted by:	myself && Matt Dillon.
1998-10-27 04:01:19 +00:00
dima
1255619faa make talk/talkd work on alpha. 1998-10-20 07:07:07 +00:00
bde
35696d7584 Don't even think about using a sysctl to build osreldate.h, since this
breaks cross-builds.  Just depend on ${.CURDIR}/../sys/conf/newvers.sh
existing.

Don't override the (correct) defaults for the depend, lint or tags target.

In LDIRS: fixed order-rot.  Don't comment out dead networking directories;
remove them.
1998-10-17 15:52:48 +00:00
jkh
72d6142ada Move auth.conf path in here. Doesn't affect published interface. 1998-10-09 07:34:47 +00:00
ache
7affec232e back out h2ph from here, Bruce found another proper place 1998-10-02 13:00:58 +00:00
ache
4379a4bc09 Add h2ph call to afterinstall target
Error code ignored to allow building without perl installed
1998-10-02 00:49:43 +00:00
wpaul
fc7b569c0d #ifdef out DES ioctls which don't exist in FreeBSD. These originated
with the SunRPC code to allow the use of hardware DES on certain Sun
hardware that supported it (if you installed the appropriate kit). We
don't have them and they apparently break the ioctl table
generation for kdump.

Pointed out by: bde
1998-09-26 01:29:51 +00:00
bde
03f3a48c02 Don't declare functions without a prototype if KERNEL is defined. This
fixes lots of warnings about missing prototypes in sys/netatm/spans/*.
1998-09-21 02:43:30 +00:00
obrien
a7356a5e9f Build headers with -DWANT_NFS3.
(finishing up on Amd upgrade)
1998-09-17 19:51:40 +00:00
dfr
e0131d813d Adjust the declarations of kvm_read and kvm_write to match reality a little
closer.
1998-09-16 09:30:14 +00:00
phk
e88115496e (this is an extract from src/share/examples/atm/README)
===================================
                HARP  |  Host ATM Research Platform
                ===================================

                              HARP 3

What is this stuff?
-------------------
The Advanced Networking Group (ANG) at the Minnesota Supercomputer Center,
Inc. (MSCI), as part of its work on the MAGIC Gigabit Testbed, developed
the Host ATM Research Platform (HARP) software, which allows IP hosts to
communicate over ATM networks using standard protocols.  It is intended to
be a high-quality platform for IP/ATM research.

HARP provides a way for IP hosts to connect to ATM networks.  It supports
standard methods of communication using IP over ATM.  A host's standard IP
software sends and receives datagrams via a HARP ATM interface.  HARP provides
functionality similar to (and typically replaces) vendor-provided ATM device
driver software.

HARP includes full source code, making it possible for researchers to
experiment with different approaches to running IP over ATM.  HARP is
self-contained; it requires no other licenses or commercial software packages.

HARP implements support for the IETF Classical IP model for using IP over ATM
networks, including:

   o IETF ATMARP address resolution client
   o IETF ATMARP address resolution server
   o IETF SCSP/ATMARP server
   o UNI 3.1 and 3.0 signalling protocols
   o Fore Systems's SPANS signalling protocol

What's supported
----------------
The following are supported by HARP 3:

   o ATM Host Interfaces
        - FORE Systems, Inc. SBA-200 and SBA-200E ATM SBus Adapters
        - FORE Systems, Inc. PCA-200E ATM PCI Adapters
        - Efficient Networks, Inc. ENI-155p ATM PCI Adapters

   o ATM Signalling Protocols
        - The ATM Forum UNI 3.1 signalling protocol
        - The ATM Forum UNI 3.0 signalling protocol
        - The ATM Forum ILMI address registration
        - FORE Systems's proprietary SPANS signalling protocol
        - Permanent Virtual Channels (PVCs)

   o IETF "Classical IP and ARP over ATM" model
        - RFC 1483, "Multiprotocol Encapsulation over ATM Adaptation Layer 5"
        - RFC 1577, "Classical IP and ARP over ATM"
        - RFC 1626, "Default IP MTU for use over ATM AAL5"
        - RFC 1755, "ATM Signaling Support for IP over ATM"
        - RFC 2225, "Classical IP and ARP over ATM"
        - RFC 2334, "Server Cache Synchronization Protocol (SCSP)"
        - Internet Draft draft-ietf-ion-scsp-atmarp-00.txt,
                "A Distributed ATMARP Service Using SCSP"

   o ATM Sockets interface
        - The file atm-sockets.txt contains further information

What's not supported
--------------------
The following major features of the above list are not currently supported:

        o UNI point-to-multipoint support
        o Driver support for Traffic Control/Quality of Service
        o SPANS multicast and MPP support
        o SPANS signalling using Efficient adapters

This software was developed under the sponsorship of the Defense Advanced
Research Projects Agency (DARPA).

Reviewed (lightly) by:	phk
Submitted by:	Network Computing Services, Inc.
1998-09-15 11:44:44 +00:00
gibbs
1937a8c28f Add new cam include hierarchy. 1998-09-15 10:22:37 +00:00
imp
96fb246758 Add reallocf to the library. This function is simliar to realloc, but
when it returns NULL to indicate failure, it will also free the memory
that was passed to it, if that was non-null.

This does not change the semantics of realloc.

A second commit will be done to commit the conversion of those places in
the code that can safely use this to avoid memory leaks when confronted
with low memory situations.

Beaten-to-death-but-finally-approved-in: -current
1998-09-14 20:34:34 +00:00
dt
b25757c2f6 Change return type of strptime from const char* to char*.
const char* was wrong and nonstandard.
1998-09-12 21:13:29 +00:00
wollman
65897ca373 A small last-minute iitem for 3.0:
- Fix some style errors I made back in 1995.

- Add a new flavor of the err(3) family, which takes an explicit
  errno argument rather than implicitly examining errno.  This
  will make it easier to use these functions in conjunction with
  modern library interfaces that return an errno value explicitly.
1998-09-12 21:02:22 +00:00
kato
cf29cd62b0 Change i386 in a few paths to ${MACHINE} to support MACHINE=pc98. 1998-09-09 11:13:55 +00:00
jdp
0bb6368d5e Add a new library function getobjformat(). It checks all the
standard places ("/etc/objformat", ${OBJFORMAT}, argv) for an
indication of the user's preferred object file format.  This
consolidates some code that was starting to be duplicated in more
and more places.

Use the new function in ldconfig.

Note: I don't think that gcc should use getobjformat(), even though
it could.  The compiler should limit itself to functions that are
widespread, to ease porting and cross-compilation.
1998-09-09 01:21:25 +00:00
obrien
197549a134 Add support for the RPC 64-bit integer type ``hyper''. 1998-09-08 17:33:12 +00:00
brian
49e8b6c146 Remove the extern decl of ``h_errno''. It's already
externed in netdb.h - where all of its #define values
live.  If anything requires h_errno here (nothing in
/usr/src seems to) it's almost definitely broken.
1998-09-07 19:54:08 +00:00
alex
90a31b51e3 Implement pthread read/write locks as defined by Version 2 of the Single
UNIX Specification.

As with our standard mutexes, process shared locks are not supported at
this time.
1998-09-07 19:01:43 +00:00
obrien
f8462ac6ab Fix tons of cut-n-paste errors in the WANT_NFS3 code. 1998-09-06 09:21:35 +00:00
jdp
312c9bcd16 Add hints file structures and defines. 1998-09-05 00:53:53 +00:00
jb
58eb214a68 Add the prototype for sigwait(). 1998-08-25 11:08:22 +00:00