def kill(self):\r
self.feedback_q.put(None)\r
class AutoGenWorkerInProcess(mp.Process):\r
- def __init__(self,module_queue,data_pipe_file_path,feedback_q,file_lock,error_event):\r
+ def __init__(self,module_queue,data_pipe_file_path,feedback_q,file_lock, share_data,error_event):\r
mp.Process.__init__(self)\r
self.module_queue = module_queue\r
self.data_pipe_file_path =data_pipe_file_path\r
self.feedback_q = feedback_q\r
self.PlatformMetaFileSet = {}\r
self.file_lock = file_lock\r
+ self.share_data = share_data\r
self.error_event = error_event\r
def GetPlatformMetaFile(self,filepath,root):\r
try:\r
import Common.GlobalData as GlobalData\r
from GenFds.GenFds import GenFds, GenFdsApi\r
import multiprocessing as mp\r
+from multiprocessing import Manager\r
\r
# Version and Copyright\r
VersionNumber = "0.60" + ' ' + gBUILD_VERSION\r
self.AutoGenMgr = None\r
EdkLogger.info("")\r
os.chdir(self.WorkspaceDir)\r
- def StartAutoGen(self,mqueue, DataPipe,SkipAutoGen,PcdMaList):\r
+ self.share_data = Manager().dict()\r
+ def StartAutoGen(self,mqueue, DataPipe,SkipAutoGen,PcdMaList,share_data):\r
try:\r
if SkipAutoGen:\r
return True,0\r
feedback_q = mp.Queue()\r
file_lock = mp.Lock()\r
error_event = mp.Event()\r
- auto_workers = [AutoGenWorkerInProcess(mqueue,DataPipe.dump_file,feedback_q,file_lock,error_event) for _ in range(self.ThreadNumber)]\r
+ auto_workers = [AutoGenWorkerInProcess(mqueue,DataPipe.dump_file,feedback_q,file_lock,share_data,error_event) for _ in range(self.ThreadNumber)]\r
self.AutoGenMgr = AutoGenManager(auto_workers,feedback_q,error_event)\r
self.AutoGenMgr.start()\r
for w in auto_workers:\r
self.Progress.Start("Generating makefile and code")\r
data_pipe_file = os.path.join(AutoGenObject.BuildDir, "GlobalVar_%s_%s.bin" % (str(AutoGenObject.Guid),AutoGenObject.Arch))\r
AutoGenObject.DataPipe.dump(data_pipe_file)\r
- autogen_rt,errorcode = self.StartAutoGen(mqueue, AutoGenObject.DataPipe, self.SkipAutoGen, PcdMaList)\r
+ autogen_rt, errorcode = self.StartAutoGen(mqueue, AutoGenObject.DataPipe, self.SkipAutoGen, PcdMaList,self.share_data)\r
self.Progress.Stop("done!")\r
if not autogen_rt:\r
self.AutoGenMgr.TerminateWorkers()\r
mqueue.put(m)\r
data_pipe_file = os.path.join(Pa.BuildDir, "GlobalVar_%s_%s.bin" % (str(Pa.Guid),Pa.Arch))\r
Pa.DataPipe.dump(data_pipe_file)\r
- autogen_rt, errorcode = self.StartAutoGen(mqueue, Pa.DataPipe, self.SkipAutoGen, PcdMaList)\r
+ autogen_rt, errorcode = self.StartAutoGen(mqueue, Pa.DataPipe, self.SkipAutoGen, PcdMaList,self.share_data)\r
self.Progress.Stop("done!")\r
self.AutoGenTime += int(round((time.time() - AutoGenStart)))\r
if not autogen_rt:\r