Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(837)

Unified Diff: base/memory/shared_memory_handle.h

Issue 2535213002: [WIP] Add SharedMemoryTracker to dump base::SharedMemory usage
Patch Set: Address on primiano's review Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: base/memory/shared_memory_handle.h
diff --git a/base/memory/shared_memory_handle.h b/base/memory/shared_memory_handle.h
index dc33eeafa11faef22f73be0d44dd30447e43118b..3834d868128c6f3cfdd24f6153d832975d2be1ef 100644
--- a/base/memory/shared_memory_handle.h
+++ b/base/memory/shared_memory_handle.h
@@ -152,6 +152,8 @@ class BASE_EXPORT SharedMemoryHandle {
void SetOwnershipPassesToIPC(bool ownership_passes);
bool OwnershipPassesToIPC() const;
+ bool GetUniqueID(SharedMemoryHandleID* id) const;
+
private:
friend class SharedMemory;
@@ -186,6 +188,43 @@ class BASE_EXPORT SharedMemoryHandle {
};
#endif
+#if defined(OS_POSIX) && !(defined(OS_MACOSX) && !defined(OS_IOS))
+struct SharedMemoryHandleID {
+ dev_t device_id;
+ ino_t file_id;
+};
+#elif defined(OS_MACOSX)
+struct SharedMemoryHandleID {
+ // TODO: On macOS, this might be mach_port_t.
+ dev_t device_id;
+ ino_t file_id;
+};
+#elif defined(OS_WIN)
+struct SharedMemoryHandleID {
+ DWORD device_id; // BY_HANDLE_FILE_INFORMATION.dwVolumeSerialNumber
+ intt64_t file_id; // BY_HANDLE_FILE_INFORMATION.nFileIndexHigh and Low
+};
+#endif
+
+bool GetIDFromSharedMemoryHandle(const SharedMemoryHandle& handle,
+ SharedMemoryHandleID* id);
+
+std::string GetSharedMemoryHandleIDString(const SharedMemoryHandleID& id);
+
+struct SharedMemoryHandleIDHash {
+ std::size_t operator()(const SharedMemoryHandleID& id) const {
+ return std::hash<int64_t>()(static_cast<int64_t>(id.device_id)) ^
+ std::hash<int64_t>()(static_cast<int64_t>(id.file_id));
+ }
+};
+
+struct SharedMemoryHandleIDEqual {
+ bool operator()(const SharedMemoryHandleID& lhs,
+ const SharedMemoryHandleID& rhs) const {
+ return lhs.device_id == rhs.device_id && lhs.file_id == rhs.file_id;
+ }
+};
+
} // namespace base
#endif // BASE_MEMORY_SHARED_MEMORY_HANDLE_H_

Powered by Google App Engine
This is Rietveld 408576698