18 years agoAdd KTR_TESTLOG and debug.ktr.testlogcnt, which issues three ktrlog() calls
Matthew Dillon [Wed, 7 Dec 2005 04:27:50 +0000 (04:27 +0000)]
Add KTR_TESTLOG and debug.ktr.testlogcnt, which issues three ktrlog() calls
in a row and allows one to measure the overhead of the KTR logging facility.

18 years agoAdd the globbing flag GLOB_PERIOD.
Simon Schubert [Wed, 7 Dec 2005 02:28:15 +0000 (02:28 +0000)]
Add the globbing flag GLOB_PERIOD.
This allows matching of filenames that starts with a dot.

18 years agoSwitch to cvs-1.12.13
Simon Schubert [Wed, 7 Dec 2005 01:16:30 +0000 (01:16 +0000)]
Switch to cvs-1.12.13

18 years agoAdd our READMEs to the new cvs import
Simon Schubert [Wed, 7 Dec 2005 00:39:02 +0000 (00:39 +0000)]
Add our READMEs to the new cvs import

18 years agoMerge from vendor branch CVS:
Simon Schubert [Wed, 7 Dec 2005 00:15:30 +0000 (00:15 +0000)]
Merge from vendor branch CVS:
Import a stripped down cvs-1.12.13

18 years agoImport a stripped down cvs-1.12.13
Simon Schubert [Wed, 7 Dec 2005 00:15:30 +0000 (00:15 +0000)]
Import a stripped down cvs-1.12.13

18 years agoEnhance ktrdump to generate relative timestamps in fractional microseconds,
Matthew Dillon [Tue, 6 Dec 2005 23:41:56 +0000 (23:41 +0000)]
Enhance ktrdump to generate relative timestamps in fractional microseconds,
add an option to merge all cpus into one log (-s), and locate the starting
point in the FIFO when dumping output.

18 years agoSynchronize the TSC between all cpus on startup and provide a sysctl,
Matthew Dillon [Tue, 6 Dec 2005 23:37:55 +0000 (23:37 +0000)]
Synchronize the TSC between all cpus on startup and provide a sysctl,
debug.ktr.resynchronize, which will (very expensively) resynchronize the
TSCs 10 times a second to reduce drift errors to manageable numbers.

The TSC on all the cpus for the purposes of ktrdump's ought to be
synchronizated within ~200ns of each other, assuming all cpus are running
at the same frequency.

This needs more work.  What we really need to do is calculate the drift
for each cpu and apply it dynamically.

18 years agoRevert last change and add toascii.c to the right variable.
Joerg Sonnenberger [Tue, 6 Dec 2005 17:49:22 +0000 (17:49 +0000)]
Revert last change and add toascii.c to the right variable.

18 years agotoascii(3) got lost during ctype conversion.
Joerg Sonnenberger [Tue, 6 Dec 2005 17:36:20 +0000 (17:36 +0000)]
toascii(3) got lost during ctype conversion.

18 years agominor style change
Sepherosa Ziehau [Tue, 6 Dec 2005 13:51:01 +0000 (13:51 +0000)]
minor style change

18 years agoremove duplicated `use'
Sepherosa Ziehau [Tue, 6 Dec 2005 13:48:49 +0000 (13:48 +0000)]
remove duplicated `use'

18 years agoThe new lockmgr() function requires spinlocks, not tokens. Take this
Matthew Dillon [Tue, 6 Dec 2005 04:03:56 +0000 (04:03 +0000)]
The new lockmgr() function requires spinlocks, not tokens.   Take this
opportunity to convert all use of tokens in SMB to spinlocks since they
are only used to wrap very low level operations.

Reported-by: "Adrian M. Nida" <nida@musc.edu>
18 years agoUse sh to run scripts instead of relying on their +x bit
Simon Schubert [Tue, 6 Dec 2005 02:22:23 +0000 (02:22 +0000)]
Use sh to run scripts instead of relying on their +x bit

18 years agodoreti and splz were improperly requiring that the MP lock be held in order
Matthew Dillon [Tue, 6 Dec 2005 02:02:24 +0000 (02:02 +0000)]
doreti and splz were improperly requiring that the MP lock be held in order
to process delayed FAST interrupts.  This could result in clock interrupts
getting delayed indefinitely when the MP lock was held by another cpu.
The delayed clock interrupts further resulted in clock-related issues such
as the system time running slow, and other problems.

