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

Side by Side Diff: base/metrics/persistent_memory_allocator.h

Issue 2907543003: Support persistent system profiles. (Closed)
Patch Set: addressed review comments by asvitkine Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 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 #ifndef BASE_METRICS_PERSISTENT_MEMORY_ALLOCATOR_H_ 5 #ifndef BASE_METRICS_PERSISTENT_MEMORY_ALLOCATOR_H_
6 #define BASE_METRICS_PERSISTENT_MEMORY_ALLOCATOR_H_ 6 #define BASE_METRICS_PERSISTENT_MEMORY_ALLOCATOR_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <atomic> 10 #include <atomic>
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 // operation, such as how much memory is currently used. This should be 487 // operation, such as how much memory is currently used. This should be
488 // called before such information is to be displayed or uploaded. 488 // called before such information is to be displayed or uploaded.
489 void UpdateTrackingHistograms(); 489 void UpdateTrackingHistograms();
490 490
491 // While the above works much like malloc & free, these next methods provide 491 // While the above works much like malloc & free, these next methods provide
492 // an "object" interface similar to new and delete. 492 // an "object" interface similar to new and delete.
493 493
494 // Reserve space in the memory segment of the desired |size| and |type_id|. 494 // Reserve space in the memory segment of the desired |size| and |type_id|.
495 // A return value of zero indicates the allocation failed, otherwise the 495 // A return value of zero indicates the allocation failed, otherwise the
496 // returned reference can be used by any process to get a real pointer via 496 // returned reference can be used by any process to get a real pointer via
497 // the GetAsObject() or GetAsArray calls. 497 // the GetAsObject() or GetAsArray calls. The actual allocated size may be
498 // larger and will always be a multiple of 8 bytes (64 bits).
498 Reference Allocate(size_t size, uint32_t type_id); 499 Reference Allocate(size_t size, uint32_t type_id);
499 500
500 // Allocate and construct an object in persistent memory. The type must have 501 // Allocate and construct an object in persistent memory. The type must have
501 // both (size_t) kExpectedInstanceSize and (uint32_t) kPersistentTypeId 502 // both (size_t) kExpectedInstanceSize and (uint32_t) kPersistentTypeId
502 // static constexpr fields that are used to ensure compatibility between 503 // static constexpr fields that are used to ensure compatibility between
503 // software versions. An optional size parameter can be specified to force 504 // software versions. An optional size parameter can be specified to force
504 // the allocation to be bigger than the size of the object; this is useful 505 // the allocation to be bigger than the size of the object; this is useful
505 // when the last field is actually variable length. 506 // when the last field is actually variable length.
506 template <typename T> 507 template <typename T>
507 T* New(size_t size) { 508 T* New(size_t size) {
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 // share the same pointer then an allocation on one will amount to an 861 // share the same pointer then an allocation on one will amount to an
861 // allocation for all. 862 // allocation for all.
862 volatile std::atomic<Reference>* const reference_; 863 volatile std::atomic<Reference>* const reference_;
863 864
864 // No DISALLOW_COPY_AND_ASSIGN as it's okay to copy/move these objects. 865 // No DISALLOW_COPY_AND_ASSIGN as it's okay to copy/move these objects.
865 }; 866 };
866 867
867 } // namespace base 868 } // namespace base
868 869
869 #endif // BASE_METRICS_PERSISTENT_MEMORY_ALLOCATOR_H_ 870 #endif // BASE_METRICS_PERSISTENT_MEMORY_ALLOCATOR_H_
OLDNEW
« no previous file with comments | « no previous file | base/metrics/persistent_memory_allocator.cc » ('j') | components/metrics/persistent_system_profile.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698