Age | Commit message (Collapse) | Author |
|
|
|
|
|
- Move the functionality of choosing a process from cpu_switch into
a much simpler function: cpu_switchto. Instead of having the locore
code walk the run queues, let the MI code choose the process we
want to run and only implement the context switching itself in MD
code.
- Let MD context switching run without worrying about spls or locks.
- Instead of having the idle loop implemented with special contexts
in MD code, implement one idle proc for each cpu. make the idle
loop MI with MD hooks.
- Change the proc lists from the old style vax queues to TAILQs.
- Change the sleep queue from vax queues to TAILQs. This makes
wakeup() go from O(n^2) to O(n)
there will be some MD fallout, but it will be fixed shortly.
There's also a few cleanups to be done after this.
deraadt@, kettenis@ ok
|
|
ok ray@ cnst@ moritz@ sobrado@ millert@ mbalmer@
|
|
the holes a MMU may have from a given vm_map. This will be automagically
invoked for newly created vmspaces.
On platforms with MMU holes (e.g. sun4, sun4c and vax), this prevents
mmap(2) hints which would end up being in the hole to be accepted as valid,
causing unexpected signals when the process tries to access the hole
(since pmap can not fill the hole anyway).
Unfortunately, the logic mmap() uses to pick a valid address for anonymous
mappings needs work, as it will only try to find an address higher than the
hint, which causes all mmap() with a hint in the hole to fail on vax. This
will be improved later.
|
|
mbuf constants from MD param.h to MI param.h.
Besides being the same on every arch, things will
most probly break if any arch has different values
then the others.
The NMBCLUSTERS constants needs to be MD though;
ok miod@,krw@,claudio@
|
|
cpuinfo breakage (but my make build is still running)
ok gwk@
|
|
splassert_ctl > 0 in __predict_false().
ok deraadt@
|
|
have cpu_info now, so kill the option.
eyeballed by jsg@ and grange@
|
|
option. Every architecture implements mutexes now.
|
|
help miod@, art@
ok deraadt@
|
|
unconditionnaly.
|
|
to separate locking, on most modern machines this is not enough
since operations on short types touch other short types that share the
same word in memory.
Merge pg_flags and pqflags again and now use atomic operations to change
the flags. Also bump wire_count to an int and pg_version might go
int as well, just for alignment.
tested by many, many. ok miod@
|
|
|
|
to "pg_flags" and "pg_version", so that they are a bit easier to work with.
Whoever uses generic names like this for a popular struct obviously doesn't
read much code.
Most architectures compile and there are no functionality changes.
deraadt@ ok ("if something fails to compile, we fix that by hand")
|
|
unless used on non-aligned data; ok deraadt@
|
|
pmap_collect() as we do an explicit pmap_collect(pmap_kernel()) in dire
memory situations.
|
|
|
|
rt and such; tested and ok miod drahn
|
|
|
|
- do not bother checking for pmap_kernel() and operating on it, as
pmap_collect() will not be invoked for P_SYSTEM process.
- preserve wired pages while purging.
|
|
right now that are supposed to be atomic with respect to interrupts and
SMP: atomic_setbits_int and atomic_clearbits_int.
All architectures other than i386 and amd64 get dummy implementations
since at first we'll be replacing operations that are done with
"a |= bit" and "a &= ~bit" today. More proper implementations will follow
kettenis@, miod@ ok
|
|
|
|
use of MD spl code bowels. No functional change.
|
|
- it can really only be invoked from trap(), not from other userret() callers,
so it is safe to hardcode its docachepush parameter to 1.
- use pmap_kenter_pa()/pmap_kremove() for the temporary mapping instead of
pmap_enter()/pmap_remove().
optimize m68k userret():
- define PROC_PC for m68k systems.
- only check want_resched when processing T_ASTFLT traps.
- provide two version of userret(), one which will also invoke writeback()
on 68040 if required, which is only invoked from trap(), and regular
userret(). This speeds up system call returns.
|
|
ok brad
|
|
fixing.
|
|
faster uvm initialization.
|
|
|
|
|
|
pages, and implement pmap_enter() as a particular case of it.
|
|
|
|
the pte cache bits to be specified. Will be used very soon.
|
|
|
|
|
|
declarations in <machine/{cpu,param}.h> and elsewhere.
|
|
m68k-based platforms.
|
|
change.
|
|
|
|
this is better than panic'ing due to low memory condition.
|
|
processes.
ok art@ uwe@ (some time ago, and I forgot to commit this chunk)
|
|
|
|
found by drahn@
|
|
all architectures.
|
|
|
|
that we trigger SIGILL instead of propagating false results.
Tested by martin@ on Macintosh LCIII.
|
|
|
|
architectures. They are now defined as unsigned long, long, long
and unsigned long respectively.
|
|
|
|
|