Reported-by: Stefan Krueger <skrueger@meinberlikomm.de>
18 years agoDocument the nfs dirent conversion code. No functional changes.
Matthew Dillon [Mon, 5 Dec 2005 17:01:53 +0000 (17:01 +0000)]
Document the nfs dirent conversion code.  No functional changes.

18 years agoAdd an option -b which dumps the clean/dirty buffer cache RB trees for
Matthew Dillon [Mon, 5 Dec 2005 16:52:02 +0000 (16:52 +0000)]
Add an option -b which dumps the clean/dirty buffer cache RB trees for
each vnode.

18 years agoSync up misc work on the currently inactive syscall mapping library.
Matthew Dillon [Mon, 5 Dec 2005 16:48:22 +0000 (16:48 +0000)]
Sync up misc work on the currently inactive syscall mapping library.

18 years agoFix a bug in our RB_SCAN calls. A critical section is required to
Matthew Dillon [Mon, 5 Dec 2005 06:13:16 +0000 (06:13 +0000)]
Fix a bug in our RB_SCAN calls.  A critical section is required to
protect the RB tree against I/O completions.  Also do not abort a scan
if an I/O completion moves a buffer off the dirty list and onto the clean
list while we are trying to lock it.

There is a small chance that this bug could have resulted in dirty buffers
being left intact after being freed from the filesystem bitmap, which in
turn can cause filesystem corruption (dirbad and other panics).

Note that this was a DragonFly-only bug.

18 years agoAnsify function definitions.
Sascha Wildner [Mon, 5 Dec 2005 03:42:31 +0000 (03:42 +0000)]
Ansify function definitions.

Submitted-by: Alexey Slynko <slynko@tronet.ru>
18 years ago- Ansify function definitions.
Sascha Wildner [Mon, 5 Dec 2005 02:40:28 +0000 (02:40 +0000)]
- Ansify function definitions.

- Move function type on a line of its own.

- Minor style cleanup.

18 years agoSilence troff warning.
Sascha Wildner [Mon, 5 Dec 2005 02:22:51 +0000 (02:22 +0000)]
Silence troff warning.

18 years agoAdd DragonFly 1.2, 1.3.6 and 1.3.7. Remove 1.2.* (those have bug fixes only).
Sascha Wildner [Mon, 5 Dec 2005 02:22:08 +0000 (02:22 +0000)]
Add DragonFly 1.2, 1.3.6 and 1.3.7. Remove 1.2.* (those have bug fixes only).

18 years ago- Ansify function definitions.
Sascha Wildner [Mon, 5 Dec 2005 01:23:23 +0000 (01:23 +0000)]
- Ansify function definitions.

- Move function type on a line of its own.

- Remove __P().

- Minor style cleanup.

18 years agoUse DOSMAGIC from <sys/diskmbr.h>.
Sascha Wildner [Mon, 5 Dec 2005 01:16:47 +0000 (01:16 +0000)]
Use DOSMAGIC from <sys/diskmbr.h>.

18 years ago- Ansify function definitions.
Sascha Wildner [Mon, 5 Dec 2005 01:04:01 +0000 (01:04 +0000)]
- Ansify function definitions.

- Move function type on a line of its own.

- Remove __P().

- Minor style cleanup.

- Remove (void) casts for unused return values.

18 years agoAnsify function definitions.
Sascha Wildner [Mon, 5 Dec 2005 00:58:50 +0000 (00:58 +0000)]
Ansify function definitions.

18 years ago- Ansify function definitions.
Sascha Wildner [Mon, 5 Dec 2005 00:47:57 +0000 (00:47 +0000)]
- Ansify function definitions.

- Remove (void) casts for unused return values.

- Add prototypes.

- Fix some warnings.

- Fix some minor style(9) issues.

In-collaboration-with: Alexey Slynko <slynko@tronet.ru>

18 years agoInclude <time.h> to silence some warnings.
Sascha Wildner [Sun, 4 Dec 2005 23:41:06 +0000 (23:41 +0000)]
Include <time.h> to silence some warnings.

18 years ago- Ansify function definitions.
Sascha Wildner [Sun, 4 Dec 2005 23:25:40 +0000 (23:25 +0000)]
- Ansify function definitions.

- Remove (void) casts for unused return values.

- Remove P().

- Fix some warnings.

In-collaboration-with: Alexey Slynko <slynko@tronet.ru>

18 years agoUpdate more default cshrc/profiles with new paths.
Matthew Dillon [Sun, 4 Dec 2005 22:29:30 +0000 (22:29 +0000)]
Update more default cshrc/profiles with new paths.

18 years agoRequire pkgsrc to be installed, include pkgsrc bootstrap binaries and mk.conf
Matthew Dillon [Sun, 4 Dec 2005 21:24:13 +0000 (21:24 +0000)]
Require pkgsrc to be installed, include pkgsrc bootstrap binaries and mk.conf
on the ISO, and provide make targets to install pkgsrc, mk.conf, and the
bootstrap binaries on the local machine.

18 years agoAdd /usr/pkg/[s]bin to /bin/sh's default path and login.conf's default path.
Matthew Dillon [Sun, 4 Dec 2005 20:32:51 +0000 (20:32 +0000)]
Add /usr/pkg/[s]bin to /bin/sh's default path and login.conf's default path.

18 years agoAdd support for DLink 528(T) Gigabit cards.
Matthew Dillon [Sun, 4 Dec 2005 18:07:49 +0000 (18:07 +0000)]
Add support for DLink 528(T) Gigabit cards.

Submitted-by: Gary Allan <dragonfly@gallan.plus.com>
Taken-from: FreeBSD

18 years agoFix a bogus proc0 test that is no longer accurate. This should allow the
Matthew Dillon [Sat, 3 Dec 2005 21:01:03 +0000 (21:01 +0000)]
Fix a bogus proc0 test that is no longer accurate.  This should allow the
smb module to be loaded.

Reported-by: Adrian Nida <nida@musc.edu>
18 years agoReduce SCSI_DELAY in GENERIC from 15 seconds to 5 seconds.
Matthew Dillon [Sat, 3 Dec 2005 18:32:32 +0000 (18:32 +0000)]
Reduce SCSI_DELAY in GENERIC from 15 seconds to 5 seconds.

Requested-by: many
18 years agoUpdate to openssl-0.9.8a and regen man pages
Simon Schubert [Sat, 3 Dec 2005 14:06:17 +0000 (14:06 +0000)]
Update to openssl-0.9.8a and regen man pages

18 years agoUpdate our READMEs for OpenSSL
Simon Schubert [Sat, 3 Dec 2005 14:00:43 +0000 (14:00 +0000)]
Update our READMEs for OpenSSL

18 years agoMerge from vendor branch OPENSSL:
Simon Schubert [Sat, 3 Dec 2005 13:48:16 +0000 (13:48 +0000)]
Merge from vendor branch OPENSSL:
Import OpenSSL 0.9.8a

18 years agoImport OpenSSL 0.9.8a
Simon Schubert [Sat, 3 Dec 2005 13:48:16 +0000 (13:48 +0000)]
Import OpenSSL 0.9.8a

18 years agoRemove some files we don't need from CVS's sources
Simon Schubert [Sat, 3 Dec 2005 12:11:44 +0000 (12:11 +0000)]
Remove some files we don't need from CVS's sources

18 years agoMerge from vendor branch CVS:
Simon Schubert [Sat, 3 Dec 2005 12:11:44 +0000 (12:11 +0000)]
Merge from vendor branch CVS:
Remove some files we don't need from CVS's sources

18 years agoRemove some files we don't need from CVS's sources
Simon Schubert [Sat, 3 Dec 2005 12:11:44 +0000 (12:11 +0000)]
Remove some files we don't need from CVS's sources

18 years agoSet POSIX feature test macros to the correct value as mendated by SUS.
Joerg Sonnenberger [Sat, 3 Dec 2005 02:19:52 +0000 (02:19 +0000)]
Set POSIX feature test macros to the correct value as mendated by SUS.

18 years agoFix a process exit/wait race. The wait*() code was making a faulty test
Matthew Dillon [Fri, 2 Dec 2005 22:02:20 +0000 (22:02 +0000)]
Fix a process exit/wait race.  The wait*() code was making a faulty test
to determine that the exiting process had completely exited and was no
longer running.  Testing the TDF_RUNNING flag is insufficient because an
exiting process may block at various points after becoming a Zombie, but
before it deschedules itself for the last time.

Add a new flag, TDF_EXITING, which is set just prior to a thread descheduling
itself for the last time.  The reaper then checks that TDF_EXITING is set
and TDF_RUNNING is clear.

Fix a second faulty test in both the exit and the thread cpu migration
code.  If a thread gets preempted, TDF_RUNNING will be temporarily cleared,
so testing TDF_RUNNING is not sufficient by itself.  We must also test
the TDF_PREEMPT_LOCK flag to be sure that it is also clear.

So the grand result is that to really be sure the zombie process has been
completely descheduled and is no longer running or will ever run again,
the TDF_EXITING, TDF_RUNNING, *and* TDF_PREEMPT_LOCK flags must be tested
and all must be clear except for TDF_EXITING.

