author | lorewang |
Mon, 22 Nov 2010 10:56:31 +0800 | |
changeset 700 | c22eff170fac |
parent 695 | 46ca13b54f56 |
child 714 | e5a58c351011 |
permissions | -rw-r--r-- |
695
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
1 |
/* |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
2 |
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
3 |
* All rights reserved. |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
4 |
* This component and the accompanying materials are made available |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
5 |
* under the terms of the License "Eclipse Public License v1.0" |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
6 |
* which accompanies this distribution, and is available |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
8 |
* |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
9 |
* Initial Contributors: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
10 |
* Nokia Corporation - initial contribution. |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
11 |
* |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
12 |
* Contributors: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
13 |
* |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
14 |
* Description: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
15 |
* |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
16 |
*/ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
17 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
18 |
#ifndef __SYMBOLGENERATOR_H__ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
19 |
#define __SYMBOLGENERATOR_H__ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
20 |
#include <queue> |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
21 |
#include <string> |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
22 |
#include <fstream> |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
23 |
using namespace std; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
24 |
#include <boost/thread/thread.hpp> |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
25 |
#include <boost/thread/condition.hpp> |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
26 |
#include "symbolprocessunit.h" |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
27 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
28 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
29 |
enum TSymbolType { |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
30 |
ESymCommon = 0, |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
31 |
ESymBsym , |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
32 |
}; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
33 |
enum TImageType { |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
34 |
ERomImage = 0, |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
35 |
ERofsImage, |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
36 |
EUnknownType, |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
37 |
}; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
38 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
39 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
40 |
class SymbolGenerator : public boost::thread { |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
41 |
public: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
42 |
static SymbolGenerator* GetInstance(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
43 |
static void Release(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
44 |
void SetSymbolFileName( const string& fileName ); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
45 |
void AddFile( const string& fileName, bool isExecutable ); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
46 |
void AddEntry(const TPlacedEntry& aEntry); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
47 |
bool HasFinished() { return iFinished; } |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
48 |
void SetFinished(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
49 |
bool IsEmpty() { return iQueueFiles.empty(); } |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
50 |
void LockOutput() { iOutputMutex.lock(); } |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
51 |
void UnlockOutput() { iOutputMutex.unlock(); } |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
52 |
TPlacedEntry GetNextPlacedEntry(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
53 |
ofstream& GetOutputFileStream() { return iSymFile; }; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
54 |
void AppendMapFileInfo(MapFileInfo& aMapFileInfo) { iMapFileInfoSet.push_back(aMapFileInfo); } |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
55 |
void FlushSymbolFileContent(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
56 |
void SetImageType(TImageType aImageType) { iImageType = aImageType; }; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
57 |
TImageType GetImageType() { return iImageType; }; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
58 |
private: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
59 |
SymbolGenerator(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
60 |
~SymbolGenerator(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
61 |
static void thrd_func(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
62 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
63 |
queue<TPlacedEntry> iQueueFiles; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
64 |
boost::mutex iMutex; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
65 |
boost::mutex iOutputMutex; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
66 |
static boost::mutex iMutexSingleton; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
67 |
static SymbolGenerator* iInst; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
68 |
boost::condition_variable iCond; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
69 |
bool iFinished; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
70 |
TSymbolType iSymbolType; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
71 |
TImageType iImageType; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
72 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
73 |
ofstream iSymFile; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
74 |
MapFileInfoSet iMapFileInfoSet; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
75 |
}; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
76 |
class SymbolWorker{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
77 |
public: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
78 |
SymbolWorker(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
79 |
~SymbolWorker(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
80 |
void operator()(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
81 |
private: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
82 |
}; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
83 |
class PageCompressWorker { |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
84 |
public: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
85 |
PageCompressWorker(TCompressedHeaderInfo* aHeaderInfo, char* aChar); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
86 |
~PageCompressWorker(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
87 |
void operator()(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
88 |
static TCompressedHeaderInfo * pHeaderInfo; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
89 |
static int currentPage; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
90 |
static boost::mutex m_mutex; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
91 |
static int m_error; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
92 |
static char* iChar; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
93 |
}; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
94 |
#endif |