__init__.py (2969:d2f8f9a23082) | __init__.py (3101:6cce868ddaa6) |
---|---|
1# Copyright (c) 2005 The Regents of The University of Michigan 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright --- 57 unchanged lines hidden (view full) --- 66import smartdict 67build_env = smartdict.SmartDict() 68build_env.update(defines.m5_build_env) 69 70# make a SmartDict out of the OS environment too 71env = smartdict.SmartDict() 72env.update(os.environ) 73 | 1# Copyright (c) 2005 The Regents of The University of Michigan 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright --- 57 unchanged lines hidden (view full) --- 66import smartdict 67build_env = smartdict.SmartDict() 68build_env.update(defines.m5_build_env) 69 70# make a SmartDict out of the OS environment too 71env = smartdict.SmartDict() 72env.update(os.environ) 73 |
74# Function to provide to C++ so it can look up instances based on paths 75def resolveSimObject(name): 76 obj = config.instanceDict[name] 77 return obj.getCCObject() 78 | |
79from main import options, arguments, main 80 81# The final hook to generate .ini files. Called from the user script 82# once the config is built. 83def instantiate(root): | 74from main import options, arguments, main 75 76# The final hook to generate .ini files. Called from the user script 77# once the config is built. 78def instantiate(root): |
84 config.ticks_per_sec = float(root.clock.frequency) | 79 params.ticks_per_sec = float(root.clock.frequency) |
85 # ugly temporary hack to get output to config.ini 86 sys.stdout = file(os.path.join(options.outdir, 'config.ini'), 'w') 87 root.print_ini() 88 sys.stdout.close() # close config.ini 89 sys.stdout = sys.__stdout__ # restore to original 90 cc_main.loadIniFile(resolveSimObject) # load config.ini into C++ 91 root.createCCObject() 92 root.connectPorts() --- 11 unchanged lines hidden (view full) --- 104 105# Export curTick to user script. 106def curTick(): 107 return cc_main.cvar.curTick 108 109# register our C++ exit callback function with Python 110atexit.register(cc_main.doExitCleanup) 111 | 80 # ugly temporary hack to get output to config.ini 81 sys.stdout = file(os.path.join(options.outdir, 'config.ini'), 'w') 82 root.print_ini() 83 sys.stdout.close() # close config.ini 84 sys.stdout = sys.__stdout__ # restore to original 85 cc_main.loadIniFile(resolveSimObject) # load config.ini into C++ 86 root.createCCObject() 87 root.connectPorts() --- 11 unchanged lines hidden (view full) --- 99 100# Export curTick to user script. 101def curTick(): 102 return cc_main.cvar.curTick 103 104# register our C++ exit callback function with Python 105atexit.register(cc_main.doExitCleanup) 106 |
112# This import allows user scripts to reference 'm5.objects.Foo' after 113# just doing an 'import m5' (without an 'import m5.objects'). May not 114# matter since most scripts will probably 'from m5.objects import *'. 115import objects 116 | |
117# This loops until all objects have been fully drained. 118def doDrain(root): 119 all_drained = drain(root) 120 while (not all_drained): 121 all_drained = drain(root) 122 123# Tries to drain all objects. Draining might not be completed unless 124# all objects return that they are drained on the first call. This is --- 76 unchanged lines hidden (view full) --- 201 for old_cpu in old_cpus: 202 old_cpu._ccObject.switchOut() 203 index = 0 204 print "Switching CPUs" 205 for new_cpu in new_cpus: 206 new_cpu.takeOverFrom(old_cpus[index]) 207 new_cpu._ccObject.resume() 208 index += 1 | 107# This loops until all objects have been fully drained. 108def doDrain(root): 109 all_drained = drain(root) 110 while (not all_drained): 111 all_drained = drain(root) 112 113# Tries to drain all objects. Draining might not be completed unless 114# all objects return that they are drained on the first call. This is --- 76 unchanged lines hidden (view full) --- 191 for old_cpu in old_cpus: 192 old_cpu._ccObject.switchOut() 193 index = 0 194 print "Switching CPUs" 195 for new_cpu in new_cpus: 196 new_cpu.takeOverFrom(old_cpus[index]) 197 new_cpu._ccObject.resume() 198 index += 1 |
199 200# Since we have so many mutual imports in this package, we should: 201# 1. Put all intra-package imports at the *bottom* of the file, unless 202# they're absolutely needed before that (for top-level statements 203# or class attributes). Imports of "trivial" packages that don't 204# import other packages (e.g., 'smartdict') can be at the top. 205# 2. Never use 'from foo import *' on an intra-package import since 206# you can get the wrong result if foo is only partially imported 207# at the point you do that (i.e., because foo is in the middle of 208# importing *you*). 209import objects 210import params |
|