diff options
author | mmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2006-09-06 02:56:44 +0000 |
---|---|---|
committer | mmentovai <mmentovai@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2006-09-06 02:56:44 +0000 |
commit | 3261e8b6eac44a41341f112821482bee6c940c98 (patch) | |
tree | 700dad6eb00ea0c224bde2d26b743d75eb490351 /src/processor/memory_region.h | |
parent | Change header paths and include guards to be relative to the "src" directory.... (diff) | |
download | breakpad-3261e8b6eac44a41341f112821482bee6c940c98.tar.xz |
Initial implementation of minidump reader (#6). r=bryner
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@11 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor/memory_region.h')
-rw-r--r-- | src/processor/memory_region.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/processor/memory_region.h b/src/processor/memory_region.h new file mode 100644 index 00000000..83d6dbf4 --- /dev/null +++ b/src/processor/memory_region.h @@ -0,0 +1,65 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// memory_region.h: Access to memory regions. +// +// A MemoryRegion provides virtual access to a range of memory. It is an +// abstraction allowing the actual source of memory to be independent of +// methods which need to access a virtual memory space. +// +// Author: Mark Mentovai + +#ifndef PROCESSOR_MEMORY_REGION_H__ +#define PROCESSOR_MEMORY_REGION_H__ + + +#include "google/airbag_types.h" + + +namespace google_airbag { + + +class MemoryRegion { + public: + virtual ~MemoryRegion() {} + + // The base address of this memory region. + virtual u_int64_t GetBase() = 0; + + // The size of this memory region. + virtual u_int32_t GetSize() = 0; + + // Access to data of various sizes within the memory region. address + // is a pointer to read, and it must lie within the memory region as + // defined by its base address and size. The location pointed to by + // value is set to the value at address. Byte-swapping is performed + // if necessary so that the value is appropriate for the running + // program. Returns true on success. Fails and returns false if address + // is out of the region's bounds (after considering the width of value), + // or for other types of errors. + virtual bool GetMemoryAtAddress(u_int64_t address, + u_int8_t* value) = 0; + virtual bool GetMemoryAtAddress(u_int64_t address, + u_int16_t* value) = 0; + virtual bool GetMemoryAtAddress(u_int64_t address, + u_int32_t* value) = 0; + virtual bool GetMemoryAtAddress(u_int64_t address, + u_int64_t* value) = 0; +}; + + +} // namespace google_airbag + + +#endif // PROCESSOR_MEMORY_REGION_H__ |