Index: base/memory/shared_memory.h |
diff --git a/base/memory/shared_memory.h b/base/memory/shared_memory.h |
index 9d8fd5c3d9fa89030faa450434c9237b9bb2c997..872c38a4798a44a3a67f2200a581b2fbde48310d 100644 |
--- a/base/memory/shared_memory.h |
+++ b/base/memory/shared_memory.h |
@@ -64,6 +64,22 @@ struct BASE_EXPORT SharedMemoryCreateOptions { |
bool share_read_only = false; |
}; |
+// Enumeration of different shared memory error types. Note: Currently only |
+// errors from Mac POSIX shared memory implementation are fully instrumented. |
+// TODO(asvitkine): Evaluate whether we want to keep this ability after |
+// crbug.com/703649 is fixed and expand to all platforms or remove. |
+enum class SharedMemoryError { |
+ NO_ERRORS, |
+ NO_FILE, |
+ BAD_PARAMS, |
+ STAT_FAILED, |
+ TRUNCATE_FAILED, |
+ NO_TEMP_DIR, |
+ MAKE_READONLY_FAILED, |
+ INODE_MISMATCH, |
+ MMAP_FAILED, |
+}; |
+ |
// Platform abstraction for shared memory. |
// SharedMemory consumes a SharedMemoryHandle [potentially one that it created] |
// to map a shared memory OS resource into the virtual address space of the |
@@ -233,6 +249,13 @@ class BASE_EXPORT SharedMemory { |
bool GetUniqueId(UniqueId* id) const; |
#endif |
+ // Returns the last error encountered as a result of a call to Create() or |
+ // Map(). Note: Currently only errors from Mac POSIX shared memory |
+ // implementation are fully instrumented. |
+ // TODO(asvitkine): Evaluate whether we want to keep this ability after |
+ // crbug.com/703649 is fixed and expand to all platforms or remove. |
+ SharedMemoryError get_last_error() const { return last_error_; } |
+ |
private: |
#if defined(OS_POSIX) && !defined(OS_NACL) && !defined(OS_ANDROID) && \ |
(!defined(OS_MACOSX) || defined(OS_IOS)) |
@@ -263,6 +286,7 @@ class BASE_EXPORT SharedMemory { |
void* memory_ = nullptr; |
bool read_only_ = false; |
size_t requested_size_ = 0; |
+ SharedMemoryError last_error_ = SharedMemoryError::NO_ERRORS; |
DISALLOW_COPY_AND_ASSIGN(SharedMemory); |
}; |