Commit Graph

523 Commits

Author SHA1 Message Date
Axel Dörfler
ddcd53aaf0 * Instead of choosing the next thread if we skip one, we now choose the first thread
with a lower priority than the current one.
* Further reduced the probability to skip a thread to roughly 4%, that makes around
  13 skips per second, and about 40 msecs spend in lower priority threads per second
  (with a 3 msec quantum). Might still be too much, but we'll see.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-06 12:50:01 +00:00
Marcus Overhagen
6c3245f6a7 fixed error return in _Scan() function. now only returns B_OK when a device was found.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19716 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-06 01:04:09 +00:00
Axel Dörfler
9640130c40 Removed the R5 icon from the kernel resources - it can only be compiled for Haiku.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19714 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-05 20:16:48 +00:00
Axel Dörfler
92870c3b39 We always handled signals as if their SA_RESTART flag was set - but that's not
the default case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19711 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-05 19:27:48 +00:00
Axel Dörfler
4621a82e74 Our scheduler skipped over threads in about 30% of all cases - that's a bit much; it's
not a penalty to be the first thread in the run queue...
I've reduced it to about 12.5%, but that might still be too much.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19710 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-05 19:01:09 +00:00
Axel Dörfler
9a4b4c617b * Fixed warning.
* Now using the new %f flag to print the level of support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19584 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-21 12:12:50 +00:00
Axel Dörfler
dedf1bccfe Since we're using floating point values at several places in the kernel, I added
a very simplistic floating point output routine to snprintf() and friends, for
your convenience.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19583 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-21 12:05:16 +00:00
Axel Dörfler
b5428267c7 This should fix the most often found kernel crash (on bootup):
* vm_soft_fault() did not take into account that a cache's source can change while
  traversing a cache chain.
* Now, we grab a reference to every cache we get before locking it, and
* no longer get the cache's source without having the cache locked.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19571 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 12:34:21 +00:00
Axel Dörfler
eb445177f9 * When a vm_cache is merged with another one, we now remove the consumer; that allows
for an extra check in vm_cache_release_ref() as the cache shouldn't have any areas
  or consumers at this point.
* Fixed a locking problem in vm_cache_remove_consumer(): the cache was acquired after
  its lock was gone, so someone else might have released in the mean time.
* if the cache's source is to be replaced, we now no longer release its lock after
  having merged it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19570 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-20 12:30:07 +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
Axel Dörfler
da758f9fce * team::args is now correctly filled in.
* the member will now also be shown when dumping a team.
* minor cleanup: moved fill_team_info() into the private functions part of the file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19551 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-18 12:56:27 +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
Jérôme Duval
c20e9eefcd added a jam rule AddDriverRegistrationToHaikuImage to add device mappings on the image
commented the insertion of the attribute name in patterns in the case of a string attribute
notify_probe_by_file chooses a module based on a bus specific suffix
dm_register_child_device has a parameter to optionally check the support for the node
added scanning of bus devices after the boot filesystem is mounted
fixed dm_rescan, locking was misbehaving
fixed SYSTEM_DRIVER_REGISTRATION definition
added B_DRIVER_MAPPING attributes for PCI and ACPI devices:
  %vendor%_%device% for PCI, hid_%hid% and type_%type% for ACPI
moved acpi_device_module_info definition to public ACPI.h


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19394 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-29 19:09:45 +00:00
Stephan Aßmus
1f1316fc68 My first commit to the kernel.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19325 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-19 00:30:18 +00:00
Jérôme Duval
01b06fcc52 commented raw type handling, as it doesn't work for now
added a user friendly mode for listdev: it works for PCI


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19262 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-12 17:22:29 +00:00
Jérôme Duval
bef4e1fc77 * each device manager node has now an autogenerated identifier
* added a generic syscall for device_manager
it enables to iterate the device manager tree from userland
* the listdev tool is now using it: it's still incomplete as it only dumps nodes and attributes


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19260 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-12 15:28:09 +00:00
Jérôme Duval
2bc2898a84 fix warning
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19251 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-10 20:26:54 +00:00
Jérôme Duval
c74d27255b avoid crashing at the end of the list
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19217 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-07 00:51:33 +00:00
Axel Dörfler
0ad660a168 Remap all preloaded executables read-only and executable.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19180 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-02 20:38:30 +00:00
Axel Dörfler
095ee89840 Fixed warning with debug info turned on.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19122 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-25 15:29:41 +00:00
Axel Dörfler
d12497173a Fixed PPC kernel build (and a warning).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19058 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-13 11:35:28 +00:00
Axel Dörfler
6e7dc54655 Fixed GCC 4 warnings.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19057 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-13 11:23:34 +00:00
Axel Dörfler
78d0219799 Fixed GCC 4 warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19056 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-13 10:49:08 +00:00
Axel Dörfler
4e4c58037e Implemented collapsing forked vm_cache object chains when they become unused.
This fixes bug #227 by closing that memory and semaphore leak.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19041 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-10 22:47:00 +00:00
Axel Dörfler
bcf2f8133b * Fixed a big memory leak: vm_delete_areas() did not put the reference of the
address space of reserved areas - IOW address spaces were never freed upon
  team exit.
