⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aslfiles.c

📁 acpi tools for linux include acpiexec and acpixtract
💻 C
📖 第 1 页 / 共 2 页
字号:
    if (Error)    {        FlFileError (FileId, ASL_MSG_CLOSE);        AslAbort ();    }    return;}/******************************************************************************* * * FUNCTION:    FlSetLineNumber * * PARAMETERS:  Op        - Parse node for the LINE asl statement * * RETURN:      None. * * DESCRIPTION: Set the current line number * ******************************************************************************/voidFlSetLineNumber (    ACPI_PARSE_OBJECT       *Op){    Gbl_CurrentLineNumber = (UINT32) Op->Asl.Value.Integer;    Gbl_LogicalLineNumber = (UINT32) Op->Asl.Value.Integer;}/******************************************************************************* * * FUNCTION:    FlOpenIncludeFile * * PARAMETERS:  Op        - Parse node for the INCLUDE ASL statement * * RETURN:      None. * * DESCRIPTION: Open an include file and push it on the input file stack. * ******************************************************************************/voidFlOpenIncludeFile (    ACPI_PARSE_OBJECT       *Op){    FILE                    *IncFile;    /* Op must be valid */    if (!Op)    {        AslCommonError (ASL_ERROR, ASL_MSG_INCLUDE_FILE_OPEN,            Gbl_CurrentLineNumber, Gbl_LogicalLineNumber,            Gbl_InputByteCount, Gbl_CurrentColumn,            Gbl_Files[ASL_FILE_INPUT].Filename, " - Null parse node");        return;    }    /*     * Flush out the "include ()" statement on this line, start     * the actual include file on the next line     */    ResetCurrentLineBuffer ();    FlPrintFile (ASL_FILE_SOURCE_OUTPUT, "\n");    Gbl_CurrentLineOffset++;    /* Prepend the directory pathname and open the include file */    DbgPrint (ASL_PARSE_OUTPUT, "\nOpen include file: path %s\n\n",        Op->Asl.Value.String);    IncFile = FlOpenLocalFile (Op->Asl.Value.String, "r");    if (!IncFile)    {        sprintf (MsgBuffer, "%s (%s)", Op->Asl.Value.String, strerror (errno));        AslError (ASL_ERROR, ASL_MSG_INCLUDE_FILE_OPEN, Op, MsgBuffer);        return;    }    /* Push the include file on the open input file stack */    AslPushInputFileStack (IncFile, Op->Asl.Value.String);}/******************************************************************************* * * FUNCTION:    FlOpenInputFile * * PARAMETERS:  InputFilename       - The user-specified ASL source file to be *                                    compiled * * RETURN:      Status * * DESCRIPTION: Open the specified input file, and save the directory path to *              the file so that include files can be opened in *              the same directory. * ******************************************************************************/ACPI_STATUSFlOpenInputFile (    char                    *InputFilename){    /* Open the input ASL file, text mode */    FlOpenFile (ASL_FILE_INPUT, InputFilename, "r");    AslCompilerin = Gbl_Files[ASL_FILE_INPUT].Handle;    return (AE_OK);}/******************************************************************************* * * FUNCTION:    FlOpenAmlOutputFile * * PARAMETERS:  FilenamePrefix       - The user-specified ASL source file * * RETURN:      Status * * DESCRIPTION: Create the output filename (*.AML) and open the file.  The file *              is created in the same directory as the parent input file. * ******************************************************************************/ACPI_STATUSFlOpenAmlOutputFile (    char                    *FilenamePrefix){    char                    *Filename;    /* Output filename usually comes from the ASL itself */    Filename = Gbl_Files[ASL_FILE_AML_OUTPUT].Filename;    if (!Filename)    {        /* Create the output AML filename */        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_AML_CODE);        if (!Filename)        {            AslCommonError (ASL_ERROR, ASL_MSG_OUTPUT_FILENAME,                0, 0, 0, 0, NULL, NULL);            return (AE_ERROR);        }    }    /* Open the output AML file in binary mode */    FlOpenFile (ASL_FILE_AML_OUTPUT, Filename, "w+b");    return (AE_OK);}/******************************************************************************* * * FUNCTION:    FlOpenMiscOutputFiles * * PARAMETERS:  FilenamePrefix       - The user-specified ASL source file * * RETURN:      Status * * DESCRIPTION: Create and open the various output files needed, depending on *              the command line options * ******************************************************************************/ACPI_STATUSFlOpenMiscOutputFiles (    char                    *FilenamePrefix){    char                    *Filename;    /* Create/Open a combined source output file */    Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_SOURCE);    if (!Filename)    {        AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,            0, 0, 0, 0, NULL, NULL);        return (AE_ERROR);    }    /*     * Open the source output file, binary mode (so that LF does not get     * expanded to CR/LF on some systems, messing up our seek     * calculations.)     */    FlOpenFile (ASL_FILE_SOURCE_OUTPUT, Filename, "w+b");    /* Create/Open a listing output file if asked */    if (Gbl_ListingFlag)    {        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_LISTING);        if (!Filename)        {            AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,                0, 0, 0, 0, NULL, NULL);            return (AE_ERROR);        }        /* Open the listing file, text mode */        FlOpenFile (ASL_FILE_LISTING_OUTPUT, Filename, "w+");        AslCompilerSignon (ASL_FILE_LISTING_OUTPUT);        AslCompilerFileHeader (ASL_FILE_LISTING_OUTPUT);    }    /* Create/Open a assembly code source output file if asked */    if (Gbl_AsmOutputFlag)    {        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_ASM_SOURCE);        if (!Filename)        {            AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,                0, 0, 0, 0, NULL, NULL);            return (AE_ERROR);        }        /* Open the assembly code source file, text mode */        FlOpenFile (ASL_FILE_ASM_SOURCE_OUTPUT, Filename, "w+");        AslCompilerSignon (ASL_FILE_ASM_SOURCE_OUTPUT);        AslCompilerFileHeader (ASL_FILE_ASM_SOURCE_OUTPUT);    }    /* Create/Open a C code source output file if asked */    if (Gbl_C_OutputFlag)    {        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_C_SOURCE);        if (!Filename)        {            AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,                0, 0, 0, 0, NULL, NULL);            return (AE_ERROR);        }        /* Open the C code source file, text mode */        FlOpenFile (ASL_FILE_C_SOURCE_OUTPUT, Filename, "w+");        FlPrintFile (ASL_FILE_C_SOURCE_OUTPUT, "/*\n");        AslCompilerSignon (ASL_FILE_C_SOURCE_OUTPUT);        AslCompilerFileHeader (ASL_FILE_C_SOURCE_OUTPUT);    }    /* Create/Open a assembly include output file if asked */    if (Gbl_AsmIncludeOutputFlag)    {        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_ASM_INCLUDE);        if (!Filename)        {            AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,                0, 0, 0, 0, NULL, NULL);            return (AE_ERROR);        }        /* Open the assembly include file, text mode */        FlOpenFile (ASL_FILE_ASM_INCLUDE_OUTPUT, Filename, "w+");        AslCompilerSignon (ASL_FILE_ASM_INCLUDE_OUTPUT);        AslCompilerFileHeader (ASL_FILE_ASM_INCLUDE_OUTPUT);    }    /* Create/Open a C include output file if asked */    if (Gbl_C_IncludeOutputFlag)    {        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_C_INCLUDE);        if (!Filename)        {            AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,                0, 0, 0, 0, NULL, NULL);            return (AE_ERROR);        }        /* Open the C include file, text mode */        FlOpenFile (ASL_FILE_C_INCLUDE_OUTPUT, Filename, "w+");        FlPrintFile (ASL_FILE_C_INCLUDE_OUTPUT, "/*\n");        AslCompilerSignon (ASL_FILE_C_INCLUDE_OUTPUT);        AslCompilerFileHeader (ASL_FILE_C_INCLUDE_OUTPUT);    }    /* Create/Open a hex output file if asked */    if (Gbl_HexOutputFlag)    {        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_HEX_DUMP);        if (!Filename)        {            AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,                0, 0, 0, 0, NULL, NULL);            return (AE_ERROR);        }        /* Open the hex file, text mode */        FlOpenFile (ASL_FILE_HEX_OUTPUT, Filename, "w+");        AslCompilerSignon (ASL_FILE_HEX_OUTPUT);        AslCompilerFileHeader (ASL_FILE_HEX_OUTPUT);    }    /* Create a namespace output file if asked */    if (Gbl_NsOutputFlag)    {        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_NAMESPACE);        if (!Filename)        {            AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME,                0, 0, 0, 0, NULL, NULL);            return (AE_ERROR);        }        /* Open the namespace file, text mode */        FlOpenFile (ASL_FILE_NAMESPACE_OUTPUT, Filename, "w+");        AslCompilerSignon (ASL_FILE_NAMESPACE_OUTPUT);        AslCompilerFileHeader (ASL_FILE_NAMESPACE_OUTPUT);    }    /* Create/Open a debug output file if asked */    if (Gbl_DebugFlag)    {        Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_DEBUG);        if (!Filename)        {            AslCommonError (ASL_ERROR, ASL_MSG_DEBUG_FILENAME,                0, 0, 0, 0, NULL, NULL);            return (AE_ERROR);        }        /* Open the debug file as STDERR, text mode */        /* TBD: hide this behind a FlReopenFile function */        Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Filename = Filename;        Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle =            freopen (Filename, "w+t", stderr);        AslCompilerSignon (ASL_FILE_DEBUG_OUTPUT);        AslCompilerFileHeader (ASL_FILE_DEBUG_OUTPUT);    }    return (AE_OK);}#ifdef ACPI_OBSOLETE_FUNCTIONS/******************************************************************************* * * FUNCTION:    FlParseInputPathname * * PARAMETERS:  InputFilename       - The user-specified ASL source file to be *                                    compiled * * RETURN:      Status * * DESCRIPTION: Split the input path into a directory and filename part *              1) Directory part used to open include files *              2) Filename part used to generate output filenames * ******************************************************************************/ACPI_STATUSFlParseInputPathname (    char                    *InputFilename){    char                    *Substring;    if (!InputFilename)    {        return (AE_OK);    }    /* Get the path to the input filename's directory */    Gbl_DirectoryPath = strdup (InputFilename);    if (!Gbl_DirectoryPath)    {        return (AE_NO_MEMORY);    }    Substring = strrchr (Gbl_DirectoryPath, '\\');    if (!Substring)    {        Substring = strrchr (Gbl_DirectoryPath, '/');        if (!Substring)        {            Substring = strrchr (Gbl_DirectoryPath, ':');        }    }    if (!Substring)    {        Gbl_DirectoryPath[0] = 0;        if (Gbl_UseDefaultAmlFilename)        {            Gbl_OutputFilenamePrefix = strdup (InputFilename);        }    }    else    {        if (Gbl_UseDefaultAmlFilename)        {            Gbl_OutputFilenamePrefix = strdup (Substring + 1);        }        *(Substring+1) = 0;    }    return (AE_OK);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -