您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ AcpiTbChecksum函数代码示例

51自学网 2021-06-01 19:39:57
  C++
这篇教程C++ AcpiTbChecksum函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中AcpiTbChecksum函数的典型用法代码示例。如果您正苦于以下问题:C++ AcpiTbChecksum函数的具体用法?C++ AcpiTbChecksum怎么用?C++ AcpiTbChecksum使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了AcpiTbChecksum函数的16个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: map_table

/* * Map a table at a given offset into the crashdump map.  It first * maps the header to determine the table length and then maps the * entire table. */static void *map_table(vm_paddr_t pa, int offset, const char *sig){	ACPI_TABLE_HEADER *header;	vm_offset_t length;	void *table;	header = table_map(pa, offset, sizeof(ACPI_TABLE_HEADER));	if (strncmp(header->Signature, sig, ACPI_NAME_SIZE) != 0) {		table_unmap(header, sizeof(ACPI_TABLE_HEADER));		return (NULL);	}	length = header->Length;	table_unmap(header, sizeof(ACPI_TABLE_HEADER));	table = table_map(pa, offset, length);	if (ACPI_FAILURE(AcpiTbChecksum(table, length))) {		if (bootverbose)			printf("ACPI: Failed checksum for table %s/n", sig);#if (ACPI_CHECKSUM_ABORT)		table_unmap(table, length);		return (NULL);#endif	}	return (table);}
开发者ID:AhmadTux,项目名称:freebsd,代码行数:30,


示例2: acpi_find_table

void *acpi_find_table(const char *sig){	ACPI_PHYSICAL_ADDRESS rsdp_ptr;	ACPI_TABLE_RSDP *rsdp;	ACPI_TABLE_XSDT *xsdt;	ACPI_TABLE_HEADER *table;	UINT64 addr;	u_int i, count;	if ((rsdp_ptr = AcpiOsGetRootPointer()) == 0)		return (NULL);	rsdp = (ACPI_TABLE_RSDP *)IA64_PHYS_TO_RR7(rsdp_ptr);	xsdt = (ACPI_TABLE_XSDT *)IA64_PHYS_TO_RR7(rsdp->XsdtPhysicalAddress);	count = (UINT64 *)((char *)xsdt + xsdt->Header.Length) -	    xsdt->TableOffsetEntry;	for (i = 0; i < count; i++) {		addr = xsdt->TableOffsetEntry[i];		table = (ACPI_TABLE_HEADER *)IA64_PHYS_TO_RR7(addr);		if (strncmp(table->Signature, sig, ACPI_NAME_SIZE) != 0)			continue;		if (ACPI_FAILURE(AcpiTbChecksum((void *)table, table->Length)))			continue;		return (table);	}	return (NULL);}
开发者ID:ele7enxxh,项目名称:dtrace-pf,代码行数:33,


示例3: ExInitializeAcpiTables

voidExInitializeAcpiTables (    void){    /* Setup RSDP */    Rsdp->RsdtPhysicalAddress = (UINT32) ACPI_TO_INTEGER (RsdtCode);    Rsdp->XsdtPhysicalAddress = (UINT64) ACPI_TO_INTEGER (XsdtCode);    /* RSDT and XSDT */    Rsdt->TableOffsetEntry[0] = (UINT32) ACPI_TO_INTEGER (FadtCode);    Xsdt->TableOffsetEntry[0] = (UINT64) ACPI_TO_INTEGER (FadtCode);    /* FADT */    Fadt->Facs = 0;    Fadt->Dsdt = 0;    Fadt->XFacs = (UINT64) ACPI_TO_INTEGER (FacsCode);    Fadt->XDsdt = (UINT64) ACPI_TO_INTEGER (DsdtCode);    /* Set new checksums for the modified tables */    Rsdp->Checksum = 0;    Rsdp->Checksum = (UINT8) -AcpiTbChecksum (        (void *) RsdpCode, ACPI_RSDP_CHECKSUM_LENGTH);    Rsdt->Header.Checksum = 0;    Rsdt->Header.Checksum = (UINT8) -AcpiTbChecksum (        (void *) Rsdt, Rsdt->Header.Length);    Xsdt->Header.Checksum = 0;    Xsdt->Header.Checksum =  (UINT8) -AcpiTbChecksum (        (void *) Xsdt, Xsdt->Header.Length);    Fadt->Header.Checksum = 0;    Fadt->Header.Checksum =  (UINT8) -AcpiTbChecksum (        (void *) Fadt, Fadt->Header.Length);}
开发者ID:LauraBerry,项目名称:A2cpsc457,代码行数:40,


示例4: DtSum

static voidDtSum (    DT_SUBTABLE             *Subtable,    void                    *Context,    void                    *ReturnValue){    UINT8                   Checksum;    UINT8                   *Sum = ReturnValue;    Checksum = AcpiTbChecksum (Subtable->Buffer, Subtable->Length);    *Sum = (UINT8) (*Sum + Checksum);}
开发者ID:JasonFord53,项目名称:freebsd,代码行数:13,


示例5: AcpiTbValidateRsdp

static ACPI_STATUSAcpiTbValidateRsdp (    ACPI_TABLE_RSDP         *Rsdp){    ACPI_FUNCTION_ENTRY ();    /*     * The signature and checksum must both be correct     *     * Note: Sometimes there exists more than one RSDP in memory; the valid     * RSDP has a valid checksum, all others have an invalid checksum.     */    if (ACPI_STRNCMP ((char *) Rsdp, ACPI_SIG_RSDP,            sizeof (ACPI_SIG_RSDP)-1) != 0)    {        /* Nope, BAD Signature */        return (AE_BAD_SIGNATURE);    }    /* Check the standard checksum */    if (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0)    {        return (AE_BAD_CHECKSUM);    }    /* Check extended checksum if table version >= 2 */    if ((Rsdp->Revision >= 2) &&        (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0))    {        return (AE_BAD_CHECKSUM);    }    return (AE_OK);}
开发者ID:mmanley,项目名称:Antares,代码行数:38,


示例6: ia64_count_cpus

/* * Count the number of local SAPIC entries in the APIC table. Every enabled * entry corresponds to a processor. */intia64_count_cpus(void){	ACPI_PHYSICAL_ADDRESS rsdp_ptr;	ACPI_MADT_LOCAL_SAPIC *entry;	ACPI_TABLE_MADT *table;	ACPI_TABLE_RSDP *rsdp;	ACPI_TABLE_XSDT *xsdt;	char *end, *p;	int cpus, t, tables;	if ((rsdp_ptr = AcpiOsGetRootPointer()) == 0)		return (0);	rsdp = (ACPI_TABLE_RSDP *)IA64_PHYS_TO_RR7(rsdp_ptr);	xsdt = (ACPI_TABLE_XSDT *)IA64_PHYS_TO_RR7(rsdp->XsdtPhysicalAddress);	tables = (UINT64 *)((char *)xsdt + xsdt->Header.Length) -	    xsdt->TableOffsetEntry;	cpus = 0;	for (t = 0; t < tables; t++) {		table = (ACPI_TABLE_MADT *)		    IA64_PHYS_TO_RR7(xsdt->TableOffsetEntry[t]);		if (strncmp(table->Header.Signature, ACPI_SIG_MADT,		    ACPI_NAME_SIZE) != 0 ||		    ACPI_FAILURE(AcpiTbChecksum((void *)table,			table->Header.Length)))			continue;		end = (char *)table + table->Header.Length;		p = (char *)(table + 1);		while (p < end) {			entry = (ACPI_MADT_LOCAL_SAPIC *)p;			if (entry->Header.Type == ACPI_MADT_TYPE_LOCAL_SAPIC &&			    (entry->LapicFlags & ACPI_MADT_ENABLED))				cpus++;			p += entry->Header.Length;		}	}	return (cpus);}
开发者ID:ele7enxxh,项目名称:dtrace-pf,代码行数:51,


示例7: AcpiTbVerifyChecksum

ACPI_STATUSAcpiTbVerifyChecksum (    ACPI_TABLE_HEADER       *Table,    UINT32                  Length){    UINT8                   Checksum;    /*     * FACS/S3PT:     * They are the odd tables, have no standard ACPI header and no checksum     */    if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT) ||        ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS))    {        return (AE_OK);    }    /* Compute the checksum on the table */    Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Length);    /* Checksum ok? (should be zero) */    if (Checksum)    {        ACPI_BIOS_WARNING ((AE_INFO,            "Incorrect checksum in table [%4.4s] - 0x%2.2X, "            "should be 0x%2.2X",            Table->Signature, Table->Checksum,            (UINT8) (Table->Checksum - Checksum)));#if (ACPI_CHECKSUM_ABORT)        return (AE_BAD_CHECKSUM);#endif    }    return (AE_OK);}
开发者ID:ahoka,项目名称:esrtk,代码行数:40,


示例8: AeInitializeTableHeader

static voidAeInitializeTableHeader (    ACPI_TABLE_HEADER       *Header,    char                    *Signature,    UINT32                  Length){    ACPI_MOVE_NAME (Header->Signature, Signature);    Header->Length = Length;    Header->OemRevision = 0x1001;    strncpy (Header->OemId, "Intel", ACPI_OEM_ID_SIZE);    strncpy (Header->OemTableId, "AcpiExec", ACPI_OEM_TABLE_ID_SIZE);    strncpy (Header->AslCompilerId, "INTL", ACPI_NAME_SIZE);    Header->AslCompilerRevision = ACPI_CA_VERSION;    /* Set the checksum, must set to zero first */    Header->Checksum = 0;    Header->Checksum = (UINT8) -AcpiTbChecksum (        (void *) Header, Header->Length);}
开发者ID:BarrelfishOS,项目名称:barrelfish,代码行数:22,


示例9: AcpiTbScanMemoryForRsdp

UINT8 *AcpiTbScanMemoryForRsdp (    UINT8                   *StartAddress,    UINT32                  Length){    UINT32                  Offset;    UINT8                   *MemRover;    ACPI_FUNCTION_TRACE ("TbScanMemoryForRsdp");    /* Search from given start addr for the requested length  */    for (Offset = 0, MemRover = StartAddress;         Offset < Length;         Offset += ACPI_RSDP_SCAN_STEP, MemRover += ACPI_RSDP_SCAN_STEP)    {        /* The signature and checksum must both be correct */        if (ACPI_STRNCMP ((char *) MemRover,                RSDP_SIG, sizeof (RSDP_SIG)-1) == 0 &&            AcpiTbChecksum (MemRover, ACPI_RSDP_CHECKSUM_LENGTH) == 0)        {            /* If so, we have found the RSDP */            ACPI_DEBUG_PRINT ((ACPI_DB_INFO,                "RSDP located at physical address %p/n",MemRover));            return_PTR (MemRover);        }    }    /* Searched entire block, no RSDP was found */    ACPI_DEBUG_PRINT ((ACPI_DB_INFO,"Searched entire block, no RSDP was found./n"));    return_PTR (NULL);}
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:38,


示例10: AeBuildLocalTables

//.........这里部分代码省略.........        /* Install the OEM1 table to test LoadTable */        LocalXSDT->TableOffsetEntry[NextIndex++] = ACPI_PTR_TO_PHYSADDR (&Oem1Code);        /* Install the OEMx table to test LoadTable */        LocalXSDT->TableOffsetEntry[NextIndex++] = ACPI_PTR_TO_PHYSADDR (&OemxCode);         /* Install the ECDT table to test _REG */        LocalXSDT->TableOffsetEntry[NextIndex++] = ACPI_PTR_TO_PHYSADDR (&EcdtCode);        /* Install two UEFIs to test multiple table support */        LocalXSDT->TableOffsetEntry[NextIndex++] = ACPI_PTR_TO_PHYSADDR (&Uefi1Code);        LocalXSDT->TableOffsetEntry[NextIndex++] = ACPI_PTR_TO_PHYSADDR (&Uefi2Code);    }    /* Build an RSDP. Contains a valid XSDT only, no RSDT */    memset (&LocalRSDP, 0, sizeof (ACPI_TABLE_RSDP));    ACPI_MAKE_RSDP_SIG (LocalRSDP.Signature);    memcpy (LocalRSDP.OemId, "Intel", 6);    LocalRSDP.Revision = 2;    LocalRSDP.XsdtPhysicalAddress = ACPI_PTR_TO_PHYSADDR (LocalXSDT);    LocalRSDP.Length = sizeof (ACPI_TABLE_RSDP);    /* Set checksums for both XSDT and RSDP */    AeInitializeTableHeader ((void *) LocalXSDT, ACPI_SIG_XSDT, XsdtSize);    LocalRSDP.Checksum = 0;    LocalRSDP.Checksum = (UINT8) -AcpiTbChecksum (        (void *) &LocalRSDP, ACPI_RSDP_CHECKSUM_LENGTH);    if (!DsdtAddress)    {        /* Use the local DSDT because incoming table(s) are all SSDT(s) */        DsdtAddress = ACPI_PTR_TO_PHYSADDR (LocalDsdtCode);        DsdtToInstallOverride = ACPI_CAST_PTR (ACPI_TABLE_HEADER, LocalDsdtCode);    }    /*     * Build an FADT. There are three options for the FADT:     * 1) Incoming external FADT specified on the command line     * 2) A "hardware reduced" local FADT     * 3) A fully featured local FADT     */    memset (&LocalFADT, 0, sizeof (ACPI_TABLE_FADT));    if (ExternalFadt)    {        /*         * Use the external FADT, but we must update the DSDT/FACS         * addresses as well as the checksum         */        ExternalFadt->Dsdt = (UINT32) DsdtAddress;        if (!AcpiGbl_ReducedHardware)        {            ExternalFadt->Facs = ACPI_PTR_TO_PHYSADDR (&LocalFACS);        }        /*         * If there room in the FADT for the XDsdt and XFacs 64-bit
开发者ID:BarrelfishOS,项目名称:barrelfish,代码行数:67,


示例11: acpi_find_table

/* * Return the physical address of the requested table or zero if one * is not found. */vm_paddr_tacpi_find_table(const char *sig){	ACPI_PHYSICAL_ADDRESS rsdp_ptr;	ACPI_TABLE_RSDP *rsdp;	ACPI_TABLE_XSDT *xsdt;	ACPI_TABLE_HEADER *table;	vm_paddr_t addr;	int i, count;	if (resource_disabled("acpi", 0))		return (0);	/*	 * Map in the RSDP.  Since ACPI uses AcpiOsMapMemory() which in turn	 * calls pmap_mapbios() to find the RSDP, we assume that we can use	 * pmap_mapbios() to map the RSDP.	 */	if ((rsdp_ptr = AcpiOsGetRootPointer()) == 0)		return (0);	rsdp = pmap_mapbios(rsdp_ptr, sizeof(ACPI_TABLE_RSDP));	if (rsdp == NULL) {		if (bootverbose)			printf("ACPI: Failed to map RSDP/n");		return (0);	}	addr = 0;	if (rsdp->Revision >= 2 && rsdp->XsdtPhysicalAddress != 0) {		/*		 * AcpiOsGetRootPointer only verifies the checksum for		 * the version 1.0 portion of the RSDP.  Version 2.0 has		 * an additional checksum that we verify first.		 */		if (AcpiTbChecksum((UINT8 *)rsdp, ACPI_RSDP_XCHECKSUM_LENGTH)) {			if (bootverbose)				printf("ACPI: RSDP failed extended checksum/n");			return (0);		}		xsdt = map_table(rsdp->XsdtPhysicalAddress, 2, ACPI_SIG_XSDT);		if (xsdt == NULL) {			if (bootverbose)				printf("ACPI: Failed to map XSDT/n");			pmap_unmapbios((vm_offset_t)rsdp,			    sizeof(ACPI_TABLE_RSDP));			return (0);		}		count = (xsdt->Header.Length - sizeof(ACPI_TABLE_HEADER)) /		    sizeof(UINT64);		for (i = 0; i < count; i++)			if (probe_table(xsdt->TableOffsetEntry[i], sig)) {				addr = xsdt->TableOffsetEntry[i];				break;			}		acpi_unmap_table(xsdt);	}	pmap_unmapbios((vm_offset_t)rsdp, sizeof(ACPI_TABLE_RSDP));	if (addr == 0) {		if (bootverbose)			printf("ACPI: No %s table found/n", sig);		return (0);	}	if (bootverbose)		printf("%s: Found table at 0x%jx/n", sig, (uintmax_t)addr);	/*	 * Verify that we can map the full table and that its checksum is	 * correct, etc.	 */	table = map_table(addr, 0, sig);	if (table == NULL)		return (0);	acpi_unmap_table(table);	return (addr);}
开发者ID:2asoft,项目名称:freebsd,代码行数:81,


示例12: ia64_probe_sapics

voidia64_probe_sapics(void){	ACPI_PHYSICAL_ADDRESS rsdp_ptr;	ACPI_SUBTABLE_HEADER *entry;	ACPI_TABLE_MADT *table;	ACPI_TABLE_RSDP *rsdp;	ACPI_TABLE_XSDT *xsdt;	char *end, *p;	int t, tables;	if ((rsdp_ptr = AcpiOsGetRootPointer()) == 0)		return;	rsdp = (ACPI_TABLE_RSDP *)IA64_PHYS_TO_RR7(rsdp_ptr);	xsdt = (ACPI_TABLE_XSDT *)IA64_PHYS_TO_RR7(rsdp->XsdtPhysicalAddress);	tables = (UINT64 *)((char *)xsdt + xsdt->Header.Length) -	    xsdt->TableOffsetEntry;	for (t = 0; t < tables; t++) {		table = (ACPI_TABLE_MADT *)		    IA64_PHYS_TO_RR7(xsdt->TableOffsetEntry[t]);		if (bootverbose)			printf("Table '%c%c%c%c' at %p/n",			    table->Header.Signature[0],			    table->Header.Signature[1],			    table->Header.Signature[2],			    table->Header.Signature[3], table);		if (strncmp(table->Header.Signature, ACPI_SIG_MADT,		    ACPI_NAME_SIZE) != 0 ||		    ACPI_FAILURE(AcpiTbChecksum((void *)table,		    table->Header.Length)))			continue;		/* Save the address of the processor interrupt block. */		if (bootverbose)			printf("/tLocal APIC address=0x%x/n", table->Address);		ia64_lapic_addr = table->Address;		end = (char *)table + table->Header.Length;		p = (char *)(table + 1);		while (p < end) {			entry = (ACPI_SUBTABLE_HEADER *)p;			if (bootverbose)				print_entry(entry);			switch (entry->Type) {			case ACPI_MADT_TYPE_IO_SAPIC: {				ACPI_MADT_IO_SAPIC *sapic =				    (ACPI_MADT_IO_SAPIC *)entry;				sapic_create(sapic->Id, sapic->GlobalIrqBase,				    sapic->Address);				break;			}			case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE: {				ACPI_MADT_LOCAL_APIC_OVERRIDE *lapic =				    (ACPI_MADT_LOCAL_APIC_OVERRIDE *)entry;				ia64_lapic_addr = lapic->Address;				break;			}#ifdef SMP			case ACPI_MADT_TYPE_LOCAL_SAPIC: {				ACPI_MADT_LOCAL_SAPIC *sapic =				    (ACPI_MADT_LOCAL_SAPIC *)entry;				if (sapic->LapicFlags & ACPI_MADT_ENABLED)					cpu_mp_add(sapic->ProcessorId,					    sapic->Id, sapic->Eid);				break;			}#endif			default:				break;			}			p += entry->Length;		}	}}
开发者ID:ele7enxxh,项目名称:dtrace-pf,代码行数:85,


示例13: AcpiGetFirmwareTable

ACPI_STATUSAcpiGetFirmwareTable (    ACPI_STRING             Signature,    UINT32                  Instance,    UINT32                  Flags,    ACPI_TABLE_HEADER       **TablePointer){    ACPI_POINTER            RsdpAddress;    ACPI_POINTER            Address;    ACPI_STATUS             Status;    ACPI_TABLE_HEADER       Header;    ACPI_TABLE_DESC         TableInfo;    ACPI_TABLE_DESC         RsdtInfo;    UINT32                  TableCount;    UINT32                  i;    UINT32                  j;    ACPI_FUNCTION_TRACE ("AcpiGetFirmwareTable");    /*     * Ensure that at least the table manager is initialized.  We don't     * require that the entire ACPI subsystem is up for this interface     */    /*     *  If we have a buffer, we must have a length too     */    if ((Instance == 0)                 ||        (!Signature)                    ||        (!TablePointer))    {        return_ACPI_STATUS (AE_BAD_PARAMETER);    }    RsdtInfo.Pointer = NULL;    if (!AcpiGbl_RSDP)    {        /* Get the RSDP */        Status = AcpiOsGetRootPointer (Flags, &RsdpAddress);        if (ACPI_FAILURE (Status))        {            ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "RSDP  not found/n"));            return_ACPI_STATUS (AE_NO_ACPI_TABLES);        }        /* Map and validate the RSDP */        if ((Flags & ACPI_MEMORY_MODE) == ACPI_LOGICAL_ADDRESSING)        {            Status = AcpiOsMapMemory (RsdpAddress.Pointer.Physical, sizeof (RSDP_DESCRIPTOR),                                        (void **) &AcpiGbl_RSDP);            if (ACPI_FAILURE (Status))            {                return_ACPI_STATUS (Status);            }        }        else        {            AcpiGbl_RSDP = RsdpAddress.Pointer.Logical;        }        /*         *  The signature and checksum must both be correct         */        if (ACPI_STRNCMP ((char *) AcpiGbl_RSDP, RSDP_SIG, sizeof (RSDP_SIG)-1) != 0)        {            /* Nope, BAD Signature */            return_ACPI_STATUS (AE_BAD_SIGNATURE);        }        if (AcpiTbChecksum (AcpiGbl_RSDP, ACPI_RSDP_CHECKSUM_LENGTH) != 0)        {            /* Nope, BAD Checksum */            return_ACPI_STATUS (AE_BAD_CHECKSUM);        }    }    /* Get the RSDT and validate it */    AcpiTbGetRsdtAddress (&Address);    ACPI_DEBUG_PRINT ((ACPI_DB_INFO,        "RSDP located at %p, RSDT physical=%8.8X%8.8X /n",        AcpiGbl_RSDP,        ACPI_HIDWORD (Address.Pointer.Value),        ACPI_LODWORD (Address.Pointer.Value)));    /* Insert ProcessorMode flags */    Address.PointerType |= Flags;    Status = AcpiTbGetTable (&Address, &RsdtInfo);    if (ACPI_FAILURE (Status))    {//.........这里部分代码省略.........
开发者ID:UnitedMarsupials,项目名称:kame,代码行数:101,


示例14: AdCreateTableHeader

static voidAdCreateTableHeader (    char                    *Filename,    ACPI_TABLE_HEADER       *Table){    UINT8                   Checksum;    /* Reset globals for External statements */    AcpiGbl_NumExternalMethods = 0;    AcpiGbl_ResolvedExternalMethods = 0;    /*     * Print file header and dump original table header     */    AdDisassemblerHeader (Filename, ACPI_IS_AML_TABLE);    AcpiOsPrintf (" * Original Table Header:/n");    AcpiOsPrintf (" *     Signature        /"%4.4s/"/n",    Table->Signature);    AcpiOsPrintf (" *     Length           0x%8.8X (%u)/n", Table->Length, Table->Length);    /* Print and validate the revision */    AcpiOsPrintf (" *     Revision         0x%2.2X",      Table->Revision);    switch (Table->Revision)    {    case 0:        AcpiOsPrintf (" **** Invalid Revision");        break;    case 1:        /* Revision of DSDT controls the ACPI integer width */        if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT))        {            AcpiOsPrintf (" **** 32-bit table (V1), no 64-bit math support");        }        break;    default:        break;    }    /* Print and validate the table checksum */    AcpiOsPrintf ("/n *     Checksum         0x%2.2X",        Table->Checksum);    Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length);    if (Checksum)    {        AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X",            (UINT8) (Table->Checksum - Checksum));    }    AcpiOsPrintf ("/n");    AcpiOsPrintf (" *     OEM ID           /"%.6s/"/n",     Table->OemId);    AcpiOsPrintf (" *     OEM Table ID     /"%.8s/"/n",     Table->OemTableId);    AcpiOsPrintf (" *     OEM Revision     0x%8.8X (%u)/n", Table->OemRevision, Table->OemRevision);    AcpiOsPrintf (" *     Compiler ID      /"%.4s/"/n",     Table->AslCompilerId);    AcpiOsPrintf (" *     Compiler Version 0x%8.8X (%u)/n", Table->AslCompilerRevision, Table->AslCompilerRevision);    AcpiOsPrintf (" *//n");    /*     * Open the ASL definition block.     *     * Note: the AMLFilename string is left zero-length in order to just let     * the compiler create it when the disassembled file is compiled. This     * makes it easier to rename the disassembled ASL file if needed.     */    AcpiOsPrintf (        "DefinitionBlock (/"/", /"%4.4s/", %hu, /"%.6s/", /"%.8s/", 0x%8.8X)/n",        Table->Signature, Table->Revision,        Table->OemId, Table->OemTableId, Table->OemRevision);}
开发者ID:BarrelfishOS,项目名称:barrelfish,代码行数:79,


示例15: AeBuildLocalTables

ACPI_STATUSAeBuildLocalTables (    UINT32                  TableCount,    AE_TABLE_DESC           *TableList){    ACPI_PHYSICAL_ADDRESS   DsdtAddress = 0;    UINT32                  XsdtSize;    AE_TABLE_DESC           *NextTable;    UINT32                  NextIndex;    ACPI_TABLE_FADT         *ExternalFadt = NULL;    /*     * Update the table count. For DSDT, it is not put into the XSDT. For     * FADT, this is already accounted for since we usually install a     * local FADT.     */    NextTable = TableList;    while (NextTable)    {        if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_DSDT) ||            ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_FADT))        {            TableCount--;        }        NextTable = NextTable->Next;    }    XsdtSize = BASE_XSDT_SIZE + (TableCount * sizeof (UINT64));    /* Build an XSDT */    LocalXSDT = AcpiOsAllocate (XsdtSize);    if (!LocalXSDT)    {        return (AE_NO_MEMORY);    }    ACPI_MEMSET (LocalXSDT, 0, XsdtSize);    ACPI_MOVE_NAME (LocalXSDT->Header.Signature, ACPI_SIG_XSDT);    LocalXSDT->Header.Length = XsdtSize;    LocalXSDT->Header.Revision = 1;    LocalXSDT->TableOffsetEntry[0] = ACPI_PTR_TO_PHYSADDR (&LocalFADT);    /*     * Install the user tables. The DSDT must be installed in the FADT.     * All other tables are installed directly into the XSDT.     */    NextIndex = BASE_XSDT_TABLES;    NextTable = TableList;    while (NextTable)    {        /*         * Incoming DSDT or FADT are special cases. All other tables are         * just immediately installed into the XSDT.         */        if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_DSDT))        {            if (DsdtAddress)            {                printf ("Already found a DSDT, only one allowed/n");                return (AE_ALREADY_EXISTS);            }            /* The incoming user table is a DSDT */            DsdtAddress = ACPI_PTR_TO_PHYSADDR (NextTable->Table);        }        else if (ACPI_COMPARE_NAME (NextTable->Table->Signature, ACPI_SIG_FADT))        {            ExternalFadt = ACPI_CAST_PTR (ACPI_TABLE_FADT, NextTable->Table);            LocalXSDT->TableOffsetEntry[2] = ACPI_PTR_TO_PHYSADDR (NextTable->Table);        }        else        {            /* Install the table in the XSDT */            LocalXSDT->TableOffsetEntry[NextIndex] = ACPI_PTR_TO_PHYSADDR (NextTable->Table);            NextIndex++;        }        NextTable = NextTable->Next;    }    /* Build an RSDP */    ACPI_MEMSET (&LocalRSDP, 0, sizeof (ACPI_TABLE_RSDP));    ACPI_MAKE_RSDP_SIG (LocalRSDP.Signature);    ACPI_MEMCPY (LocalRSDP.OemId, "I_TEST", 6);    LocalRSDP.Revision = 2;    LocalRSDP.XsdtPhysicalAddress = ACPI_PTR_TO_PHYSADDR (LocalXSDT);    LocalRSDP.Length = sizeof (ACPI_TABLE_XSDT);    /* Set checksums for both XSDT and RSDP */    LocalXSDT->Header.Checksum = (UINT8) -AcpiTbChecksum (        (void *) LocalXSDT, LocalXSDT->Header.Length);    LocalRSDP.Checksum = (UINT8) -AcpiTbChecksum (        (void *) &LocalRSDP, ACPI_RSDP_CHECKSUM_LENGTH);//.........这里部分代码省略.........
开发者ID:zenny,项目名称:DragonFlyBSD,代码行数:101,