* dump_cache() now prints a list of the cache's consumers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19040 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-10 22:42:12 +00:00
Axel Dörfler
45894e1088 Minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19039 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-10 22:39:57 +00:00
Axel Dörfler
a7181e951d Accidently turned on printing stack traces with the last commit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19037 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-10 17:27:03 +00:00
Axel Dörfler
0b8e0bfc08 Some cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19036 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-10 17:25:38 +00:00
Axel Dörfler
d593e74a27 First steps towards being able of collapse vm_cache objects after forking:
* a vm_cache now maintains a list of its "consumer" caches.
* introduced to new functions that add/remove consumer to a cache (instead
  of only maintaining the vm_cache::source field).
* fixed the incorrect reference counting when doing copy-on-write; we kept
  one ref too many of the lower cache.
* minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19035 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-10 17:16:06 +00:00
Axel Dörfler
02cc779b7d Moved datastore implementation into net_buffer.cpp - there is no reason to clobber the kernel with it.
This also fixes the issue of exporting a C++ API from the kernel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18974 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-28 18:27:30 +00:00
Axel Dörfler
5af206180e Removed executable property.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18973 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-28 18:09:27 +00:00
Marcus Overhagen
83bf699b3f some build fixes for pxe_ia32 platform
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18966 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-28 12:52:20 +00:00
Marcus Overhagen
7c3aba03bc git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18961 a95241bf-73f2-0310-859d-f6bbb57e9c96 2006-09-28 12:03:26 +00:00
Marcus Overhagen
47e8242b26 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18960 a95241bf-73f2-0310-859d-f6bbb57e9c96 2006-09-28 12:02:58 +00:00
Jérôme Duval
1ba8377d45 releases the team lock even when group is NULL
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18947 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-27 08:30:15 +00:00
Axel Dörfler
d9766fe30b * Changed team_get_process_group_locked() to have a session parameter instead
of a team to avoid confusion. It now also accepts a NULL session pointer in
  which case the actual group's session doesn't matter.
* Fixed the race condition in send_signal_etc() that could allow accessing an
  invalid team pointer.
* Jerome's earlier change already fixed bug #841, and this also fixed bug #855.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18941 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-26 12:51:59 +00:00
Jérôme Duval
0de38aa00b added needed symbols for gcc4 linking
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18910 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-23 14:01:49 +00:00
Niels Sascha Reedijk
5fe9705942 Fix the fix
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18899 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-21 08:21:55 +00:00
Niels Sascha Reedijk
1a2f476148 Build broke in r18896. Fix.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18898 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-21 06:57:22 +00:00
Andrew Galante
b425ce77ad A helper datastructure for network buffers. Defines a fixed-size region of same-size data blocks, and maintains a reference count for each
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18896 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-21 02:40:20 +00:00
Jérôme Duval
65afc3a011 also dump group and session ids
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18887 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-19 09:40:09 +00:00
Jérôme Duval
46a7b50c3b try to better handle signal for teams
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18885 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-18 22:51:07 +00:00
Marcus Overhagen
20e1d3e5e2 added _Unwind_* to make the gcc 4 linker happy, but I'm not sure if this is the correct way.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-17 00:05:21 +00:00
Marcus Overhagen
82029bdae8 added missing nothrow parameter
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18868 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-16 23:25:56 +00:00
Marcus Overhagen
a07acab41b fixed assembly code to compile with gcc 4.0.3. the original code was invalid, as there is no mov instruction to
move a 16 bit segment register into 32 bit memory location, and movzx (called movzwl within gcc) doesn't work with 
segement registers.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18864 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-16 20:40:19 +00:00
Marcus Overhagen
6639eae245 prevent possible crash
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18863 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-16 19:58:41 +00:00
Axel Dörfler
5bab2844c1 This fixes the crashing bug #849. Unfortunately, it still crashes, just at a different location.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18815 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-12 00:22:10 +00:00
Marcus Overhagen
a6e8772d9f fix debug output
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18807 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-09-11 16:37:02 +00:00