It should be noted that TDF_RUNNING on the previously scheduled process
is always cleared AFTER we have context-switched into the next scheduled
thread or the idle thread, so seeing a cleared TDF_RUNNING along with the
appropriate state for the other flags does in fact guarentee that the thread
in question is no longer using its stack in any way.

Reported-by: Stefan Krueger <skrueger@meinberlikomm.de>
18 years agoFix a bug in the big tsleep/wakeup cleanup commit. When stopping a
Matthew Dillon [Fri, 2 Dec 2005 19:31:49 +0000 (19:31 +0000)]
Fix a bug in the big tsleep/wakeup cleanup commit.  When stopping a
sleeping process in psignal, we must wakeup() the parent process that
might be waiting in a wait4().

Reported-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>
18 years agocred may be NULL due to a prior error code. crhold() handles NULL creds,
Matthew Dillon [Fri, 2 Dec 2005 17:29:45 +0000 (17:29 +0000)]
cred may be NULL due to a prior error code.  crhold() handles NULL creds,
but crfree() does not.  Check for NULL.

Reported-by: Stefan Krueger <skrueger@meinberlikomm.de>
18 years agoChange the initial path from /bin:/usr/bin to /bin:/usr/bin:/sbin:/usr/sbin
Matthew Dillon [Fri, 2 Dec 2005 17:16:10 +0000 (17:16 +0000)]
Change the initial path from /bin:/usr/bin to /bin:/usr/bin:/sbin:/usr/sbin
when no PATH environment variable is present.  This only really effects
boot -s, and not having [/usr]/sbin has always been an annoyance.

Requested-by: many
18 years agoDo not hold the ifnet serializer when entering tsleep() in the PPP TUN
Matthew Dillon [Thu, 1 Dec 2005 21:15:54 +0000 (21:15 +0000)]
Do not hold the ifnet serializer when entering tsleep() in the PPP TUN
interface code.  This can deadlock the network protocol threads.

Reported-by: Stefan Krueger
18 years agoFor MPSAFE syscall operation, CURSIG->__cursig->issignal() may be called
Matthew Dillon [Thu, 1 Dec 2005 18:54:20 +0000 (18:54 +0000)]
For MPSAFE syscall operation, CURSIG->__cursig->issignal() may be called
without the MP lock held.  At the moment issignal() needs to be MP locked
so wrap the function in the lock.  Note that issignal() is only called if
there is a signal pending so this will not disrupt kern.syscall_mpsafe

18 years agoThe primary mbuf cluster management code needs to be made MPSAFE since
Matthew Dillon [Thu, 1 Dec 2005 18:40:56 +0000 (18:40 +0000)]
The primary mbuf cluster management code needs to be made MPSAFE since
m_free() is now MPSAFE.  This involves using atomic_*() increment and
decrement for the mbuf cluster ref count and using a serializer if there
is a potential for a double-free (if the ref count is 2 or greater).  The
common code path will tend not to need the serializer unless the interface
is being tapped.

Reported-by: Peter Avalos <pavalos@theshell.com>
18 years agotsleep_interlock() must be called prior to testing the serializer lock
Matthew Dillon [Thu, 1 Dec 2005 18:34:09 +0000 (18:34 +0000)]
tsleep_interlock() must be called prior to testing the serializer lock
state, otherwise a serializer wakeup on another cpu may race our tsleep().

Reported-by: Emiel Kollof <coolvibe@hackerheaven.org>
18 years agoGet rid of the p_stat SZOMB state. p_stat can now only be SIDL, SSLEEP, or
Matthew Dillon [Thu, 1 Dec 2005 18:30:13 +0000 (18:30 +0000)]
Get rid of the p_stat SZOMB state.  p_stat can now only be SIDL, SSLEEP, or
SRUN.  Instead mark zombie processes with a new flag, P_ZOMBIE.  The eproc
code will convert P_ZOMBIE into SZOMB for /bin/ps.

This further isolates the tsleep code from the process status and fixes
a panic when a process in SZOMB tried to tsleep().

Reported-by: Stefan Krueger <skrueger@meinberlikomm.de>
18 years agoFix comment.
Sascha Wildner [Wed, 30 Nov 2005 14:48:54 +0000 (14:48 +0000)]
Fix comment.

18 years agounbreak LINT building
Sepherosa Ziehau [Wed, 30 Nov 2005 13:35:24 +0000 (13:35 +0000)]
unbreak LINT building

