diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-27 00:04:24 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-27 00:04:24 +0000 |
commit | 9fde2a2f20e1cbd68d88ae5769bb8018b9b4422e (patch) | |
tree | a1a7c0a71e057b93275dd29f390cafa3d9dff630 /net/disk_cache/mapped_file_posix.cc | |
parent | efc7057308ae81e69861d37aaca33b67d5187284 (diff) | |
download | chromium_src-9fde2a2f20e1cbd68d88ae5769bb8018b9b4422e.zip chromium_src-9fde2a2f20e1cbd68d88ae5769bb8018b9b4422e.tar.gz chromium_src-9fde2a2f20e1cbd68d88ae5769bb8018b9b4422e.tar.bz2 |
Implement sync IO for the disk cache, and temporarily redirect
async IO to be performed synchronously.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1414 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/disk_cache/mapped_file_posix.cc')
-rw-r--r-- | net/disk_cache/mapped_file_posix.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/net/disk_cache/mapped_file_posix.cc b/net/disk_cache/mapped_file_posix.cc index d8f33506..fbcdbaa 100644 --- a/net/disk_cache/mapped_file_posix.cc +++ b/net/disk_cache/mapped_file_posix.cc @@ -4,6 +4,9 @@ #include "net/disk_cache/mapped_file.h" +#include <errno.h> +#include <sys/mman.h> + #include "net/disk_cache/disk_cache.h" namespace disk_cache { @@ -13,9 +16,17 @@ void* MappedFile::Init(const std::wstring name, size_t size) { if (init_ || !File::Init(name)) return NULL; - buffer_ = NULL; + if (!size) + size = GetLength(); + + buffer_ = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, + os_file(), 0); init_ = true; + DCHECK(reinterpret_cast<int>(buffer_) != -1); + if (reinterpret_cast<int>(buffer_) == -1) + buffer_ = 0; + view_size_ = size; return buffer_; } @@ -24,6 +35,8 @@ MappedFile::~MappedFile() { return; if (buffer_) { + int ret = munmap(buffer_, view_size_); + DCHECK(0 == ret); } } |