]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Ppi/Pcd.h
MdePkg and MdeModulePkg Pcd: Implement PCD Driver for External PCD Database and SKU...
[mirror_edk2.git] / MdePkg / Include / Ppi / Pcd.h
index 73f027b5e7c7d188f971a001bcaa170203ac9db9..79e9c3e971ce4b2731030c5cd7ae89db8935783b 100644 (file)
@@ -1,14 +1,19 @@
 /** @file\r
-  Platform Configuration Database (PCD) PPI\r
+  Native Platform Configuration Database (PCD) PPI\r
+  \r
+  Different with the EFI_PCD_PPI defined in PI 1.2 specification, the native\r
+  PCD PPI provide interfaces for dynamic and dynamic-ex type PCD. \r
+  The interfaces for dynamic type PCD do not require the token space guid as parameter,\r
+  but interfaces for dynamic-ex type PCD require token space guid as parameter.\r
 \r
-  Copyright (c) 2006 - 2008, Intel Corporation                                                         \r
-  All rights reserved. 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
+Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution.  \r
+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
+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
 **/\r
 \r
@@ -74,7 +79,7 @@ UINT8
 /**\r
   Retrieves a 16-bit value for a given PCD token.\r
 \r
-  Retrieves the current 16-bits value for a PCD token number.  \r
+  Retrieves the current 16-bit value for a PCD token number.  \r
   If the TokenNumber is invalid, the results are unpredictable.\r
   \r
   @param[in]  TokenNumber The PCD token number. \r
@@ -93,7 +98,7 @@ UINT16
 /**\r
   Retrieves a 32-bit value for a given PCD token.\r
 \r
-  Retrieves the current 32-bits value for a PCD token number.  \r
+  Retrieves the current 32-bit value for a PCD token number.  \r
   If the TokenNumber is invalid, the results are unpredictable.\r
   \r
   @param[in]  TokenNumber The PCD token number. \r
@@ -112,7 +117,7 @@ UINT32
 /**\r
   Retrieves a 64-bit value for a given PCD token.\r
 \r
-  Retrieves the current 64-bits value for a PCD token number.  \r
+  Retrieves the current 64-bit value for a PCD token number.  \r
   If the TokenNumber is invalid, the results are unpredictable.\r
   \r
   @param[in]  TokenNumber The PCD token number. \r
@@ -358,7 +363,7 @@ UINTN
   @param[in]  TokenNumber The PCD token number. \r
   @param[in]  Value       The value to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -384,7 +389,7 @@ EFI_STATUS
   @param[in]  TokenNumber The PCD token number. \r
   @param[in]  Value       The value to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -410,7 +415,7 @@ EFI_STATUS
   @param[in]  TokenNumber The PCD token number. \r
   @param[in]  Value       The value to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -436,7 +441,7 @@ EFI_STATUS
   @param[in]  TokenNumber The PCD token number. \r
   @param[in]  Value       The value to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -464,7 +469,7 @@ EFI_STATUS
                                the maximum size supported for this TokenNumber.\r
   @param[in]      Buffer       The buffer to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -489,7 +494,7 @@ EFI_STATUS
   @param[in]  TokenNumber The PCD token number. \r
   @param[in]  Value       The value to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -516,7 +521,7 @@ EFI_STATUS
   @param[in]  TokenNumber The PCD token number. \r
   @param[in]  Value       The value to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -544,7 +549,7 @@ EFI_STATUS
   @param[in]  TokenNumber The PCD token number. \r
   @param[in]  Value       The value to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -572,7 +577,7 @@ EFI_STATUS
   @param[in]  TokenNumber The PCD token number. \r
   @param[in]  Value       The value to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -600,7 +605,7 @@ EFI_STATUS
   @param[in]  TokenNumber The PCD token number. \r
   @param[in]  Value       The value to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -632,7 +637,7 @@ EFI_STATUS
                                the maximum size supported for this TokenNumber.\r
   @param[in]      Buffer       The buffer to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -659,7 +664,7 @@ EFI_STATUS
   @param[in]  TokenNumber The PCD token number. \r
   @param[in]  Value       The value to set for the PCD token.\r
 \r
-  @retval EFI_SUCCESS           Procedure returned successfully.\r
+  @retval EFI_SUCCESS           The procedure returned successfully.\r
   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data \r
                                 being set was incompatible with a call to this function.  \r
                                 Use GetSize() to retrieve the size of the target data.\r
@@ -750,24 +755,28 @@ EFI_STATUS
 \r
 \r
 /**\r
-  Retrieves the next valid PCD token for a given namespace.\r
+  Retrieves the next valid token number in a given namespace.  \r
+  \r
+  This is useful since the PCD infrastructure contains a sparse list of token numbers, \r
+  and one cannot a priori know what token numbers are valid in the database. \r
   \r
-  If the input token namespace or token number does not exist on the platform, an error is \r
-  returned and the value of *TokenNumber is undefined. To retrieve the "first" token, \r
-  have the pointer reference a TokenNumber value of 0. \r
-  If the input token number is 0 and there is no valid token number for this token namespace,\r
-  *TokenNumber will be assigned to 0 and the function return EFI_SUCCESS. \r
-  If the token number is the last valid token number, *TokenNumber will be assigned to 0 and\r
-  the function return EFI_SUCCESS.\r
+  If TokenNumber is 0 and Guid is not NULL, then the first token from the token space specified by Guid is returned.  \r
+  If TokenNumber is not 0 and Guid is not NULL, then the next token in the token space specified by Guid is returned.  \r
+  If TokenNumber is 0 and Guid is NULL, then the first token in the default token space is returned.  \r
+  If TokenNumber is not 0 and Guid is NULL, then the next token in the default token space is returned.  \r
+  The token numbers in the default token space may not be related to token numbers in token spaces that are named by Guid.  \r
+  If the next token number can be retrieved, then it is returned in TokenNumber, and EFI_SUCCESS is returned.  \r
+  If TokenNumber represents the last token number in the token space specified by Guid, then EFI_NOT_FOUND is returned.  \r
+  If TokenNumber is not present in the token space specified by Guid, then EFI_NOT_FOUND is returned.\r
 \r
 \r
-  @param[in]       Guid        The 128-bit unique value that designates the namespace from which to extract the value.\r
+  @param[in]       Guid        The 128-bit unique value that designates the namespace from which to extract the value.  \r
+                               This is an optional parameter that may be NULL.  If this parameter is NULL, then a request \r
+                               is being made to retrieve tokens from the default token space.\r
   @param[in, out]  TokenNumber A pointer to the PCD token number to use to find the subsequent token number.\r
                    \r
-  @retval EFI_SUCCESS   The PCD service has retrieved the next valid token number. \r
-                        Or the input token number is already the last valid token number in the PCD database. \r
-                        In the later case, *TokenNumber is updated with the value of 0.\r
-  @retval EFI_NOT_FOUND If this input token number and token namespace does not exist on the platform.\r
+  @retval EFI_SUCCESS   The PCD service has retrieved the next valid token number.\r
+  @retval EFI_NOT_FOUND The PCD service could not find data from the requested token number.\r
 \r
 **/\r
 typedef \r
