]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Sample/Tools/Source/ProcessDsc/MultiThread.h
Sync all bug fixes between EDK1.04 and EDK1.06 into EdkCompatibilityPkg.
[mirror_edk2.git] / EdkCompatibilityPkg / Sample / Tools / Source / ProcessDsc / MultiThread.h
diff --git a/EdkCompatibilityPkg/Sample/Tools/Source/ProcessDsc/MultiThread.h b/EdkCompatibilityPkg/Sample/Tools/Source/ProcessDsc/MultiThread.h
new file mode 100644 (file)
index 0000000..7a5566a
--- /dev/null
@@ -0,0 +1,116 @@
+/*++\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