]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Finish spliting SecDispatchTableLib into two functions so it can be a BaseLib
authorandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 20 Sep 2010 21:04:07 +0000 (21:04 +0000)
committerandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 20 Sep 2010 21:04:07 +0000 (21:04 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10895 6f19259b-4bc3-4df7-8a09-765794883524

UnixPkg/Include/Library/SecDispatchTableLib.h
UnixPkg/Include/Protocol/UnixThunk.h
UnixPkg/Library/SecDispatchTableLib/SecDispatchTableLib.c
UnixPkg/Library/SecDispatchTableLib/SecDispatchTableLib.inf
UnixPkg/Sec/SecMain.c
UnixPkg/UnixPkg.dsc

index 6cebb58b9b486dbf6a7a90fc95c2d6db9741ebc1..9e220073f4d1ec0caed5a447647eb4a46356e54a 100644 (file)
@@ -17,21 +17,40 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #ifndef __SEC_DISPATCH_TABLE_LIB_H__
 #define __SEC_DISPATCH_TABLE_LIB_H__
 
 #ifndef __SEC_DISPATCH_TABLE_LIB_H__
 #define __SEC_DISPATCH_TABLE_LIB_H__
 
+
 /**
 /**
-  Allow an override of the Sec PPI Dispatch Table. This table contains PPIs passed
-  up from SEC to PEI. This function is responcible for allocating space for the 
-  overridden table.
+  Return the number of bytes that OverrideDispatchTable() will append to
+  the dispatch table.
+
+  @return  Size of table in bytes OverrideDispatchTable() will return
 
 
+**/
+UINTN
+EFIAPI
+OverrideDispatchTableExtraSize (
+  VOID
+  );
+  
+
+/**
+  Allow an override of the Sec PPI Dispatch Table. This table contains PPIs passed
+  up from SEC to PEI. 
 
 
-  @param  OriginalTable  SECs default PPI dispatch table
+  @param  OriginalTable         SECs default PPI dispatch table
+  @param  OriginalTableSize     Size of SECs default PPI dispatch table
+  @param  NewTable              New dispatch table
+  @param  NewTableSize          Size of of the NewTable in bytes
 
 
-  @return OriginalTable or override of the table
+  @return EFI_SUCCESS table was copied
 
 **/
 
 **/
-EFI_PEI_PPI_DESCRIPTOR *
+EFI_STATUS
 EFIAPI
 OverrideDispatchTable (
 EFIAPI
 OverrideDispatchTable (
-  IN  CONST EFI_PEI_PPI_DESCRIPTOR  *OriginalTable
+  IN CONST EFI_PEI_PPI_DESCRIPTOR          *OriginalTable,
+  IN       UINTN                           OriginalTableSize,
+  IN OUT   EFI_PEI_PPI_DESCRIPTOR          *NewTable,
+  IN       UINTN                           NewTableSize
   );
 
 
   );
 
 
index 689e32fd7d40d003e27715d194d60d6a312ea526..12d07f931130f82c645cadeb0699f258fc171a41 100644 (file)
@@ -373,13 +373,13 @@ typedef struct _EFI_UNIX_THUNK_PROTOCOL {
   UnixGetTimeZone                     GetTimeZone;
   UnixGetDayLight                     GetDayLight;
   UnixPoll                               Poll;
   UnixGetTimeZone                     GetTimeZone;
   UnixGetDayLight                     GetDayLight;
   UnixPoll                               Poll;
-  UnixRead                           Read;
-  UnixWrite                          Write;
-  UnixGetenv                         Getenv;
-  UnixOpen                           Open;
-  UnixSeek                           Lseek;
-  UnixFtruncate                      FTruncate;
-  UnixClose                          Close;
+  UnixRead                            Read;
+  UnixWrite                           Write;
+  UnixGetenv                          Getenv;
+  UnixOpen                            Open;
+  UnixSeek                            Lseek;
+  UnixFtruncate                       FTruncate;
+  UnixClose                           Close;
   UnixMkdir                           MkDir;
   UnixRmDir                           RmDir;
   UnixUnLink                          UnLink;
   UnixMkdir                           MkDir;
   UnixRmDir                           RmDir;
   UnixUnLink                          UnLink;
index da3d182f1e6bca5c4efc09135ac8b3bcf149f03d..924547d6b4cb0b1d034d135c5a2c9fe68ee3fffa 100644 (file)
@@ -14,23 +14,48 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 --*/\r
 \r
 #include <PiPei.h>\r
 --*/\r
 \r
 #include <PiPei.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/SecDispatchTableLib.h>\r
+\r
 \r
 /**\r
 \r
 /**\r
-  Allow an override of the Sec PPI Dispatch Table. This table contains PPIs passed\r
-  up from SEC to PEI. This function is responcible for allocating space for the \r
-  overridden table.\r
+  Return the number of bytes that OverrideDispatchTable() will append to\r
+  the dispatch table.\r
 \r
 \r
+  @return  Size of table in bytes OverrideDispatchTable() will return\r
 \r
 \r
-  @param  OriginalTable  SECs default PPI dispatch table\r
+**/\r
+UINTN\r
+EFIAPI\r
+OverrideDispatchTableExtraSize (\r
+  )\r
+{\r
+  return 0;\r
+}\r
 \r
 \r
-  @return OriginalTable or override of the table\r
+\r
+/**\r
+  Allow an override of the Sec PPI Dispatch Table. This table contains PPIs passed\r
+  up from SEC to PEI. \r
+\r
+  @param  OriginalTable         SECs default PPI dispatch table\r
+  @param  OriginalTableSize     Size of SECs default PPI dispatch table\r
+  @param  NewTable              New dispatch table\r
+  @param  NewTableSize          Size of of the NewTable in bytes\r
+\r
+  @return EFI_SUCCESS table was copied\r
 \r
 **/\r
 \r
 **/\r
-EFI_PEI_PPI_DESCRIPTOR *\r
+EFI_STATUS\r
 EFIAPI\r
 OverrideDispatchTable (\r
 EFIAPI\r
 OverrideDispatchTable (\r
-  IN CONST EFI_PEI_PPI_DESCRIPTOR          *OriginalTable\r
+  IN CONST EFI_PEI_PPI_DESCRIPTOR          *OriginalTable,\r
+  IN       UINTN                           OriginalTableSize,\r
+  IN OUT   EFI_PEI_PPI_DESCRIPTOR          *NewTable,\r
+  IN       UINTN                           NewTableSize\r
   )\r
 {\r
   )\r
 {\r
-  return (EFI_PEI_PPI_DESCRIPTOR *)OriginalTable;\r
+  CopyMem (NewTable, OriginalTable, OriginalTableSize);\r
+\r
+  return EFI_SUCCESS;\r
 }\r
 }\r
index 858a14012d9ed40ee4f9b816520147bdf26aeb7d..2900fdbb6a6af58907e97bf69822830dedc53d59 100644 (file)
@@ -38,5 +38,6 @@
 \r
 [LibraryClasses]\r
   BaseLib\r
 \r
 [LibraryClasses]\r
   BaseLib\r
+  BaseMemoryLib\r
 \r
 \r
 \r
 \r
index b2046b6a756d5c13c8936e210d39fdc075824ba6..06dbccb18ed2dc8fd03986bc80294014784be2de 100644 (file)
@@ -544,6 +544,7 @@ Returns:
   EFI_SEC_PEI_HAND_OFF        *SecCoreData;
   UINTN                       PeiStackSize;
   EFI_PEI_PPI_DESCRIPTOR      *DispatchTable;
   EFI_SEC_PEI_HAND_OFF        *SecCoreData;
   UINTN                       PeiStackSize;
   EFI_PEI_PPI_DESCRIPTOR      *DispatchTable;
+  UINTN                       DispatchTableSize;
 
   //
   // Compute Top Of Memory for Stack and PEI Core Allocations
 
   //
   // Compute Top Of Memory for Stack and PEI Core Allocations
@@ -597,11 +598,19 @@ Returns:
     return ;
   }
   
     return ;
   }
   
