--- /dev/null
+/*++\r
+\r
+Copyright (c) 2008 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution. The full text of the license may be found at \r
+http://opensource.org/licenses/bsd-license.php \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Module Name: \r
+\r
+ MultiThread.h\r
+ \r
+Abstract:\r
+\r
+ Defines and function prototypes for the ProcessDsc utility.\r
+ \r
+--*/\r
+\r
+#ifndef _MULTI_THREAD_H_\r
+#define _MULTI_THREAD_H_\r
+\r
+typedef struct _COMPONENTS_ITEM COMPONENTS_ITEM;\r
+typedef struct _BUILD_ITEM BUILD_ITEM;\r
+typedef struct _SOURCE_FILE_ITEM SOURCE_FILE_ITEM;\r
+typedef struct _DEPENDENCY_ITEM DEPENDENCY_ITEM;\r
+\r
+//\r
+// Use this structure to keep track of module build items\r
+//\r
+typedef struct _BUILD_ITEM {\r
+ BUILD_ITEM *Next;\r
+ INT8 *BaseName;\r
+ INT8 *Processor;\r
+ INT8 *Makefile;\r
+ UINT32 Index;\r
+ UINT32 CompleteFlag;\r
+ SOURCE_FILE_ITEM *SourceFileList;\r
+ DEPENDENCY_ITEM *DependencyList;\r
+} BUILD_ITEM;\r
+\r
+//\r
+// Use this structure to keep track of module source files\r
+//\r
+typedef struct _SOURCE_FILE_ITEM {\r
+ SOURCE_FILE_ITEM *Next;\r
+ INT8 *FileName;\r
+} SOURCE_FILE_ITEM;\r
+\r
+//\r
+// Use this structure to keep track of module build dependencies\r
+//\r
+typedef struct _DEPENDENCY_ITEM {\r
+ DEPENDENCY_ITEM *Next;\r
+ BUILD_ITEM *Dependency;\r
+} DEPENDENCY_ITEM;\r
+\r
+//\r
+// Use this structure to keep track of [components] and [components.n] sections\r
+//\r
+typedef struct _COMPONENTS_ITEM {\r
+ COMPONENTS_ITEM *Next;\r
+ BUILD_ITEM *BuildList;\r
+} COMPONENTS_ITEM;\r
+\r
+//\r
+// Function prototypes\r
+//\r
+BUILD_ITEM *\r
+AddBuildItem (\r
+ BUILD_ITEM **BuildList,\r
+ INT8 *BaseName,\r
+ INT8 *Processor,\r
+ INT8 *Makefile\r
+ );\r
+\r
+\r
+SOURCE_FILE_ITEM *\r
+AddSourceFile (\r
+ BUILD_ITEM *BuildItem, \r
+ INT8 *FileName\r
+ );\r
+\r
+DEPENDENCY_ITEM *\r
+AddDependency (\r
+ BUILD_ITEM *BuildList, \r
+ BUILD_ITEM *BuildItem, \r
+ INT8 *BaseName,\r
+ INT8 AdjustIndex\r
+ );\r
+\r
+void\r
+FreeBuildList (\r
+ BUILD_ITEM *BuildList\r
+ );\r
+\r
+COMPONENTS_ITEM *\r
+AddComponentsItem (\r
+ COMPONENTS_ITEM **ComponentsList\r
+ );\r
+\r
+void\r
+FreeComponentsList (\r
+ COMPONENTS_ITEM *ComponentsList\r
+ );\r
+ \r
+INT8\r
+StartMultiThreadBuild (\r
+ BUILD_ITEM **BuildList,\r
+ UINT32 ThreadNumber,\r
+ INT8 *BuildDir\r
+ );\r
+\r
+#endif // ifndef _MULTI_THREAD_H_\r