示例16: AnBuildLocalTables

//.........这里部分代码省略.........        {            ExternalFadt =                ACPI_CAST_PTR (ACPI_TABLE_FADT, NextTable->Table);            LocalXSDT->TableOffsetEntry[0] =                ACPI_PTR_TO_PHYSADDR (NextTable->Table);        }        else        {            /* Install the table in the XSDT */            LocalXSDT->TableOffsetEntry[TableCount - NextIndex + 1] =                ACPI_PTR_TO_PHYSADDR (NextTable->Table);            NextIndex++;        }        NextTable = NextTable->Next;    }    /* Build an RSDP. Contains a valid XSDT only, no RSDT */    memset (&LocalRSDP, 0, sizeof (ACPI_TABLE_RSDP));    ACPI_MAKE_RSDP_SIG (LocalRSDP.Signature);    memcpy (LocalRSDP.OemId, "Intel", 6);    LocalRSDP.Revision = 2;    LocalRSDP.XsdtPhysicalAddress = ACPI_PTR_TO_PHYSADDR (LocalXSDT);    LocalRSDP.Length = sizeof (ACPI_TABLE_XSDT);    /* Set checksums for both XSDT and RSDP */    AnInitializeTableHeader ((void *) LocalXSDT, ACPI_SIG_XSDT, XsdtSize);    LocalRSDP.Checksum = 0;    LocalRSDP.Checksum = (UINT8) -AcpiTbChecksum (        (void *) &LocalRSDP, ACPI_RSDP_CHECKSUM_LENGTH);    if (!DsdtAddress)    {        return (AE_SUPPORT);    }    /*     * Build an FADT. There are two options for the FADT:     * 1) Incoming external FADT specified on the command line     * 2) A fully featured local FADT     */    memset (&LocalFADT, 0, sizeof (ACPI_TABLE_FADT));    if (ExternalFadt)    {        /*         * Use the external FADT, but we must update the DSDT/FACS         * addresses as well as the checksum         */        ExternalFadt->Dsdt = (UINT32) DsdtAddress;        ExternalFadt->Facs = ACPI_PTR_TO_PHYSADDR (&LocalFACS);        /*         * If there room in the FADT for the XDsdt and XFacs 64-bit         * pointers, use them.         */        if (ExternalFadt->Header.Length > ACPI_PTR_DIFF (            &ExternalFadt->XDsdt, ExternalFadt))        {            ExternalFadt->Dsdt = 0;            ExternalFadt->Facs = 0;
开发者ID:SchmErik,项目名称:acpica,代码行数:67,



注:本文中的AcpiTbChecksum函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ AcpiUtAcquireMutex函数代码示例
C++ AcpiReadBitRegister函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。