7929 Commits

Author SHA1 Message Date
jhb
370523c244 - Proc locking.
- Use NULL instead of 0.
2001-01-24 00:23:30 +00:00
jhb
0717c33b64 Use selrecord() instead of doing the work ourselves. 2001-01-24 00:06:26 +00:00
jhb
b5d0418fc1 Make the device name in an isa_device a const char * instead of a char *
to silence cast-qual warnings.
2001-01-24 00:05:13 +00:00
jhb
a98f3e67f7 Use queue macros. 2001-01-24 00:01:42 +00:00
jhb
80649f2bc1 Proc locking. 2001-01-23 23:59:38 +00:00
jhb
f5fbc62142 - Use 'p' instead of 'curproc' for the namei lookup as this is what
other image activators use.
- Proc locking.
2001-01-23 23:59:30 +00:00
jasone
ec55088093 Move most of sys/mutex.h into kern/kern_mutex.c, thereby making the mutex
inline functions non-inlined.  Hide parts of the mutex implementation that
should not be exposed.

Make sure that WITNESS code is not executed during boot until the mutexes
are fully initialized by SI_SUB_MUTEX (the original motivation for this
commit).

Submitted by:	peter
2001-01-21 22:34:43 +00:00
des
b3c27aaaf7 First step towards an MP-safe zone allocator:
- have zalloc() and zfree() always lock the vm_zone.
 - remove zalloci() and zfreei(), which are now redundant.

Reviewed by:	bmilekic, jasone
2001-01-21 22:23:11 +00:00
jake
937122ae6d Make intr_nesting_level per-process, rather than per-cpu. Setup
interrupt threads to run with it always >= 1, so that malloc can
detect M_WAITOK from "interrupt" context.  This is also necessary
in order to context switch from sched_ithd() directly.

Reviewed By:	peter
2001-01-21 19:25:07 +00:00
peter
0f92919216 Remove APIC_INTR_DIAGNOSTIC - this has been disabled for some time now.
Remove some leftovers of removed SMP options.
2001-01-21 07:54:10 +00:00
jasone
24d53563ed Remove MUTEX_DECLARE() and MTX_COLD. Instead, postpone full mutex
initialization until after malloc() is safe to call, then iterate through
all mutexes and complete their initialization.

This change is necessary in order to avoid some circular bootstrapping
dependencies.
2001-01-21 07:52:20 +00:00
peter
db586afb8b Remove the MAYBE_PANIC and GUARD_CPU macros - unused. 2001-01-21 07:26:31 +00:00
jake
c45422f874 Remove the per-cpu pages used for copy and zero-ing pages of memory
for SMP; just use the same ones as UP.  These weren't used without
holding Giant anyway, and the routines that use them would have to
be protected from pre-emption to avoid migrating cpus.
2001-01-21 06:50:03 +00:00
jake
b2dd5fbcb8 Implement optimized PCPU accessors. These are necessary to support a
pre-emptable kernel.  For variables of size 4 bytes or less they compile
to a single instruction, which does not allow a process to migrate cpus
in the middle, and get the value for the "wrong" cpu.
2001-01-21 03:11:03 +00:00
asmodai
91ea9f4b4a Document some more options.
Apologies to Bruce for not yet cleaning it up in sections.  Coming
soon.
2001-01-20 12:34:53 +00:00
jake
19d6e5bb42 Rename the ASSYM MTX_RECURSE to MTX_RECURSECNT in order to not conflict
with the flag of the same name.
2001-01-20 06:07:36 +00:00
jake
cf5b2e3c3b Simplify the i386 asm MTX_{ENTER,EXIT} macros to just call the
appropriate function, rather than doing a horse-and-buggy
acquire.  They now take the mutex type as an arg and can be
used with sleep as well as spin mutexes.
2001-01-20 04:14:25 +00:00
jake
ea36052df5 - Make npx_intr INTR_MPSAFE and move acquiring Giant into the
function itself.
- Remove a hack to allow acquiring Giant from the npx asm trap
  vector.