@@ -782,25 +791,17 @@ EFI_STATUS
 /**\r
   Retrieves the next valid PCD token namespace for a given namespace.\r
 \r
-  If *Guid is NULL, then the GUID of the first token space of the \r
-  current platform is assigned to *Guid the function return EFI_SUCCESS. \r
-  If  *Guid is NULL  and there is no namespace exist in the platform other than the default \r
-  (NULL) tokennamespace, *Guid is unchanged and the function return EFI_SUCCESS. \r
-  If this input token namespace is the last namespace on the platform, \r
-  *Guid will be assigned to NULL and the function return EFI_SUCCESS.\r
-\r
-  @param[in, out]  Guid An indirect pointer to EFI_GUID.  On input it designates a known \r
-                        token namespace from which the search will start. On output, it designates \r
-                        the next valid token namespace on the platform. If the input token namespace \r
-                        does not exist on the platform, an error is returned and the value of *Guid is \r
-                        undefined.\r
-\r
-  @retval EFI_SUCCESS  The PCD service has retrieved the next valid token namespace. \r
-                        Or the input token namespace is already the last valid token \r
-                        number in the PCD database. In the later case, *Guid is updated \r
-                        with the value of NULL. Or the input token name space is NULL and there \r
-                        is no valid token namespace other than the default namespace (NULL).\r
-  @retval EFI_NOT_FOUND If the input token namespace does not exist on the platform.\r
+  Gets the next valid token namespace for a given namespace. This is useful to traverse the valid\r
+  token namespaces on a platform.\r
+\r
+  @param[in, out]   Guid    An indirect pointer to EFI_GUID. On input it designates a known token\r
+                            namespace from which the search will start. On output, it designates the next valid\r
+                            token namespace on the platform. If *Guid is NULL, then the GUID of the first token\r
+                            space of the current platform is returned. If the search cannot locate the next valid\r
+                            token namespace, an error is returned and the value of *Guid is undefined.\r
\r
+  @retval  EFI_SUCCESS      The PCD service retrieved the value requested.\r
+  @retval  EFI_NOT_FOUND    The PCD service could not find the next valid token namespace.\r
 \r
 **/\r
 typedef\r