/******************************************************************************* * * FUNCTION: acpi_tb_find_table * * PARAMETERS: signature - String with ACPI table signature * oem_id - String with the table OEM ID * oem_table_id - String with the OEM Table ID * table_index - Where the table index is returned * * RETURN: Status and table index * * DESCRIPTION: Find an ACPI table (in the RSDT/XSDT) that matches the * Signature, OEM ID and OEM Table ID. Returns an index that can * be used to get the table header or entire table. *
******************************************************************************/
acpi_status
acpi_tb_find_table(char *signature, char *oem_id, char *oem_table_id, u32 *table_index)
{
acpi_status status = AE_OK; struct acpi_table_header header;
u32 i;
ACPI_FUNCTION_TRACE(tb_find_table);
/* Validate the input table signature */
if (!acpi_ut_valid_nameseg(signature)) {
return_ACPI_STATUS(AE_BAD_SIGNATURE);
}
(void)acpi_ut_acquire_mutex(ACPI_MTX_TABLES); for (i = 0; i < acpi_gbl_root_table_list.current_table_count; ++i) { if (memcmp(&(acpi_gbl_root_table_list.tables[i].signature),
header.signature, ACPI_NAMESEG_SIZE)) {
/* Not the requested table */
continue;
}
/* Table with matching signature has been found */
if (!acpi_gbl_root_table_list.tables[i].pointer) {
/* Table is not currently mapped, map it */
status =
acpi_tb_validate_table(&acpi_gbl_root_table_list.
tables[i]); if (ACPI_FAILURE(status)) { goto unlock_and_exit;
}
if (!acpi_gbl_root_table_list.tables[i].pointer) { continue;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.