OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/stats_table.h" | 5 #include "base/stats_table.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/platform_thread.h" | 8 #include "base/platform_thread.h" |
9 #include "base/process_util.h" | 9 #include "base/process_util.h" |
10 #include "base/shared_memory.h" | 10 #include "base/shared_memory.h" |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 int version() const { return table_header_->version; } | 119 int version() const { return table_header_->version; } |
120 int size() const { return table_header_->size; } | 120 int size() const { return table_header_->size; } |
121 int max_counters() const { return table_header_->max_counters; } | 121 int max_counters() const { return table_header_->max_counters; } |
122 int max_threads() const { return table_header_->max_threads; } | 122 int max_threads() const { return table_header_->max_threads; } |
123 | 123 |
124 // Accessors for our tables | 124 // Accessors for our tables |
125 char* thread_name(int slot_id) const { | 125 char* thread_name(int slot_id) const { |
126 return &thread_names_table_[ | 126 return &thread_names_table_[ |
127 (slot_id-1) * (StatsTable::kMaxThreadNameLength)]; | 127 (slot_id-1) * (StatsTable::kMaxThreadNameLength)]; |
128 } | 128 } |
129 int* thread_tid(int slot_id) const { | 129 PlatformThreadId* thread_tid(int slot_id) const { |
130 return &(thread_tid_table_[slot_id-1]); | 130 return &(thread_tid_table_[slot_id-1]); |
131 } | 131 } |
132 int* thread_pid(int slot_id) const { | 132 int* thread_pid(int slot_id) const { |
133 return &(thread_pid_table_[slot_id-1]); | 133 return &(thread_pid_table_[slot_id-1]); |
134 } | 134 } |
135 char* counter_name(int counter_id) const { | 135 char* counter_name(int counter_id) const { |
136 return &counter_names_table_[ | 136 return &counter_names_table_[ |
137 (counter_id-1) * (StatsTable::kMaxCounterNameLength)]; | 137 (counter_id-1) * (StatsTable::kMaxCounterNameLength)]; |
138 } | 138 } |
139 int* row(int counter_id) const { | 139 int* row(int counter_id) const { |
140 return &data_table_[(counter_id-1) * max_threads()]; | 140 return &data_table_[(counter_id-1) * max_threads()]; |
141 } | 141 } |
142 | 142 |
143 private: | 143 private: |
144 // Constructor is private because you should use New() instead. | 144 // Constructor is private because you should use New() instead. |
145 StatsTablePrivate() {} | 145 StatsTablePrivate() {} |
146 | 146 |
147 // Initializes the table on first access. Sets header values | 147 // Initializes the table on first access. Sets header values |
148 // appropriately and zeroes all counters. | 148 // appropriately and zeroes all counters. |
149 void InitializeTable(void* memory, int size, int max_counters, | 149 void InitializeTable(void* memory, int size, int max_counters, |
150 int max_threads); | 150 int max_threads); |
151 | 151 |
152 // Initializes our in-memory pointers into a pre-created StatsTable. | 152 // Initializes our in-memory pointers into a pre-created StatsTable. |
153 void ComputeMappedPointers(void* memory); | 153 void ComputeMappedPointers(void* memory); |
154 | 154 |
155 base::SharedMemory shared_memory_; | 155 base::SharedMemory shared_memory_; |
156 TableHeader* table_header_; | 156 TableHeader* table_header_; |
157 char* thread_names_table_; | 157 char* thread_names_table_; |
158 int* thread_tid_table_; | 158 PlatformThreadId* thread_tid_table_; |
159 int* thread_pid_table_; | 159 int* thread_pid_table_; |
160 char* counter_names_table_; | 160 char* counter_names_table_; |
161 int* data_table_; | 161 int* data_table_; |
162 }; | 162 }; |
163 | 163 |
164 // static | 164 // static |
165 StatsTablePrivate* StatsTablePrivate::New(const std::string& name, | 165 StatsTablePrivate* StatsTablePrivate::New(const std::string& name, |
166 int size, | 166 int size, |
167 int max_threads, | 167 int max_threads, |
168 int max_counters) { | 168 int max_counters) { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 offset += AlignOffset(offset); | 210 offset += AlignOffset(offset); |
211 | 211 |
212 // Verify we're looking at a valid StatsTable. | 212 // Verify we're looking at a valid StatsTable. |
213 DCHECK_EQ(table_header_->version, kTableVersion); | 213 DCHECK_EQ(table_header_->version, kTableVersion); |
214 | 214 |
215 thread_names_table_ = reinterpret_cast<char*>(data + offset); | 215 thread_names_table_ = reinterpret_cast<char*>(data + offset); |
216 offset += sizeof(char) * | 216 offset += sizeof(char) * |
217 max_threads() * StatsTable::kMaxThreadNameLength; | 217 max_threads() * StatsTable::kMaxThreadNameLength; |
218 offset += AlignOffset(offset); | 218 offset += AlignOffset(offset); |
219 | 219 |
220 thread_tid_table_ = reinterpret_cast<int*>(data + offset); | 220 thread_tid_table_ = reinterpret_cast<PlatformThreadId*>(data + offset); |
221 offset += sizeof(int) * max_threads(); | 221 offset += sizeof(int) * max_threads(); |
222 offset += AlignOffset(offset); | 222 offset += AlignOffset(offset); |
223 | 223 |
224 thread_pid_table_ = reinterpret_cast<int*>(data + offset); | 224 thread_pid_table_ = reinterpret_cast<int*>(data + offset); |
225 offset += sizeof(int) * max_threads(); | 225 offset += sizeof(int) * max_threads(); |
226 offset += AlignOffset(offset); | 226 offset += AlignOffset(offset); |
227 | 227 |
228 counter_names_table_ = reinterpret_cast<char*>(data + offset); | 228 counter_names_table_ = reinterpret_cast<char*>(data + offset); |
229 offset += sizeof(char) * | 229 offset += sizeof(char) * |
230 max_counters() * StatsTable::kMaxCounterNameLength; | 230 max_counters() * StatsTable::kMaxCounterNameLength; |
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
549 return NULL; | 549 return NULL; |
550 | 550 |
551 // Find the counter id for the counter. | 551 // Find the counter id for the counter. |
552 std::string str_name(name); | 552 std::string str_name(name); |
553 int counter = table->FindCounter(str_name); | 553 int counter = table->FindCounter(str_name); |
554 | 554 |
555 // Now we can find the location in the table. | 555 // Now we can find the location in the table. |
556 return table->GetLocation(counter, slot); | 556 return table->GetLocation(counter, slot); |
557 } | 557 } |
558 | 558 |
OLD | NEW |