VirtualBox

Changeset 108215 in vbox for trunk/src/VBox/Runtime/include


Ignore:
Timestamp:
Feb 13, 2025 6:24:31 PM (2 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
167535
Message:

Runtime/RTAcpi*: Treat External delcarations differently so that they can be properly dumped to the AML code. With this RTIasl is capable of producing AML code for vbox-tpm.dsl matching that generated by iasl, bugref:10733

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/include/internal/acpi.h

    r108184 r108215  
    237237
    238238
     239/**
     240 * External declaration.
     241 */
     242typedef struct RTACPIASLEXTERNAL
     243{
     244    /** List node for the list of externals. */
     245    RTLISTNODE              NdExternal;
     246    /** The object type. */
     247    RTACPIOBJTYPE           enmObjType;
     248    /** For methods this will hold the argument count. */
     249    uint32_t                cArgs;
     250    /** The name as parsed from the source file. */
     251    const char              *pszName;
     252    /** Size of the full name path in characters excluding the terminating zero. */
     253    size_t                  cchNamePath;
     254    /** The name path - variable in size. */
     255    char                    szNamePath[1];
     256} RTACPIASLEXTERNAL;
     257/** Pointer to an external declaration. */
     258typedef RTACPIASLEXTERNAL *PRTACPIASLEXTERNAL;
     259/** Pointer to a const external declaration. */
     260typedef const RTACPIASLEXTERNAL *PCRTACPIASLEXTERNAL;
     261
     262
     263
    239264/** Pointer to an ACPI namespace entry. */
    240265typedef struct RTACPINSENTRY *PRTACPINSENTRY;
     
    252277    /** The name segment identifying the entry. */
    253278    char                    achNameSeg[4];
    254     /** The AST node associated with this namespace entry. */
    255     PCRTACPIASTNODE         pAstNd;
     279    /** Flag whether this points to an AST node or an external. */
     280    bool                    fAstNd;
     281    /** Type dependent data. */
     282    union
     283    {
     284        /** The AST node associated with this namespace entry. */
     285        PCRTACPIASTNODE     pAstNd;
     286        /** Pointer to the external declaration. */
     287        PCRTACPIASLEXTERNAL pExternal;
     288    };
    256289    /** Bit offset for resource fields. */
    257290    uint32_t                offBits;
     
    358391
    359392/**
     393 * Adds a new namespace entry to the given name space - resource field.
     394 *
     395 * @returns IPRT status code.
     396 * @param   pNsRoot             The namespace root to add the entry to.
     397 * @param   pszNameString       An ACPI NameString (either segment or path).
     398 * @param   offBits             Bit offset from the beginning of the resource.
     399 * @param   cBits               NUmber of bits this resource field has.
     400 */
     401DECLHIDDEN(int) rtAcpiNsAddEntryExternal(PRTACPINSROOT pNsRoot, const char *pszNameString, PCRTACPIASLEXTERNAL pExternal);
     402
     403
     404/**
     405 * Queries the name path for the given name string based on the current scope.
     406 *
     407 * @returns IPRT status code.
     408 * @retval  VERR_NOT_FOUND if the name string can't be resolved to a name path with the given namespace.
     409 * @retval  VERR_BUFFER_OVERFLOW if the buffer for holding the name path is too small. pcchNamePath will
     410 *                               hold the required number of characters, excluding the zero temrinator.
     411 * @param   pNsRoot             The namespace root.
     412 * @param   pszNameString       The name string to query the name path for.
     413 * @param   pachNamePath        Where to store the name path (including zero terminator), or NULL if the size is queried.
     414 * @param   pcchNamePath        Holds the size of the name path buffer on input, on successful return
     415 *                              holds the actual length of the name path excluding the zero terminator.
     416 */
     417DECLHIDDEN(int) rtAcpiNsQueryNamePathForNameString(PRTACPINSROOT pNsRoot, const char *pszNameString, char *pachNamePath, size_t *pcchNamePath);
     418
     419
     420/**
    360421 * Pops the current name space entry from the stack and returns to the previous one.
    361422 *
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette