Commit Graph

36428 Commits

Author SHA1 Message Date
jb
e071fcc31a 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
jb
a451f52058 [ The author's description... ]
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.

Submitted by: Dan Eischen <eischen@vigrid.com>

Changes by me:

  o Added a PS_SPINBLOCK state to deal with the priority inversion
    problem most often (I think) seen by threads calling malloc/free/realloc.

  o Dispatch signals to the running thread directly rather than at a
    context switch to avoid the situation where the switch never occurs.
1999-03-23 05:07:56 +00:00
jkoshy
7979064d1d Typo fix.
PR:		docs/10733
Submitted by:	Steve Coltrin <spcoltri@io.com>
1999-03-23 05:01:11 +00:00
grog
df50af5d1e Describe the new semantics of 'create':
When creating a new drive, if the drive already has a vinum label,
  and name doesn't match the specified drive, do it anyway if the
  'force' flag is specified.

Continually-tripped-over-by:  Karl Pielorz <kpielorz@tdx.co.uk>

Update information about partition type for Vinum drives.  They
*should* be of type 'vinum', but currently we still accept (and
complain about) partitions of type 'unused'.  At a later date, only
'vinum' will be accepted.

Threatened-since: over a year
1999-03-23 04:55:50 +00:00
grog
b05d4b54a5 Print correct message if the wrong module is loaded. 1999-03-23 04:55:23 +00:00
grog
39fe6f40ce vinum_create: pass 'force' flag to ioctl VINUM_STARTCONFIG.
Semantics:

  When creating a new drive, if the drive already has a vinum label,
  and name doesn't match the specified drive, do it anyway if the
  'force' flag is specified.

Continually-tripped-over-by:  Karl Pielorz <kpielorz@tdx.co.uk>
1999-03-23 04:54:59 +00:00
grog
03a11d74b6 Change the definition of VINUM_STARTCONFIG to take an int write parameter. 1999-03-23 04:50:40 +00:00
grog
e47937912b Add flag VF_FORCECONFIG for use by the config_drive and friends. 1999-03-23 04:49:32 +00:00
grog
d82a503606 vinum_start:
remove the splbio() around the call to launch read requests.

launch_requests:
  Move the splbio() protection outside the entire launch_loop.  The
  previous location was causing problems with IDE drives, where the
  call to the strategy routine often did not complete until after
  complete_rqe deallocated the request structure.

Solution-independently-found-by: Russell Neeper <r-neeper@tamu.edu>
Problem-reported-by: Vallo Kallaste <vallo@matti.ee>
		     John Saunders <john@nlc.net.au>
		     Bernd Walter <ticso@cicely.de> (maybe)
1999-03-23 04:49:08 +00:00
grog
ed415fe18c VINUM_STARTCONFIG:
Pass the 'data' parameter to start_config, which uses it as the
  parameter 'force.
1999-03-23 04:48:31 +00:00
grog
5f48e8b768 init_drive:
Check for partition types FS_VINUM and FS_UNUSED.  Accept both, but
  complain about FS_UNUSED.  At a later date, only FS_VINUM will be
  accepted.

Threatened-since: over a year
1999-03-23 04:48:05 +00:00
grog
688623aa54 Change the declaration of start_config. 1999-03-23 04:47:33 +00:00
grog
91ed55b390 start_config:
Add a flag `force' (VF_FORCECONFIG) to force name changes of
  existing drives.
config_drive:
  If the drive already has a vinum label, and name doesn't match the
  specified drive, do it anyway if the 'force' flag is specified.
finish_config:
  Reset the `force' flag.

Continually-tripped-over-by:  Karl Pielorz <kpielorz@tdx.co.uk>

give_sd_to_drive:
  If the drive is down, take the subdisk down and don't try to fix
  things.

update_plex_config:
  Don't try to update the config parameters of a plex which isn't
  fully configured (state plex_init or plex_unallocated).

  Correctly calculate the amount to trim off a striped or RAID-5 plex
  whose size is not a multiple of the stripe size.
1999-03-23 04:47:09 +00:00
grog
5386813d7a Add partition type for Vinum.
Offered-for-inspection-to: jkh
1999-03-23 04:08:42 +00:00
bde
058bbe3c62 Simplified using new SYMLINKS macro, mainly to test this macro. The
ifdefs are too ugly for this to be much of a simplification.  The
existence tests are even uglier now.  Note that the previous commit
was not submitted by me.  It missed the point and just added a second
layer of unused removals.

Fixed hard-coded "libcrypt"s.  The LCRYPTBASE macro mainly makes
things hard to read, but use it while we have it.
1999-03-23 03:41:09 +00:00
bde
9c2168a7db Removed all traces of LN_FLAGS. It was only used to produce a link
/usr/sbin/sysctl -> ${DESTDIR}/sbin/sysctl in some versions of 2.2,
and this link was broken if DESTDIR was set.

Added a SYMLINKS macro.  This works the same as LINKS, except it
creates symlinks and the linked-to pathname may be relative.  This
is more flexible than LN_FLAGS, since it supports installing
symlinks independently of hard links.

Use `ln -f[s] ...' instead of `rm -f ...; ln [-s] ...' for LINKS and
SYMLINKS.  This is equivalent if the target is neither a directory nor
a symlink to a directory.

PR:		8279
1999-03-23 03:06:25 +00:00
alex
787e89e027 Typo fix (set --> get).
Obtained from:	OpenBSD (David Leonard)
1999-03-22 23:13:37 +00:00
n_hibma
10c53b0d51 Cosmetical changes. 1999-03-22 19:58:59 +00:00
n_hibma
f4b0f1726a Implementation of the keyboard driver.
Done by: Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
1999-03-22 19:55:30 +00:00
n_hibma
7dfa9c591c Moved timeout initialisation a bit earlier in the process. The
untimeout function triggered panics once in a while.
1999-03-22 19:52:28 +00:00
phk
fbf7e67973 Make the same size rounding error both ways. 1999-03-22 14:01:58 +00:00
phk
8a3b4cd60a Nuke old copies of /usr/include/timepps.h 1999-03-22 12:58:15 +00:00
phk
67e16255da Address our users in a civilized manner. (They may know better, but probably
just forgot it, it is certainly no reason to don't insult them.)
1999-03-22 10:38:07 +00:00
bde
b97a8798b9 Display floats with format %*.0f instead of as "*****" if there is
enough space for this but not enough space for the normal %*.*f
format.  Similarly for long doubles.
1999-03-22 03:44:01 +00:00
obrien
7395a30f20 fix conflicts. 1999-03-22 01:29:39 +00:00
obrien
c02dac0736 Update to latest version. 1999-03-22 01:28:54 +00:00
obrien
9dd3ba60a4 This commit was generated by cvs2svn to compensate for changes in r44930,
which included commits to RCS files with non-trunk default branches.
1999-03-22 01:26:43 +00:00
obrien
ec73946e9e Virgin import of ISC-DHCP v2.0b1pl18 1999-03-22 01:26:43 +00:00
jkh
fe1a4eb34f The attached patch to /usr/src/sbin/dump/optr.c changes the comparison
so that dumps are treated by dump -w as having been done on midnight
of the day they were actually run. This makes dump -w behave as
expected for regularly scheduled daily dumps - if they all run the
same day. It makes dump -w behave strangely if you dump late in the
day and check again after midnight, but that is the lesser of two
evils.

Submitted by:	Mike Meyer <mwm@phone.net>
PR:		9429
1999-03-21 23:47:38 +00:00
alc
9b15de3986 Two changes:
Remove more (redundant) map timestamp increments from properly
synchronized routines.  (Changed: vm_map_entry_link, vm_map_entry_unlink,
and vm_map_pageable.)

Micro-optimize vm_map_entry_link and vm_map_entry_unlink, eliminating
unnecessary dereferences.  At the same time, converted them from macros
to inline functions.
1999-03-21 23:37:00 +00:00
jkh
d52fa1be5c Add cdev 120 as the audit device.
Requested by:	Robert Watson <robert+freebsd@cyrus.watson.org>
1999-03-21 21:53:09 +00:00
joerg
efd64fb913 Finally remove the ancient `-exec rm -f {} ;' cruft that used to be
used to cleanup old files, and replace it by -delete which has been
present in our find(1) for ages now.
1999-03-21 12:34:06 +00:00
phk
7bd71ddeb6 Now bb structures are linked together. 1999-03-21 12:32:17 +00:00
phk
e787195c02 Link the bb structures together as we find them. 1999-03-21 12:30:50 +00:00
phk
c981a9a5a2 Remove the linker-set hack we used for BB profiling. 1999-03-21 12:28:14 +00:00
bde
5a225bdc8c Restored objlink. The previous commit was confused about the difference
between OBJLINK and objlink.
1999-03-21 06:43:40 +00:00
imp
f964808ff3 Don't be so selective about which errors cause us to continue and
which ones cause us to fail.  Now all open errors on the databse file
will cause the next file in the list to be tried.

Submitted by: Arne Henrik Juul <arnej@math.ntnu.no>
PR: 4585
1999-03-21 03:45:58 +00:00
billf
b9f0cd111b An even number of nodes, not node pairs are required for tsort(1) to work.
Pairs are inherently even.

PR:		docs/9264
Submitted by:	NAGAO Tadaaki <nagao@iij.ad.jp>
1999-03-20 21:24:18 +00:00
jkh
f9abc2239b Note that the upgrade target exists, and what it does.
Requested by:		Wayne M Barnes <stabilizer@klentaq1.emergingtech.org>
1999-03-20 20:10:19 +00:00
alc
1c18b849ca Eliminate a pointless TLB flush from the SMP idle loop.
Submitted by:	Luoqi Chen <luoqi@watermarkgroup.com>
Reviewed by:	"John S. Dyson" <toor@dyson.iquest.net>
1999-03-20 18:44:13 +00:00
dcs
70ba7a32ce Revert bootinfo to 1.4 and use a different solution to NULL m_args
instead (don't copy).
1999-03-20 14:13:09 +00:00
foxfair
bde5fa25e5 Oops! forgot to introduce the src file in my last commit. 1999-03-20 13:23:48 +00:00
dcs
c032780b94 Fix a couple of nasty errors in the README. 1999-03-20 12:25:43 +00:00
foxfair
3344a9499e Supporting locale for Chinese Big5 completely. 1999-03-20 11:49:23 +00:00
des
fc7305ab3b Document net.inet.ip.fastforwarding, and the fact that it bypasses the
ipfirewall code.

Submitted by:	Ruslan Ermilov <ru@ucb.crimea.ua>
1999-03-20 10:25:40 +00:00
wes
0f81341182 Turn on PCI bus mastering in driver attach routine
to avoid hanging the system if the BIOS has not
initialized the interface.

PR:		10150
Reviewed by:	dg
1999-03-20 04:51:25 +00:00
billf
e371fa9cc6 mdoc fixes
PR:		docs/7864
Submitted by:	Yoshihiko OHTA <yohta@bres.tsukuba.ac.jp>
1999-03-20 04:46:58 +00:00
billf
d97d3d36b4 Use the proper mdoc macro
PR:		docs/9892
Submitted by:	Kazuo Horikawa <horikawa@jp.freebsd.org>
1999-03-20 04:26:57 +00:00
billf
94ad656948 security(1) doesn't exist, but security(7) does.
PR:		docs/10478
Submitted by:	Oliver Fromme <oliver.fromme@heim3.tu-clausthal.de>
1999-03-20 04:03:56 +00:00
kato
0e2ac47664 Sync with sys/i386/isa/if_ed.c revision 1.150. 1999-03-19 16:01:34 +00:00