Commit Graph
11 Commits
Author SHA1 Message Date
Travis Geiselbrecht dfb5375d18 clean up TSS initialization.
Now two complete tss structures exist within the per-cpu structure. Instead
of having to create a seperate area per each one, initialize them in place.
Also, the old mechanism to getting all of the cpus to get initialized was 
subtly broken, but still managed to work. Now, just force all the cpus to
initialize at boot, which makes the actual swapping of esp0 somewhat simpler.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20131 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-14 06:24:59 +00:00
Travis Geiselbrecht dcdc4f4b43 pulled over some stuff from newos:
at boot, per cpu, detect the cpu, pull down all the relevant cpuid bits and
save them into the per-cpu structure. Changed most of the code scattered here
and there that reads the cpuid to use a new api, x86_check_feature, which looks
at the saved bits.
Also changed the system_info stuff to read from these bits.
While i was at it, refreshed all the bits to be current.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20072 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-05 01:46:28 +00:00
Travis Geiselbrecht 5c3d21086c whew, the numbers were looking terrible for sycalls, but it was just the app being off by a factor of 1000.
It's still somewhat slower, but workable. null syscall speed on p3 500:
haiku  6800 nanosecs
beosr5 2200 nanosecs
linux  680  nanosecs


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20071 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-04 21:57:56 +00:00
Travis Geiselbrecht bee597ebfb Rewrote the syscallbench app. It now will figure the overhead of a simple test loop,
then the overhead of a call into libroot, and finally the overhead of a syscall 
(using is_computer_on).
The numbers are totally abysmal right now. :(


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20070 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-04 21:12:54 +00:00
Travis Geiselbrecht ea4ff0f689 is_computer_on() lives again as a true syscall.
Replaced the _kern_null syscall with _kern_is_computer_on.
is_computer_on_fire is a bit harder, since it returns a float from kernelland, which
at the moment isn't supported in haiku.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20069 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-04 21:08:35 +00:00
Travis Geiselbrecht 43e6454f92 Change the jam rules to build the test binaries as release by default,
debug only if you specify TEST_DEBUG. The debug binaries don't seem to
work right anyway.

Hopefully this didn't mess anyone up.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20061 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-02-03 21:55:45 +00:00
Travis Geiselbrecht 02c92f8256 change the 'iospace' debug to use a more reasonable number of columns
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19563 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-19 03:27:50 +00:00
Travis Geiselbrecht c4546ea038 A fix for the double-fault on bootup:
-Turns out the area removal routine had a massive race condition inside
vm_put_area(). Basically the area was removed from the address space's
area list before the pages were unmapped, so the vm could (and would)
recycle the space before the pages were finally unmapped.

It was completely reproducable on my machine during initialization of a bunch
of storage drivers that were bringing the locked_pool module into and out of
existence, which caused a thread to be spawned and stopped in rapid sucession.
On a dual processor machine, it was possible for the new thread to be started
up while the old one was still shutting down, and the kernel stack of the new
one would get wiped out.

Note, there still is a page ref counting problem with this area removal code.
It doesn't decrement the ref count of the page as it unmaps it. Will have to 
figure that out.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19549 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 09:38:00 +00:00
Travis Geiselbrecht 9bc7a58b1d Fixes a nit:
put a spinlock around the serial debug routines to keep multiple
cpus from interleaving their output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19548 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 07:23:39 +00:00
Travis Geiselbrecht c3a89b90d3 fix the 'cache_ref' and 'cache' kdl commands
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19546 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 04:29:39 +00:00
Travis Geiselbrecht 83d5eb4190 Change the vfork() declaration to match the prototype, and thus fix the build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19518 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-15 08:42:34 +00:00