]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Sample/Tools/Source/ProcessDsc/MultiThread.h
7a5566a91352978c42308605b2ea2eff35373175
[mirror_edk2.git] / EdkCompatibilityPkg / Sample / Tools / Source / ProcessDsc / MultiThread.h
1 /*++
2
3 Copyright (c) 2008 - 2010, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 MultiThread.h
15
16 Abstract:
17
18 Defines and function prototypes for the ProcessDsc utility.
19
20 --*/
21
22 #ifndef _MULTI_THREAD_H_
23 #define _MULTI_THREAD_H_
24
25 typedef struct _COMPONENTS_ITEM COMPONENTS_ITEM;
26 typedef struct _BUILD_ITEM BUILD_ITEM;
27 typedef struct _SOURCE_FILE_ITEM SOURCE_FILE_ITEM;
28 typedef struct _DEPENDENCY_ITEM DEPENDENCY_ITEM;
29
30 //
31 // Use this structure to keep track of module build items
32 //
33 typedef struct _BUILD_ITEM {
34 BUILD_ITEM *Next;
35 INT8 *BaseName;
36 INT8 *Processor;
37 INT8 *Makefile;
38 UINT32 Index;
39 UINT32 CompleteFlag;
40 SOURCE_FILE_ITEM *SourceFileList;
41 DEPENDENCY_ITEM *DependencyList;
42 } BUILD_ITEM;
43
44 //
45 // Use this structure to keep track of module source files
46 //
47 typedef struct _SOURCE_FILE_ITEM {
48 SOURCE_FILE_ITEM *Next;
49 INT8 *FileName;
50 } SOURCE_FILE_ITEM;
51
52 //
53 // Use this structure to keep track of module build dependencies
54 //
55 typedef struct _DEPENDENCY_ITEM {
56 DEPENDENCY_ITEM *Next;
57 BUILD_ITEM *Dependency;
58 } DEPENDENCY_ITEM;
59
60 //
61 // Use this structure to keep track of [components] and [components.n] sections
62 //
63 typedef struct _COMPONENTS_ITEM {
64 COMPONENTS_ITEM *Next;
65 BUILD_ITEM *BuildList;
66 } COMPONENTS_ITEM;
67
68 //
69 // Function prototypes
70 //
71 BUILD_ITEM *
72 AddBuildItem (
73 BUILD_ITEM **BuildList,
74 INT8 *BaseName,
75 INT8 *Processor,
76 INT8 *Makefile
77 );
78
79
80 SOURCE_FILE_ITEM *
81 AddSourceFile (
82 BUILD_ITEM *BuildItem,
83 INT8 *FileName
84 );
85
86 DEPENDENCY_ITEM *
87 AddDependency (
88 BUILD_ITEM *BuildList,
89 BUILD_ITEM *BuildItem,
90 INT8 *BaseName,
91 INT8 AdjustIndex
92 );
93
94 void
95 FreeBuildList (
96 BUILD_ITEM *BuildList
97 );
98
99 COMPONENTS_ITEM *
100 AddComponentsItem (
101 COMPONENTS_ITEM **ComponentsList
102 );
103
104 void
105 FreeComponentsList (
106 COMPONENTS_ITEM *ComponentsList
107 );
108
109 INT8
110 StartMultiThreadBuild (
111 BUILD_ITEM **BuildList,
112 UINT32 ThreadNumber,
113 INT8 *BuildDir
114 );
115
116 #endif // ifndef _MULTI_THREAD_H_