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

Side by Side Diff: base/mac/mach_logging.h

Issue 278923002: Use the new ScopedMachVM class and the MACH_LOG family of logging macros (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase onto r269793 Created 6 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « base/mac/mac_logging.h ('k') | base/mac/mach_logging.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_MAC_MACH_LOGGING_H_ 5 #ifndef BASE_MAC_MACH_LOGGING_H_
6 #define BASE_MAC_MACH_LOGGING_H_ 6 #define BASE_MAC_MACH_LOGGING_H_
7 7
8 #include <mach/mach.h> 8 #include <mach/mach.h>
9 9
10 #include "base/base_export.h"
10 #include "base/basictypes.h" 11 #include "base/basictypes.h"
11 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "build/build_config.h"
12 14
13 // Use the MACH_LOG family of macros along with a mach_error_t (kern_return_t) 15 // Use the MACH_LOG family of macros along with a mach_error_t (kern_return_t)
14 // containing a Mach error. The error value will be decoded so that logged 16 // containing a Mach error. The error value will be decoded so that logged
15 // messages explain the error. 17 // messages explain the error.
16 // 18 //
17 // Use the BOOTSTRAP_LOG family of macros specifically for errors that occur 19 // Use the BOOTSTRAP_LOG family of macros specifically for errors that occur
18 // while interoperating with the bootstrap subsystem. These errors will first 20 // while interoperating with the bootstrap subsystem. These errors will first
19 // be looked up as bootstrap error messages. If no match is found, they will 21 // be looked up as bootstrap error messages. If no match is found, they will
20 // be treated as generic Mach errors, as in MACH_LOG. 22 // be treated as generic Mach errors, as in MACH_LOG.
21 // 23 //
22 // Examples: 24 // Examples:
23 // 25 //
24 // kern_return_t kr = mach_timebase_info(&info); 26 // kern_return_t kr = mach_timebase_info(&info);
25 // if (kr != KERN_SUCCESS) { 27 // if (kr != KERN_SUCCESS) {
26 // MACH_LOG(ERROR, kr) << "mach_timebase_info"; 28 // MACH_LOG(ERROR, kr) << "mach_timebase_info";
27 // } 29 // }
28 // 30 //
29 // kr = mach_vm_deallocate(task, address, size); 31 // kr = vm_deallocate(task, address, size);
30 // MACH_DCHECK(kr == KERN_SUCCESS, kr) << "mach_vm_deallocate"; 32 // MACH_DCHECK(kr == KERN_SUCCESS, kr) << "vm_deallocate";
31 33
32 namespace logging { 34 namespace logging {
33 35
34 class MachLogMessage : public logging::LogMessage { 36 class BASE_EXPORT MachLogMessage : public logging::LogMessage {
35 public: 37 public:
36 MachLogMessage(const char* file_path, 38 MachLogMessage(const char* file_path,
37 int line, 39 int line,
38 LogSeverity severity, 40 LogSeverity severity,
39 mach_error_t mach_err); 41 mach_error_t mach_err);
40 ~MachLogMessage(); 42 ~MachLogMessage();
41 43
42 private: 44 private:
43 mach_error_t mach_err_; 45 mach_error_t mach_err_;
44 46
45 DISALLOW_COPY_AND_ASSIGN(MachLogMessage); 47 DISALLOW_COPY_AND_ASSIGN(MachLogMessage);
46 }; 48 };
47 49
48 class BootstrapLogMessage : public logging::LogMessage {
49 public:
50 BootstrapLogMessage(const char* file_path,
51 int line,
52 LogSeverity severity,
53 kern_return_t bootstrap_err);
54 ~BootstrapLogMessage();
55
56 private:
57 kern_return_t bootstrap_err_;
58
59 DISALLOW_COPY_AND_ASSIGN(BootstrapLogMessage);
60 };
61
62 } // namespace logging 50 } // namespace logging
63 51
52 #if defined(NDEBUG)
53 #define MACH_DVLOG_IS_ON(verbose_level) 0
54 #else
55 #define MACH_DVLOG_IS_ON(verbose_level) VLOG_IS_ON(verbose_level)
56 #endif
57
64 #define MACH_LOG_STREAM(severity, mach_err) \ 58 #define MACH_LOG_STREAM(severity, mach_err) \
65 COMPACT_GOOGLE_LOG_EX_ ## severity(MachLogMessage, mach_err).stream() 59 COMPACT_GOOGLE_LOG_EX_ ## severity(MachLogMessage, mach_err).stream()
66 #define MACH_VLOG_STREAM(verbose_level, mach_err) \ 60 #define MACH_VLOG_STREAM(verbose_level, mach_err) \
67 logging::MachLogMessage(__FILE__, __LINE__, \ 61 logging::MachLogMessage(__FILE__, __LINE__, \
68 -verbose_level, mach_err).stream() 62 -verbose_level, mach_err).stream()
69 63
70 #define MACH_LOG(severity, mach_err) \ 64 #define MACH_LOG(severity, mach_err) \
71 LAZY_STREAM(MACH_LOG_STREAM(severity, mach_err), LOG_IS_ON(severity)) 65 LAZY_STREAM(MACH_LOG_STREAM(severity, mach_err), LOG_IS_ON(severity))
72 #define MACH_LOG_IF(severity, condition, mach_err) \ 66 #define MACH_LOG_IF(severity, condition, mach_err) \
73 LAZY_STREAM(MACH_LOG_STREAM(severity, mach_err), \ 67 LAZY_STREAM(MACH_LOG_STREAM(severity, mach_err), \
(...skipping 11 matching lines...) Expand all
85 << "Check failed: " # condition << ". " 79 << "Check failed: " # condition << ". "
86 80
87 #define MACH_DLOG(severity, mach_err) \ 81 #define MACH_DLOG(severity, mach_err) \
88 LAZY_STREAM(MACH_LOG_STREAM(severity, mach_err), DLOG_IS_ON(severity)) 82 LAZY_STREAM(MACH_LOG_STREAM(severity, mach_err), DLOG_IS_ON(severity))
89 #define MACH_DLOG_IF(severity, condition, mach_err) \ 83 #define MACH_DLOG_IF(severity, condition, mach_err) \
90 LAZY_STREAM(MACH_LOG_STREAM(severity, mach_err), \ 84 LAZY_STREAM(MACH_LOG_STREAM(severity, mach_err), \
91 DLOG_IS_ON(severity) && (condition)) 85 DLOG_IS_ON(severity) && (condition))
92 86
93 #define MACH_DVLOG(verbose_level, mach_err) \ 87 #define MACH_DVLOG(verbose_level, mach_err) \
94 LAZY_STREAM(MACH_VLOG_STREAM(verbose_level, mach_err), \ 88 LAZY_STREAM(MACH_VLOG_STREAM(verbose_level, mach_err), \
95 DVLOG_IS_ON(verbose_level)) 89 MACH_DVLOG_IS_ON(verbose_level))
96 #define MACH_DVLOG_IF(verbose_level, condition, mach_err) \ 90 #define MACH_DVLOG_IF(verbose_level, condition, mach_err) \
97 LAZY_STREAM(MACH_VLOG_STREAM(verbose_level, mach_err) \ 91 LAZY_STREAM(MACH_VLOG_STREAM(verbose_level, mach_err), \
98 DVLOG_IS_ON(verbose_level) && (condition)) 92 MACH_DVLOG_IS_ON(verbose_level) && (condition))
99 93
100 #define MACH_DCHECK(condition, mach_err) \ 94 #define MACH_DCHECK(condition, mach_err) \
101 LAZY_STREAM(MACH_LOG_STREAM(FATAL, mach_err), \ 95 LAZY_STREAM(MACH_LOG_STREAM(FATAL, mach_err), \
102 DCHECK_IS_ON && !(condition)) \ 96 DCHECK_IS_ON && !(condition)) \
103 << "Check failed: " # condition << ". " 97 << "Check failed: " # condition << ". "
104 98
99 #if !defined(OS_IOS)
100
101 namespace logging {
102
103 class BASE_EXPORT BootstrapLogMessage : public logging::LogMessage {
104 public:
105 BootstrapLogMessage(const char* file_path,
106 int line,
107 LogSeverity severity,
108 kern_return_t bootstrap_err);
109 ~BootstrapLogMessage();
110
111 private:
112 kern_return_t bootstrap_err_;
113
114 DISALLOW_COPY_AND_ASSIGN(BootstrapLogMessage);
115 };
116
117 } // namespace logging
118
119 #define BOOTSTRAP_DVLOG_IS_ON MACH_DVLOG_IS_ON
120
105 #define BOOTSTRAP_LOG_STREAM(severity, bootstrap_err) \ 121 #define BOOTSTRAP_LOG_STREAM(severity, bootstrap_err) \
106 COMPACT_GOOGLE_LOG_EX_ ## severity(BootstrapLogMessage, \ 122 COMPACT_GOOGLE_LOG_EX_ ## severity(BootstrapLogMessage, \
107 bootstrap_err).stream() 123 bootstrap_err).stream()
108 #define BOOTSTRAP_VLOG_STREAM(verbose_level, bootstrap_err) \ 124 #define BOOTSTRAP_VLOG_STREAM(verbose_level, bootstrap_err) \
109 logging::BootstrapLogMessage(__FILE__, __LINE__, \ 125 logging::BootstrapLogMessage(__FILE__, __LINE__, \
110 -verbose_level, bootstrap_err).stream() 126 -verbose_level, bootstrap_err).stream()
111 127
112 #define BOOTSTRAP_LOG(severity, bootstrap_err) \ 128 #define BOOTSTRAP_LOG(severity, bootstrap_err) \
113 LAZY_STREAM(BOOTSTRAP_LOG_STREAM(severity, \ 129 LAZY_STREAM(BOOTSTRAP_LOG_STREAM(severity, \
114 bootstrap_err), LOG_IS_ON(severity)) 130 bootstrap_err), LOG_IS_ON(severity))
(...skipping 14 matching lines...) Expand all
129 145
130 #define BOOTSTRAP_DLOG(severity, bootstrap_err) \ 146 #define BOOTSTRAP_DLOG(severity, bootstrap_err) \
131 LAZY_STREAM(BOOTSTRAP_LOG_STREAM(severity, bootstrap_err), \ 147 LAZY_STREAM(BOOTSTRAP_LOG_STREAM(severity, bootstrap_err), \
132 DLOG_IS_ON(severity)) 148 DLOG_IS_ON(severity))
133 #define BOOTSTRAP_DLOG_IF(severity, condition, bootstrap_err) \ 149 #define BOOTSTRAP_DLOG_IF(severity, condition, bootstrap_err) \
134 LAZY_STREAM(BOOTSTRAP_LOG_STREAM(severity, bootstrap_err), \ 150 LAZY_STREAM(BOOTSTRAP_LOG_STREAM(severity, bootstrap_err), \
135 DLOG_IS_ON(severity) && (condition)) 151 DLOG_IS_ON(severity) && (condition))
136 152
137 #define BOOTSTRAP_DVLOG(verbose_level, bootstrap_err) \ 153 #define BOOTSTRAP_DVLOG(verbose_level, bootstrap_err) \
138 LAZY_STREAM(BOOTSTRAP_VLOG_STREAM(verbose_level, bootstrap_err), \ 154 LAZY_STREAM(BOOTSTRAP_VLOG_STREAM(verbose_level, bootstrap_err), \
139 DVLOG_IS_ON(verbose_level)) 155 BOOTSTRAP_DVLOG_IS_ON(verbose_level))
140 #define BOOTSTRAP_DVLOG_IF(verbose_level, condition, bootstrap_err) \ 156 #define BOOTSTRAP_DVLOG_IF(verbose_level, condition, bootstrap_err) \
141 LAZY_STREAM(BOOTSTRAP_VLOG_STREAM(verbose_level, bootstrap_err) \ 157 LAZY_STREAM(BOOTSTRAP_VLOG_STREAM(verbose_level, bootstrap_err), \
142 DVLOG_IS_ON(verbose_level) && (condition)) 158 BOOTSTRAP_DVLOG_IS_ON(verbose_level) && (condition))
143 159
144 #define BOOTSTRAP_DCHECK(condition, bootstrap_err) \ 160 #define BOOTSTRAP_DCHECK(condition, bootstrap_err) \
145 LAZY_STREAM(BOOTSTRAP_LOG_STREAM(FATAL, bootstrap_err), \ 161 LAZY_STREAM(BOOTSTRAP_LOG_STREAM(FATAL, bootstrap_err), \
146 DCHECK_IS_ON && !(condition)) \ 162 DCHECK_IS_ON && !(condition)) \
147 << "Check failed: " # condition << ". " 163 << "Check failed: " # condition << ". "
148 164
165 #endif // !OS_IOS
166
149 #endif // BASE_MAC_MACH_LOGGING_H_ 167 #endif // BASE_MAC_MACH_LOGGING_H_
OLDNEW
« no previous file with comments | « base/mac/mac_logging.h ('k') | base/mac/mach_logging.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698