necessary because low memory handlers might need to wait for other services
while we need to make sure the page thief can always steal pages.
* Made the page thief more aggressive when memory is critical: added a third
run where it will also steal a small amount of active pages to keep things
going.
* The page thief did not maintain the cache's reference correctly in all
situations.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22382 a95241bf-73f2-0310-859d-f6bbb57e9c96
shapes) which have so far been done for Haiku, the website and other apps
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22381 a95241bf-73f2-0310-859d-f6bbb57e9c96
account when checking for the number of readable bytes. For readers
it doesn't make a difference, since they were looping anyway, but
select() would report read-availability incorrectly.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22379 a95241bf-73f2-0310-859d-f6bbb57e9c96
writers.
* Removed the optimization for piping data between two threads of the
same team. This greatly simplifies the code. It seems to me the case
is very uncommon; it could be added back later, though.
* Basically rewrote reading from and writing to the pipe:
- A blockable writer can now write more than what is currently
available in the ring buffer.
- Writing respects the PIPE_BUF non-interleaving limit, though our
headers don't seem to define PIPE_BUF anywhere.
- Unblock writers, when the last reader is gone and send those that
haven't written anything yet a SIGPIPE. Fixes bug #1476.
* Correctly implemented select() support. We were only notifying
writers. We manage two separate select sync pools per pipe now: one
for the reader end and one for the writer end.
* Reading/writing from the root dir does no longer end in KDL.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22378 a95241bf-73f2-0310-859d-f6bbb57e9c96
Added support for non-48-bit LBA, added write support.
Proper error handling still missing, write support disabled for your protection.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22376 a95241bf-73f2-0310-859d-f6bbb57e9c96
components - now, we divide the initialization of that service into two parts
which allows this (before, most handlers were gone after boot).
* Added debugger command that dumps the low memory handlers.
* The slab allocator now registers its low memory handler with a higher
priority, so that it'll run before the potentially heavier ones.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22374 a95241bf-73f2-0310-859d-f6bbb57e9c96
on another machine, don't know if this was really the cause, but it should
be checked nevertheless I guess)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22373 a95241bf-73f2-0310-859d-f6bbb57e9c96
deadlock whenever someone without a lock (like the page_writer()) is calling
this function.
* Added a new ReadWriteLock::TryLock() method.
* Renamed bfs_read_vnode() and bfs_release_vnode() to bfs_get_vnode() and
bfs_put_vnode() just like those functions are called in fs_interface.h.
* Fixed a warning in BPlusTree::_SplitNode().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22372 a95241bf-73f2-0310-859d-f6bbb57e9c96
takes menu margins into account, drawing is now fully scalable)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22371 a95241bf-73f2-0310-859d-f6bbb57e9c96
the BeBook mentions it does
* make sure the view is invalidated on resize
* needs more fixes (for example GetPreferredSize() does not take everything
into account)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22370 a95241bf-73f2-0310-859d-f6bbb57e9c96
doesn't exist, so I just used a BFile instead... this should fix part of
ticket #1423, if someone wants to look into the gateway retrieval
(settings.cpp) to fix the other half of the bug, that would be great
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22366 a95241bf-73f2-0310-859d-f6bbb57e9c96
inserted into the list according to their priority; higher priority
handlers are now called first.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22359 a95241bf-73f2-0310-859d-f6bbb57e9c96
anything, if a line is available. Fixes bug #1483.
* Replaced the request owner waiting semaphore by a condition variable
and removed the now no longer needed SemaphorePool.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22357 a95241bf-73f2-0310-859d-f6bbb57e9c96
Apparently not everyone checks the page state for PAGE_STATE_BUSY.
vm_page_write_modified_pages() does now at least.
* Fixed typos in comments.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22349 a95241bf-73f2-0310-859d-f6bbb57e9c96
* We now have a page writer that takes some pages from the modified queue
and writes it back every few seconds. It can be triggered by the page
scanner to do that more often, though. That mechanism can be greatly
improved once we have our I/O scheduler working.
* Removed vm_page_write_modified_page() again - it was all "eaten up" by
the page writer.
* Reworked vm_page_write_modified_pages() a bit: it now uses
vm_test_map_modification() and vm_clear_map_flags() instead of the
iterating over all areas which wouldn't even work correctly.
The code is much simpler now, too.
* You usually put something to the tail of a queue, and remove the contents
from the head, not vice versa - changed queue implementation to reflect this.
* Additionally, there is now a enqueue_page_to_head() if you actually want the
opposite.
* vm_page_requeue() allows you to move a page in a queue to the head or tail.
* Replaced vm_clear_map_activation() with vm_clear_map_flags() which allows
you to clear other flags than PAGE_ACCESSED.
* The page scanner dumps now some arguments with each run.
* Removed the old disabled pageout_daemon() from NewOS.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22348 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Clear fMinMaxValid when a new constraint is added. "Height for width"
constraints are therefore no longer ignored.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22343 a95241bf-73f2-0310-859d-f6bbb57e9c96
be considered redundant, although they weren't. We do now use smaller
"unlimited" sizes which we can add without risking overflow, and can thus
correctly identify redundant constraints. This fixes the
SplitterGridLayoutTest1 in the LayoutTest1 app.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22337 a95241bf-73f2-0310-859d-f6bbb57e9c96
properties (like the weight or min/max) would be ignored, besides memory
being leaked.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22336 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Use the new ComplexLayouter for the more complex layouting tasks.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22335 a95241bf-73f2-0310-859d-f6bbb57e9c96
made it conditional, added/modified comments documenting the maths and
algorithms.
* Refactored quite a bit in ComplexLayouter and added special handling for
the case that the desired solution is already feasible.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22334 a95241bf-73f2-0310-859d-f6bbb57e9c96