* VMCache::Write(): Added "uint32 flags" argument which is supposed to

be passed on to the IORequest. Most relevantly physical pages can now
  be written directly by passing B_PHYSICAL_IO_REQUEST.
* Added VMCache::WriteAsync() which is supposed to write pages
  asynchronously. The base class version version falls back to the
  synchronous Write(). Only VMVnodeCache implements WriteAsync() ATM,
  VMAnonymousCache (swap support) still has to be adjusted accordingly.
* write_page() doesn't need to map the page anymore as it can write the
  physical page directly.
* Modified the page writer to write pages asynchronously. This shouldn't
  have any noticeable effect yet. It will though as soon as the I/O
  scheduler reorders I/O operations.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27056 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2008-08-18 23:28:34 +00:00
parent 663948966c
commit 2a79a7686f
12 changed files with 244 additions and 93 deletions
+5 -1
View File
@@ -37,6 +37,7 @@
#include <util/SplayTree.h>
class AsyncIOCallback;
struct vm_page_mapping;
struct VMCache;
typedef DoublyLinkedListLink<vm_page_mapping> vm_page_mapping_link;
@@ -224,7 +225,10 @@ public:
virtual status_t Read(off_t offset, const iovec *vecs, size_t count,
size_t *_numBytes);
virtual status_t Write(off_t offset, const iovec *vecs, size_t count,
size_t *_numBytes);
uint32 flags, size_t *_numBytes);
virtual status_t WriteAsync(off_t offset, const iovec* vecs,
size_t count, size_t numBytes, uint32 flags,
AsyncIOCallback* callback);
virtual status_t Fault(struct vm_address_space *aspace, off_t offset);