/* Find specified table in XSDT, run handler on it and return its return value  */
int sfi_acpi_table_parse(char *signature, char *oem_id, char *oem_table_id, int(*handler)(struct acpi_table_header *))
/* Find specified table in XSDT, run handler on it and return its return value  */
int sfi_acpi_table_parse(char *signature, char *oem_id, char *oem_table_id, int(*handler)(struct acpi_table_header *))
{
	struct acpi_table_header *table = NULL;
	struct sfi_table_key key;
	int ret = 0;
	if (sfi_disabled)
		return -1;
	key.sig = signature;
	key.oem_id = oem_id;
	key.oem_table_id = oem_table_id;
	table = sfi_acpi_get_table(&key);
	if (!table)
		return -EINVAL;
	ret = handler(table);
	sfi_acpi_put_table(table);
	return ret;
}