Index: base/metrics/stats_table.h |
diff --git a/base/metrics/stats_table.h b/base/metrics/stats_table.h |
index 49ba79f88ba71a3692b3310ef3f6fa7bff8fc857..719e6304813243332e0b129cc1422d499a075c1e 100644 |
--- a/base/metrics/stats_table.h |
+++ b/base/metrics/stats_table.h |
@@ -28,24 +28,45 @@ |
#include "base/memory/shared_memory.h" |
#include "base/synchronization/lock.h" |
#include "base/threading/thread_local_storage.h" |
+#include "build/build_config.h" |
+ |
+#if defined(OS_POSIX) |
+#include "base/file_descriptor_posix.h" |
+#endif |
namespace base { |
class BASE_EXPORT StatsTable { |
public: |
- // Create a new StatsTable. |
- // If a StatsTable already exists with the specified name, this StatsTable |
- // will use the same shared memory segment as the original. Otherwise, |
- // a new StatsTable is created and all counters are zeroed. |
+ // Identifies a StatsTable. We often want to share these between processes. |
+ // |
+ // On Windows, we use a named shared memory segment so the table identifier |
+ // should be a relatively unique string identifying the table to use. An |
+ // empty string can be used to use an anonymous shared memory segment for |
+ // cases where the table does not need to be shared between processes. |
// |
- // name is the name of the StatsTable to use. |
+ // Posix does not support named memory so we explicitly share file |
+ // descriptors. On Posix, pass a default-constructed file descriptor if a |
+ // handle doesn't already exist, and a new one will be created. |
+ // |
+ // If a table doesn't already exist with the given identifier, a new one will |
+ // be created with zeroed counters. |
+#if defined(OS_POSIX) |
+ typedef FileDescriptor TableIdentifier; |
+#elif defined(OS_WIN) |
+ typedef std::string TableIdentifier; |
+#endif |
+ |
+ // Create a new StatsTable. |
// |
// max_threads is the maximum number of threads the table will support. |
// If the StatsTable already exists, this number is ignored. |
// |
// max_counters is the maximum number of counters the table will support. |
// If the StatsTable already exists, this number is ignored. |
- StatsTable(const std::string& name, int max_threads, int max_counters); |
+ StatsTable(const TableIdentifier& table, |
+ int max_threads, |
+ int max_counters); |
// Destroys the StatsTable. When the last StatsTable is destroyed |
// (across all processes), the StatsTable is removed from disk. |