staggering impact on performance. When running sendto() in a loop,
the improvement is 200k more calls per second with an inlined __thread
curlwp as opposed to the default. In other words, it shaves off hundreds
of CPU cycles per call (~20%). Even just eliminating the x86_curlwp()
call in favor of an inline gives an improvement of 60k calls per second.
This makes ni real difference for rump, but avoods
KASSERTs in common code when we try to assert
"ipl not higher as...".
Suggested by riastradh, OK: pooka.
kernel ABI (i.e. not i386 or amd64). Due to the "half function,
half macro, all noodles" nature of pmap.h, it's too entangling and
too brittle to keep up with an ifdeffy MI implementation.
bus dma interfaces as functions and therefore makes it possible to
use rump on archs which suffer from macro maladies, i.e. everything
except i386 and amd64.
(build-tested on sparc64 and vax, which are usually the two extremes
of weirdness in these cases)
except keep my feet warm by consuming an insane amount of cpu
cycles -- in rump our current "cpu" context is never interrupted
& we have MULTIPROCESSOR.
(itch i'm scratching: it made the networking stack 10-20% slower.
this is one of the places where fast code actually matters)
* revert rev 1.68 of emul.c: delay() is hopelessly MD and needs
whipping (not the fun kind)
* #undef DELAY in cpu.h
This will hopefully fix build for all archs and give me time to
hop through our 46521 fine archs and edit the headers.
symbols which just call the libc symbols. Allows to get rid of
rump machine/bswap.h.
XXX:
1) this is unlikely to work on non-NetBSD
==>
2) should look into including libkern in librump
rid of the local pmap.h and unify the pmap ABI with the kernel.
(XXX: compiles but doesn't work on vax)
Thanks once again to Greg Oster for helping with testbuilds.
which is now the "API" provided by the pmap module. pmap_kernel()
remains as the syntactic sugar.
Bonus cosmetics round: move all the pmap_t pointer typedefs into
uvm_pmap.h.
Thanks to Greg Oster for providing cpu muscle for doing test builds.
sure there was a reason why I originally added this, but I can't
find what would break without it now. If something does pop up,
I'll fix it properly this time instead of adding silly headers.