+  DispatchTableSize = sizeof (gPrivateDispatchTable);
+  DispatchTableSize += OverrideDispatchTableExtraSize ();
+  
+  DispatchTable = malloc (DispatchTableSize);
+  if (DispatchTable == NULL) {
+    return;
+  }
+  
   //
   // Allow an override for extra PPIs to be passed up to PEI
   // This is an easy way to enable OS specific customizations
   //
   //
   // Allow an override for extra PPIs to be passed up to PEI
   // This is an easy way to enable OS specific customizations
   //
-  DispatchTable = OverrideDispatchTable (&gPrivateDispatchTable[0]);
+  OverrideDispatchTable (&gPrivateDispatchTable[0], sizeof (gPrivateDispatchTable), DispatchTable, DispatchTableSize);
   
   //
   // Transfer control to the PEI Core
   
   //
   // Transfer control to the PEI Core
index 50a95942a1ceef1883055659484242c407b1adcd..c76ea25c797c0949918b2dc089348602a5ec5c66 100644 (file)
 #       generated for it, but the binary will not be put into any firmware volume.\r
 #\r
 ###################################################################################################\r
 #       generated for it, but the binary will not be put into any firmware volume.\r
 #\r
 ###################################################################################################\r
-[Components.common]\r
+[Components]\r
   ##\r
   #  SEC Phase modules\r
   ##\r
   ##\r
   #  SEC Phase modules\r
   ##\r