/** @file
  Source code file for CreatePrmPackageLibNull

@copyright
INTEL CONFIDENTIAL

Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials are licensed and made available under
the terms and conditions of the BSD License that accompanies this distribution.
The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php.

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#include <PrmAcpiDescriptionTable.h>

EFI_STATUS
CreatePrmPackage (
  IN  PRM_ACPI_DESCRIPTION_TABLE  *PrmAcpiDescriptionTable
  )
{
  return EFI_SUCCESS;
}
