Index: base/memory/shared_memory.h |
diff --git a/base/memory/shared_memory.h b/base/memory/shared_memory.h |
index 35067e6aaeab848080c681fa729f7853df720f3c..52303d800d83bead006cd3d18e81388eb928959f 100644 |
--- a/base/memory/shared_memory.h |
+++ b/base/memory/shared_memory.h |
@@ -63,6 +63,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 |
@@ -232,6 +248,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_; |
bool read_only_; |
size_t requested_size_; |
+ SharedMemoryError last_error_ = SharedMemoryError::NO_ERRORS; |
Nico
2017/05/10 15:12:22
nit: please init in ctor, like for all other membe
Alexei Svitkine (slow)
2017/05/10 15:22:39
Unfortunately, it's not a single ctor - it's 7 dif
|
DISALLOW_COPY_AND_ASSIGN(SharedMemory); |
}; |