3 # Copyright (c) 2004 The Regents of The University of Michigan
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are
8 # met: redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer;
10 # redistributions in binary form must reproduce the above copyright
11 # notice, this list of conditions and the following disclaimer in the
12 # documentation and/or other materials provided with the distribution;
13 # neither the name of the copyright holders nor the names of its
14 # contributors may be used to endorse or promote products derived from
15 # this software without specific prior written permission.
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 # This file generates the header and source files for the flags
31 # that control the tracing facility.
33 hhfilename
="traceflags.hh"
34 ccfilename
="traceflags.cc"
37 # The list of trace flags that can be used to condition DPRINTFs etc.
38 # To define a new flag, simply add it to this list.
117 # "Compound" flags correspond to a set of base flags. These exist
118 # solely for convenience in setting them via the command line: if a
119 # compound flag is specified, all of the corresponding base flags are
120 # set. Compound flags cannot be used directly in DPRINTFs etc.
121 # To define a new compound flag, add a new entry to this hash
122 # following the existing examples.
125 'GDBAll' : [ 'GDBMisc', 'GDBAcc', 'GDBRead', 'GDBWrite', 'GDBSend', 'GDBRecv', 'GDBExtra' ],
126 'ScsiAll' : [ 'ScsiDisk', 'ScsiCtrl', 'ScsiNone' ],
127 'DiskImageAll' : [ 'DiskImage', 'DiskImageRead', 'DiskImageWrite' ],
128 'EthernetAll' : [ 'Ethernet', 'EthernetPIO', 'EthernetDMA', 'EthernetData' ],
129 'IdeAll' : [ 'IdeCtrl', 'IdeDisk' ]
132 #############################################################
134 # Everything below this point generates the appropriate C++
135 # declarations and definitions for the trace flags. If you are simply
136 # adding or modifying flag definitions, you should not have to change
142 # extract just the compound flag names into a list
144 compoundFlags
.extend(compoundFlagMap
.keys())
148 # First generate the header file. This defines the Flag enum
149 # and some extern declarations for the .cc file.
152 hhfile
= file(hhfilename
, 'w')
154 sys
.exit("can't open %s: %s" % (hhfilename
, e
))
156 # file header boilerplate
157 print >>hhfile
, '''/* $Id $ */
161 * The Regents of The University of Michigan
162 * All Rights Reserved
164 * This code is part of the M5 simulator, developed by Nathan Binkert,
165 * Erik Hallnor, Steve Raasch, and Steve Reinhardt, with contributions
166 * from Ron Dreslinski, Dave Greene, and Lisa Hsu.
168 * Permission is granted to use, copy, create derivative works and
169 * redistribute this software and such derivative works for any
170 * purpose, so long as the copyright notice above, this grant of
171 * permission, and the disclaimer below appear in all copies made; and
172 * so long as the name of The University of Michigan is not used in
173 * any advertising or publicity pertaining to the use or distribution
174 * of this software without specific, written prior authorization.
176 * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE
177 * UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND
178 * WITHOUT WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER
179 * EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
180 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
181 * PURPOSE. THE REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE
182 * LIABLE FOR ANY DAMAGES, INCLUDING DIRECT, SPECIAL, INDIRECT,
183 * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM
184 * ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN
185 * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH
190 * DO NOT EDIT THIS FILE!
192 * Automatically generated from traceflags.py
195 #ifndef __BASE_TRACE_FLAGS_HH__
196 #define __BASE_TRACE_FLAGS_HH__
203 # Generate the enum. Base flags come first, then compound flags.
205 for flag
in baseFlags
:
206 print >>hhfile
, ' %s = %d,' % (flag
, idx
)
210 print >>hhfile
, ' NumFlags = %d,' % idx
212 # put a comment in here to separate base from compound flags
214 // The remaining enum values are *not* valid indices for Trace::flags.
215 // They are "compound" flags, which correspond to sets of base
216 // flags, and are used only by TraceParamContext::setFlags().
219 for flag
in compoundFlags
:
220 print >>hhfile
, ' %s = %d,' % (flag
, idx
)
223 numCompoundFlags
= idx
- numBaseFlags
224 print >>hhfile
, ' NumCompoundFlags = %d' % numCompoundFlags
226 # trailer boilerplate
230 // Array of strings for SimpleEnumParam
231 extern const char *flagStrings[];
232 extern const int numFlagStrings;
234 // Array of arraay pointers: for each compound flag, gives the list of
235 // base flags to set. Inidividual flag arrays are terminated by -1.
236 extern const Flags *compoundFlags[];
238 /* namespace Trace */ }
240 #endif // __BASE_TRACE_FLAGS_HH__
247 # Print out .cc file with array definitions.
251 ccfile
= file(ccfilename
, 'w')
253 sys
.exit("can't open %s: %s" % (ccfilename
, e
))
261 * The Regents of The University of Michigan
262 * All Rights Reserved
264 * This code is part of the M5 simulator, developed by Nathan Binkert,
265 * Erik Hallnor, Steve Raasch, and Steve Reinhardt, with contributions
266 * from Ron Dreslinski, Dave Greene, and Lisa Hsu.
268 * Permission is granted to use, copy, create derivative works and
269 * redistribute this software and such derivative works for any
270 * purpose, so long as the copyright notice above, this grant of
271 * permission, and the disclaimer below appear in all copies made; and
272 * so long as the name of The University of Michigan is not used in
273 * any advertising or publicity pertaining to the use or distribution
274 * of this software without specific, written prior authorization.
276 * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE
277 * UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND
278 * WITHOUT WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER
279 * EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
280 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
281 * PURPOSE. THE REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE
282 * LIABLE FOR ANY DAMAGES, INCLUDING DIRECT, SPECIAL, INDIRECT,
283 * INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM
284 * ARISING OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN
285 * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH
290 * DO NOT EDIT THIS FILE!
292 * Automatically generated from traceflags.pl.
295 #include "base/traceflags.hh"
297 using namespace Trace;
299 const char *Trace::flagStrings[] =
303 # The string array is used by SimpleEnumParam to map the strings
304 # provided by the user to enum values.
305 for flag
in baseFlags
:
306 print >>ccfile
, ' "%s",' % flag
308 for flag
in compoundFlags
:
309 print >>ccfile
, ' "%s",' % flag
311 print >>ccfile
, '};\n'
313 numFlagStrings
= len(baseFlags
) + len(compoundFlags
);
315 print >>ccfile
, 'const int Trace::numFlagStrings = %d;' % numFlagStrings
319 # Now define the individual compound flag arrays. There is an array
320 # for each compound flag listing the component base flags.
323 for flag
in compoundFlags
:
324 flags
= compoundFlagMap
[flag
]
325 flags
.append('(Flags)-1')
326 print >>ccfile
, 'static const Flags %sMap[] =' % flag
327 print >>ccfile
, '{ %s };' % (', '.join(flags
))
331 # Finally the compoundFlags[] array maps the compound flags
332 # to their individual arrays/
334 print >>ccfile
, 'const Flags *Trace::compoundFlags[] ='
337 for flag
in compoundFlags
:
338 print >>ccfile
, ' %sMap,' % flag