18 years ago- Fix wrong table size (which resulted in the descriptions being off by
Sascha Wildner [Wed, 30 Nov 2005 08:25:07 +0000 (08:25 +0000)]
- Fix wrong table size (which resulted in the descriptions being off by
  one in the menu).

- Change description of sysid #165 from 'FreeBSD' to 'DF/FBSD' since we
  share it with FreeBSD.

18 years agoupgrade_etc: remove altqd and network scripts too, which have been around
YONETANI Tomokazu [Wed, 30 Nov 2005 06:23:52 +0000 (06:23 +0000)]
upgrade_etc: remove altqd and network scripts too, which have been around
for a while but removed in CVS HEAD.

18 years agoJumbo mbuf mangement's extbuf callbacks must be MPSAFE. Use a serializer
Matthew Dillon [Tue, 29 Nov 2005 19:56:56 +0000 (19:56 +0000)]
Jumbo mbuf mangement's extbuf callbacks must be MPSAFE.  Use a serializer
to accomplish the task.  This is a workaround until we create a generic
mbuf management API for jumbo frames.

18 years agoipw (is the only driver that) needs a working interrupt to perform
Matthew Dillon [Tue, 29 Nov 2005 19:55:02 +0000 (19:55 +0000)]
ipw (is the only driver that) needs a working interrupt to perform
initialization.  This means we have to release the serializer across
the tsleep.  The code must additionally be MP Safe.

Reported-by: Johannes Hofmann <Johannes.Hofmann@gmx.de>
18 years agoProperly serialize IPW.
Matthew Dillon [Tue, 29 Nov 2005 17:15:56 +0000 (17:15 +0000)]
Properly serialize IPW.

Reported-by: Johannes Hofmann <Johannes.Hofmann@gmx.de>
With-help-from: Hiten Pandya <hmp@backplane.com>

18 years agoSync zoneinfo database with tzdata2005o from elsie.
Sascha Wildner [Tue, 29 Nov 2005 08:54:32 +0000 (08:54 +0000)]
Sync zoneinfo database with tzdata2005o from elsie.

asia:           7.86 -> 7.88
northamerica:   7.80 -> 7.82
southamerica:   7.62 -> 7.63

From the announcement:

"These incorporate the Georgia, Cuba, Nicaragua, and Jordan changes
 circulated over the past two weeks by Paul Eggert on the time zone
 mailing list."

18 years agoFix mdoc errors exising at least since the beginning of time (1991 import).
Simon Schubert [Mon, 28 Nov 2005 17:43:46 +0000 (17:43 +0000)]
Fix mdoc errors exising at least since the beginning of time (1991 import).

Spotted-by: corecode
mdoc-clue: swildner

18 years agoMake all network interrupt service routines MPSAFE part 1/3.
Matthew Dillon [Mon, 28 Nov 2005 17:13:47 +0000 (17:13 +0000)]
Make all network interrupt service routines MPSAFE part 1/3.

Replace the critical section that was previously used to serialize access
with the LWKT serializer.  Integrate the serializer into the IFNET structure.
Note that kern.intr_mpsafe must be set to 1 for network interrupts to actually
run MPSAFE.  Also note that any interrupts shared with othre non-MP drivers
will cause all drivers on that interrupt to run with the Big Giant Lock.

Network interrupt - Each network driver then simply passes that serializer
to bus_setup_intr() so only a single serializer is required to process the
entire interrupt path.  LWKT serialization support is already 100% integrated
into the interrupt subsystem so it will already be held as of when the
registered interrupt procedure is called.

Ioctl and if_* functions - All callers of if_* functions (such as if_start,
if_ioctl, etc) now obtain the IFNET serializer before making the call.  Thus
all of these entry points into the driver will now be serialized.

if_input - All code that calls if_input now ensures that the serializer
is held.  It will either already be held (when called from a driver), or
the serializer will be wrapped around the call.  When packets are forwarded
or bridged between interfaces, the target interface serializer will be
dropped temporarily to avoid a deadlock.

Device Driver access - dev_* entry points into certain pseudo-network
devices now obtain and release the serializer.  This had to be done on
a device-by-device basis (but there are only a few such devices).

Thanks to several people for helping test the patch, in particular
Sepherosa Ziehau.

18 years agotcp_syncache.cache_limit is a per-cpu limit, reserve enough space for all
Matthew Dillon [Sat, 26 Nov 2005 20:54:34 +0000 (20:54 +0000)]
tcp_syncache.cache_limit is a per-cpu limit, reserve enough space for all
cpus using it to hit the limit.

Reported-by: Peter Avalos <pavalos@theshell.com>
18 years agoIn unregister_int():
Sepherosa Ziehau [Sat, 26 Nov 2005 14:36:21 +0000 (14:36 +0000)]
In unregister_int():
- Don't update i_mplock_required, if the unregistering intr record is not found
- Use a local variable `rec0' to test whether after the unregistering there
  are still intr records which require MP lock.  `rec' can't be reused here,
  since `rec' is the intr record to free, if it is reused in this test, *wrong*
  intr record will be freed

18 years agoFix a mbuf statistics bug.
Matthew Dillon [Fri, 25 Nov 2005 17:52:53 +0000 (17:52 +0000)]
Fix a mbuf statistics bug.

Reported-by: Tomaz Borstnar and numerous others
18 years agoAssert that he mbuf type is correct rather then blinding setting m_type.
Matthew Dillon [Fri, 25 Nov 2005 17:16:23 +0000 (17:16 +0000)]
Assert that he mbuf type is correct rather then blinding setting m_type.

18 years ago- Ansify function definitions.
Sascha Wildner [Fri, 25 Nov 2005 00:58:52 +0000 (00:58 +0000)]
- Ansify function definitions.

- Move function type on a separate line.

18 years ago- Ansify function definitions.
Sascha Wildner [Fri, 25 Nov 2005 00:32:49 +0000 (00:32 +0000)]
- Ansify function definitions.

- Move function type on a separate line.

18 years ago- Ansify function definitions.
Sascha Wildner [Thu, 24 Nov 2005 23:42:54 +0000 (23:42 +0000)]
- Ansify function definitions.

- Move function type on a separate line.

- Minor style(9) cleanup.

18 years agoAdd the ips driver to GENERIC.
Matthew Dillon [Thu, 24 Nov 2005 23:01:58 +0000 (23:01 +0000)]
Add the ips driver to GENERIC.

Requested-by: Tomaz Borstnar <tomaz.borstnar@over.net>
18 years ago- Ansify function definitions.
Sascha Wildner [Thu, 24 Nov 2005 22:23:03 +0000 (22:23 +0000)]
- Ansify function definitions.

- Move function type on a separate line.

18 years agoMove individual parameter comments into the general comment.
Sascha Wildner [Thu, 24 Nov 2005 17:18:30 +0000 (17:18 +0000)]
Move individual parameter comments into the general comment.

Submitted-by: Alexey Slynko <slynko@tronet.ru>
18 years ago- Note that 'make upgrade' not only upgrades /etc but the whole system.
Sascha Wildner [Thu, 24 Nov 2005 16:33:03 +0000 (16:33 +0000)]
- Note that 'make upgrade' not only upgrades /etc but the whole system.

- Add some words of warning about running 'make upgrade' before
  'make installworld'.

18 years agoFix LINT kernel; spin_lock function definitions have been split into
YONETANI Tomokazu [Thu, 24 Nov 2005 02:16:17 +0000 (02:16 +0000)]
Fix LINT kernel; spin_lock function definitions have been split into
<sys/spinlock2.h>, so one has to explicitly #include it to use these
functions now.

18 years agoFix some minor bugs in lwkt_serialize_handler*() which upcoming code will
Matthew Dillon [Wed, 23 Nov 2005 22:54:22 +0000 (22:54 +0000)]
Fix some minor bugs in lwkt_serialize_handler*() which upcoming code will
depend on.

18 years agoRemove forgotten K&R parameter declaration.
Sascha Wildner [Wed, 23 Nov 2005 08:55:59 +0000 (08:55 +0000)]
Remove forgotten K&R parameter declaration.

Submitted-by: Alexey Slynko <slynko@tronet.ru>
18 years agoAdd an XXX comment to document that the initializations are for silencing
Sascha Wildner [Wed, 23 Nov 2005 08:51:56 +0000 (08:51 +0000)]
Add an XXX comment to document that the initializations are for silencing
GCC warnings.

Requested-by: joerg
Submitted-by: Alexey Slynko <slynko@tronet.ru>
18 years agoRemove prototypes for hidden functions. We'll deal with that later
Sascha Wildner [Wed, 23 Nov 2005 08:50:34 +0000 (08:50 +0000)]
Remove prototypes for hidden functions. We'll deal with that later

Requested-by: joerg
Submitted-by: Alexey Slynko <slynko@tronet.ru>
18 years agoAdd a lwkt_serialize_try() API function.
Matthew Dillon [Wed, 23 Nov 2005 01:27:55 +0000 (01:27 +0000)]
Add a lwkt_serialize_try() API function.

18 years agoMove ef.4 from sys/net/ef to share/man/man4.
Sascha Wildner [Tue, 22 Nov 2005 09:36:58 +0000 (09:36 +0000)]
Move ef.4 from sys/net/ef to share/man/man4.

18 years agoConsolidate the initialization of td_mpcount into lwkt_init_thread().
Matthew Dillon [Tue, 22 Nov 2005 08:41:06 +0000 (08:41 +0000)]
Consolidate the initialization of td_mpcount into lwkt_init_thread().

Fix a bug in kern.trap_mpsafe, the mplock was not being properly released
when operating in vm86 mode (when kern.trap_mpsafe was set to 1).

18 years agoDo not try to set up hardware vectors for software interrupts.
Matthew Dillon [Tue, 22 Nov 2005 06:13:42 +0000 (06:13 +0000)]
Do not try to set up hardware vectors for software interrupts.

18 years agoDocument the fact that the vm86 instruction emulator is MPSAFE.
Matthew Dillon [Tue, 22 Nov 2005 04:09:38 +0000 (04:09 +0000)]
Document the fact that the vm86 instruction emulator is MPSAFE.

18 years agoRemove unused label.
Matthew Dillon [Tue, 22 Nov 2005 03:58:34 +0000 (03:58 +0000)]
Remove unused label.

18 years agoAdd a sysctl and tunable kern.trap_mpsafe which allows some traps to run
Matthew Dillon [Tue, 22 Nov 2005 01:52:25 +0000 (01:52 +0000)]
Add a sysctl and tunable kern.trap_mpsafe which allows some traps to run
without having to hold the MP lock.  The more sophisticated traps, such as
a VM fault, will still obtain the MP lock.  The sysctl is disabled (0)
by default.

The main thing effected by turning this on is T_ASTFLT, which is used to
switch away from a user process to either a kernel thread (non preemptively)
or another user process.  When enabled, switching from a user process to
a kernel thread and back again will not require the MP lock.  However, the
real benefit will not be realized until more kernel threads run without the
MP lock.

18 years agoWrap psignal() and a few other places that require the MP lock when
Matthew Dillon [Tue, 22 Nov 2005 00:49:18 +0000 (00:49 +0000)]
Wrap psignal() and a few other places that require the MP lock when
events occur while returning from a system call.

18 years agoFix the design of ifq_dequeue/altq_dequeue by adding an mbuf pointer and
Matthew Dillon [Tue, 22 Nov 2005 00:24:35 +0000 (00:24 +0000)]
Fix the design of ifq_dequeue/altq_dequeue by adding an mbuf pointer and
requiring that a polled mbuf be passed as an argument to the dequeue
function.  Assert that the passed argument matches the mbuf that is actually
dequeued.  Also remove assignments of the return value from ifq_dequeue()
in such cases which implied that the mbuf might be different when, in fact,
it had better not be.

18 years agoFollowup to last commit, cleanup some SMP/UP conditionals.
Matthew Dillon [Mon, 21 Nov 2005 22:54:16 +0000 (22:54 +0000)]
Followup to last commit, cleanup some SMP/UP conditionals.

18 years agoAdd a sysctl and tunable kern.syscall_mpsafe which allows system calls
Matthew Dillon [Mon, 21 Nov 2005 21:59:52 +0000 (21:59 +0000)]
Add a sysctl and tunable kern.syscall_mpsafe which allows system calls
marked MPSAFE in syscalls.master to run without the MP lock.  This sysctl
is disabled (0) by default.

To make this work the userland scheduler's passive release / acquire code
had to be made MPSAFE.  The release code accomplishes this by using
atomic_*() ops to manipulate curprocmask and rdyprocmask.  The acquisition
code currently obtains the MP lock unconditionally.  The userland scheduler
really need to be rewritten to be cpu-localized.

Only a few system calls, such as getuid(), are currently marked MPSAFE.
No matter how a system call is marked, the MP lock is obtained
unconditionally when ktracing or signaling.

18 years agoStart working on making the printf() path MPSAFE, because it isn't at the
Matthew Dillon [Mon, 21 Nov 2005 21:56:14 +0000 (21:56 +0000)]
Start working on making the printf() path MPSAFE, because it isn't at the
moment.  Ensure that index computations on the message buffer cannot cause
a crash if multiple cpus are writing to the message buffer at the same time.

18 years agoAdd a sysctl and tunable kern.intr_mpsafe which allows threaded interrupts
Matthew Dillon [Mon, 21 Nov 2005 21:50:26 +0000 (21:50 +0000)]
Add a sysctl and tunable kern.intr_mpsafe which allows threaded interrupts
marked INTR_MPSAFE to run without the MP lock.  This sysctl is disabled (0)
by default.

18 years agoAdd a thread flag, TDF_MPSAFE, which is used during thread creation to
Matthew Dillon [Mon, 21 Nov 2005 18:49:27 +0000 (18:49 +0000)]
Add a thread flag, TDF_MPSAFE, which is used during thread creation to
determine whether the thread should initially be holding the MP lock or not.

18 years agoRemove inthand_add() and inthand_remove(). Instead, register_int() and
Matthew Dillon [Mon, 21 Nov 2005 18:02:46 +0000 (18:02 +0000)]
Remove inthand_add() and inthand_remove().  Instead, register_int() and
unregister_int() are called directly and the machine level vector setup and
teardown ABI calls are made from register_int() and unregister_int().

18 years agoThere are two possible causes which will make vr(4) stall:
Sepherosa Ziehau [Mon, 21 Nov 2005 13:20:29 +0000 (13:20 +0000)]
There are two possible causes which will make vr(4) stall:
in vr_start(), if vr_encap() fails:
1) vr_start() will set IFF_OACTIVE.  If the packet causing vr_encap() to fail
   is the only packet pending to be downloaded to device, vr(4) will stall,
   * No more packets can be transfered, because IFF_OACTIVE is turned on
   * Except for vr_{init, stop}(), vr_txeoc() is the only function that can
     turn off IFF_OACTIVE.  It is triggered by "frame download completing"
     interrupt.  But this kind of interrupt will not be generated here, since
     there are no other packets pending to be downloaded.
2) vr_start() will skip TX head and tail pointer updating, which leaks all
   previous successfully encapsulated TX chains.

Following fixes are applied:
- Allocate chunk of memory in vr_attch() to reduce the failure chance of
  vr_encap().  This will also reduce the load of mbuf allocation system
- Use indexes instead of pointers for TX chain processing.  This can save us
  some spaces in every vr_chain
- Update Tx head and tail indexes when there are successfully encapsultaed
  packets pending to be downloaded to device, even if vr_encap() fails for
  some packets
- Cache TX buffer and next TX descriptor's physical address in vr_chain, since
  these addresses are fixed during the life time of vr(4)

Other stuffs:
- Use M_ZERO flag in memory allocation instead of calling bzero() later
- Remove (char *) cast in bzero()
- Minor style changes

Reported-by: corecode
With-helps-form: joerg
Reviewed-by: joerg, submit@
18 years agoAdd XXX comments to document dubious random number acquisition technique.
Sascha Wildner [Sun, 20 Nov 2005 14:58:40 +0000 (14:58 +0000)]
Add XXX comments to document dubious random number acquisition technique.

18 years ago- Ansify function definitions.
Sascha Wildner [Sun, 20 Nov 2005 13:24:36 +0000 (13:24 +0000)]
- Ansify function definitions.

- Add prototypes.

- Fix some warnings.

In-collaboration-with: Alexey Slynko <slynko@tronet.ru>

18 years agoPrefer m_getcl() to EPIC_MGETCLUSTER() which uses MGETHDR()+MCLGET()
Sepherosa Ziehau [Sun, 20 Nov 2005 13:08:35 +0000 (13:08 +0000)]
Prefer m_getcl() to EPIC_MGETCLUSTER() which uses MGETHDR()+MCLGET()

18 years ago- Ansify function definitions.
Sascha Wildner [Sun, 20 Nov 2005 12:37:49 +0000 (12:37 +0000)]
- Ansify function definitions.

- Fix some warnings.

- In function definitions, move the type on a line of its own.

- Perform some style(9) cleanup.

- Remove (void) casts for discarded return values.

- Remove parameter names from function prototypes.

In-collaboration-with: Alexey Slynko <slynko@tronet.ru>

18 years ago- Remove unnecessary ETHER_* macros
Sepherosa Ziehau [Sun, 20 Nov 2005 11:59:54 +0000 (11:59 +0000)]
- Remove unnecessary ETHER_* macros
- Utilize pcidevs.h for PCI device id and vendor id
- Prefer PCIR_BAR() macro to PCIR_MAPS
- Use common device probing style, epic_devtype() is merged
- Nuke epic_softc_t.cardvend, since it is only used in epic_common_attach().
  Move epic_softc_t.cardid to the end of the struct
- Minor style changes