2001-01-20 02:30:58 +00:00
wollman
0fbfe85a3c Finish deprecating <sys/select.h> in favor of <sys/selinfo.h> in kernel code. 2001-01-20 02:24:07 +00:00
peter
a7798349e0 Sync with GENERIC - drop I386_CPU 2001-01-19 14:23:51 +00:00
peter
802c028309 Convert apm from a bogus 'count' into a plain option. Clean out some
other cruft from the files.alpha and files.ia64 that were related to this.
2001-01-19 14:09:54 +00:00
peter
91d167d573 Zap unused #include "apm.h" 2001-01-19 13:56:31 +00:00
peter
0d5e420364 Use #ifdef DEV_NPX from opt_npx.h instead of #if NNPX > 0 from npx.h 2001-01-19 13:19:02 +00:00
peter
e40f66ac02 EEK! vm86bios.s has got #if NNPX > 0 code without a corresponding
#include "npx.h" - the code has been dead for a while and vm86 calls
have not been saving FPU context it seems.
2001-01-19 13:14:09 +00:00
peter
e3a8396adb At great personal risk to my sanity, turn off COMPAT_OLDISA and the
two drivers that depend on it - ie and le.  The compat code has not been
disabled.
2001-01-19 13:06:37 +00:00
peter
bf4a9b1ec8 Add missing twe (3ware) and ahb (adaptec 174x) devices (!) 2001-01-19 13:04:58 +00:00
jhb
655836bbff Add in a space that got lost in the previous commit in some debugging code
so that '&' becomes a binary operator and not a unary operator.
2001-01-19 11:43:13 +00:00
peter
7544f1ff1f EEK! I missed a couple of places with the 24->32 interrupt change. 2001-01-19 10:55:13 +00:00
peter
a8f714ad89 Remove #defines for the old lock function names and spl0/splz 2001-01-19 10:52:47 +00:00
peter
fd76d2808d Remove reference to splz_unpend - it is long gone. 2001-01-19 10:51:13 +00:00
peter
382587463c Catch a few alternative names for the syscall entry frame, eg: post-ELF
and int $0x80 entry methods.
2001-01-19 10:49:20 +00:00
peter
c0bc1dba91 apic_itrace_splz[] is unused 2001-01-19 10:48:35 +00:00
peter
feb7598906 Remove the now-empty ipl_funcs.c file on all platforms. 2001-01-19 09:59:56 +00:00
peter
940f70431f Remove the static splXXX functions and replace them by static __inline
stubs.  Remove the xxx_imask variables which have been all but gone for
a while.
2001-01-19 09:57:29 +00:00
peter
5a03eacf6b Fix a warning due to missing prototype. 2001-01-19 09:10:14 +00:00
peter
a7a178dcac Fix a warning (the prototypes probably shouldn't be so over-zealously
#ifdef'ed though)
2001-01-19 09:07:16 +00:00
bmilekic
37decc93f5 Implement MTX_RECURSE flag for mtx_init().
All calls to mtx_init() for mutexes that recurse must now include
the MTX_RECURSE bit in the flag argument variable. This change is in
preparation for an upcoming (further) mutex API cleanup.
The witness code will call panic() if a lock is found to recurse but
the MTX_RECURSE bit was not set during the lock's initialization.

The old MTX_RECURSE "state" bit (in mtx_lock) has been renamed to
MTX_RECURSED, which is more appropriate given its meaning.

The following locks have been made "recursive," thus far:
eventhandler, Giant, callout, sched_lock, possibly some others declared
in the architecture-specific code, all of the network card driver locks
in pci/, as well as some other locks in dev/ stuff that I've found to
be recursive.

Reviewed by: jhb
2001-01-19 01:59:14 +00:00
jhb
2c69cab2ed Protect p_stat and p_oncpu with sched_lock in forward_signal(). 2001-01-18 08:19:25 +00:00
jhb
a3a305a2b4 - Sort of lie and say that %eax is an output only and not an input for the
non-386 atomic_load_acq().  %eax is an input since its value is used in
  the cmpxchg instruction, but we don't care what value it is, so setting
  it to a specific value is just wasteful.  Thus, it is being used without
  being initialized as the warning stated, but it is ok for it to be used
  because its value isn't important.  Thus, we are only sort of lying when
  we say it is an output only operand.
- Add "cc" to the clobber list for atomic_load_acq() since the cmpxchgl
  changes ZF.
2001-01-17 02:15:11 +00:00
peter
8f1c684897 The stallion.c pci driver is broken. Emit a warning if compiling LINT. 2001-01-17 01:21:08 +00:00
des
60153a06a7 Change NSWAPDEV to something else than the default value. 2001-01-16 10:48:58 +00:00
phk
d147a07119 These files have been on deathrow for a couple of months, no appeal. 2001-01-16 10:01:56 +00:00
peter
134cd3c07e Stop doing runtime checking on i386 cpus for cpu class. The cpu is
slow enough as it is, without having to constantly check that it really
is an i386 still.  It was possible to compile out the conditionals for
faster cpus by leaving out 'I386_CPU', but it was not possible to
unconditionally compile for the i386.  You got the runtime checking whether
you wanted it or not.  This makes I386_CPU mutually exclusive with the
other cpu types, and tidies things up a little in the process.

Reviewed by:  alfred, markm, phk, benno, jlemon, jhb, jake, grog, msmith,
              jasone, dcs, des (and a bunch more people who encouraged it)
2001-01-16 09:10:34 +00:00
jhb
ff222c0ba5 Argh, disable the micro-ops again. I didn't test these adequately and
managed to lock up one of my machines in world again.

Pointy-hat to:	me
2001-01-16 04:48:38 +00:00
jhb
307cdc0f64 - Use "+a" instead of "=&a" for several constraints. This should fix
compiling errors where gcc would run out of registers.
- Add "cc" to the list of clobbers for micro-ops where we perform
  instructions that alter %eflags.
- Use xchgl instead of cmpxchgl to release a spin lock.  This could allow
  for more efficient register allocation as we no longer mandate that %eax
  be used.
- Reenable the optimized mutex micro-ops in the non-i386 case.
2001-01-16 03:45:54 +00:00
jhb
1bf5aadfd5 Free the intrhand name when free'ing a intrhand.
Submitted by:	bde
2001-01-16 02:17:51 +00:00
jhb
b83c97ff1c - Fix atomic_load_* and atomic_store_* to generate functions for atomic.c
that modules can call.
- Remove the old gcc <= 2.8 versions of the atomic ops.
- Resort the order of some things in the file so that there is only
  one #ifdef for KLD_MODULE, and so that all WANT_FUNCTIONS stuff is
  moved to the bottom of the file.
- Remove ATOMIC_ACQ_REL() and just use explicit macros instead.
2001-01-16 00:18:36 +00:00
dillon
9964ecd37f Make NSWAPDEV reasonable so people do not mistakenly use unreasonable
values when creating custom kernels from LINT.

Suggested-by: "Louis A. Mamakos" <louie@TransSys.COM>
2001-01-15 06:45:01 +00:00
peter
068a9ad88f Implement an optimization for INTREN/INTRDIS that bde pointed out last
time I tinkered around here.  Since INTREN is called from the interrupt
critical path now, it should not be too expensive.  In this case, we
look at the bits being changed to decide which 8 bit IO port to write to
rather than unconditionally writing to both.  I could probably have gone
further and only done the write if the bits actually changed, but that
seemed overkill for the usual case in interrupt threads.

[an outb is rather expensive when it has to cross the ISA bus]
2001-01-15 04:18:58 +00:00
des
b0ffa1824a The Linuxulator needs sysvipc to work. 2001-01-14 18:16:01 +00:00