162306a36Sopenharmony_ci/* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ 262306a36Sopenharmony_ci/****************************************************************************** 362306a36Sopenharmony_ci * 462306a36Sopenharmony_ci * Module Name: acapps - common include for ACPI applications/tools 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Copyright (C) 2000 - 2023, Intel Corp. 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci *****************************************************************************/ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef _ACAPPS 1162306a36Sopenharmony_ci#define _ACAPPS 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#ifdef ACPI_USE_STANDARD_HEADERS 1462306a36Sopenharmony_ci#include <sys/stat.h> 1562306a36Sopenharmony_ci#endif /* ACPI_USE_STANDARD_HEADERS */ 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci/* Common info for tool signons */ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#define ACPICA_NAME "Intel ACPI Component Architecture" 2062306a36Sopenharmony_ci#define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2022 Intel Corporation" 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#if ACPI_MACHINE_WIDTH == 64 2362306a36Sopenharmony_ci#define ACPI_WIDTH " (64-bit version)" 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci#elif ACPI_MACHINE_WIDTH == 32 2662306a36Sopenharmony_ci#define ACPI_WIDTH " (32-bit version)" 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci#else 2962306a36Sopenharmony_ci#error unknown ACPI_MACHINE_WIDTH 3062306a36Sopenharmony_ci#define ACPI_WIDTH " (unknown bit width, not 32 or 64)" 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci#endif 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci/* Macros for signons and file headers */ 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci#define ACPI_COMMON_SIGNON(utility_name) \ 3762306a36Sopenharmony_ci "\n%s\n%s version %8.8X\n%s\n\n", \ 3862306a36Sopenharmony_ci ACPICA_NAME, \ 3962306a36Sopenharmony_ci utility_name, ((u32) ACPI_CA_VERSION), \ 4062306a36Sopenharmony_ci ACPICA_COPYRIGHT 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci#define ACPI_COMMON_HEADER(utility_name, prefix) \ 4362306a36Sopenharmony_ci "%s%s\n%s%s version %8.8X%s\n%s%s\n%s\n", \ 4462306a36Sopenharmony_ci prefix, ACPICA_NAME, \ 4562306a36Sopenharmony_ci prefix, utility_name, ((u32) ACPI_CA_VERSION), ACPI_WIDTH, \ 4662306a36Sopenharmony_ci prefix, ACPICA_COPYRIGHT, \ 4762306a36Sopenharmony_ci prefix 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci#define ACPI_COMMON_BUILD_TIME \ 5062306a36Sopenharmony_ci "Build date/time: %s %s\n", __DATE__, __TIME__ 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci/* Macros for usage messages */ 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci#define ACPI_USAGE_HEADER(usage) \ 5562306a36Sopenharmony_ci printf ("Usage: %s\nOptions:\n", usage); 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci#define ACPI_USAGE_TEXT(description) \ 5862306a36Sopenharmony_ci printf (description); 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci#define ACPI_OPTION(name, description) \ 6162306a36Sopenharmony_ci printf (" %-20s%s\n", name, description); 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci/* Check for unexpected exceptions */ 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#define ACPI_CHECK_STATUS(name, status, expected) \ 6662306a36Sopenharmony_ci if (status != expected) \ 6762306a36Sopenharmony_ci { \ 6862306a36Sopenharmony_ci acpi_os_printf ("Unexpected %s from %s (%s-%d)\n", \ 6962306a36Sopenharmony_ci acpi_format_exception (status), #name, _acpi_module_name, __LINE__); \ 7062306a36Sopenharmony_ci } 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ci/* Check for unexpected non-AE_OK errors */ 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci#define ACPI_CHECK_OK(name, status) ACPI_CHECK_STATUS (name, status, AE_OK); 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci#define FILE_SUFFIX_DISASSEMBLY "dsl" 7762306a36Sopenharmony_ci#define FILE_SUFFIX_BINARY_TABLE ".dat" /* Needs the dot */ 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci/* acfileio */ 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ciacpi_status 8262306a36Sopenharmony_ciac_get_all_tables_from_file(char *filename, 8362306a36Sopenharmony_ci u8 get_only_aml_tables, 8462306a36Sopenharmony_ci struct acpi_new_table_desc **return_list_head); 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_civoid ac_delete_table_list(struct acpi_new_table_desc *list_head); 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ciu8 ac_is_file_binary(FILE * file); 8962306a36Sopenharmony_ci 9062306a36Sopenharmony_ciacpi_status ac_validate_table_header(FILE * file, long table_offset); 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci/* Values for get_only_aml_tables */ 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci#define ACPI_GET_ONLY_AML_TABLES TRUE 9562306a36Sopenharmony_ci#define ACPI_GET_ALL_TABLES FALSE 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci/* 9862306a36Sopenharmony_ci * getopt 9962306a36Sopenharmony_ci */ 10062306a36Sopenharmony_ciint acpi_getopt(int argc, char **argv, char *opts); 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ciint acpi_getopt_argument(int argc, char **argv); 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ciextern int acpi_gbl_optind; 10562306a36Sopenharmony_ciextern int acpi_gbl_opterr; 10662306a36Sopenharmony_ciextern int acpi_gbl_sub_opt_char; 10762306a36Sopenharmony_ciextern char *acpi_gbl_optarg; 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci/* 11062306a36Sopenharmony_ci * cmfsize - Common get file size function 11162306a36Sopenharmony_ci */ 11262306a36Sopenharmony_ciu32 cm_get_file_size(ACPI_FILE file); 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci/* 11562306a36Sopenharmony_ci * adwalk 11662306a36Sopenharmony_ci */ 11762306a36Sopenharmony_civoid 11862306a36Sopenharmony_ciacpi_dm_cross_reference_namespace(union acpi_parse_object *parse_tree_root, 11962306a36Sopenharmony_ci struct acpi_namespace_node *namespace_root, 12062306a36Sopenharmony_ci acpi_owner_id owner_id); 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_civoid acpi_dm_dump_tree(union acpi_parse_object *origin); 12362306a36Sopenharmony_ci 12462306a36Sopenharmony_civoid acpi_dm_find_orphan_methods(union acpi_parse_object *origin); 12562306a36Sopenharmony_ci 12662306a36Sopenharmony_civoid 12762306a36Sopenharmony_ciacpi_dm_finish_namespace_load(union acpi_parse_object *parse_tree_root, 12862306a36Sopenharmony_ci struct acpi_namespace_node *namespace_root, 12962306a36Sopenharmony_ci acpi_owner_id owner_id); 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_civoid 13262306a36Sopenharmony_ciacpi_dm_convert_parse_objects(union acpi_parse_object *parse_tree_root, 13362306a36Sopenharmony_ci struct acpi_namespace_node *namespace_root); 13462306a36Sopenharmony_ci 13562306a36Sopenharmony_ci/* 13662306a36Sopenharmony_ci * adfile 13762306a36Sopenharmony_ci */ 13862306a36Sopenharmony_ciacpi_status ad_initialize(void); 13962306a36Sopenharmony_ci 14062306a36Sopenharmony_cichar *fl_generate_filename(char *input_filename, char *suffix); 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ciacpi_status 14362306a36Sopenharmony_cifl_split_input_pathname(char *input_path, 14462306a36Sopenharmony_ci char **out_directory_path, char **out_filename); 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_cichar *fl_get_file_basename(char *file_pathname); 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_cichar *ad_generate_filename(char *prefix, char *table_id); 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_civoid 15162306a36Sopenharmony_ciad_write_table(struct acpi_table_header *table, 15262306a36Sopenharmony_ci u32 length, char *table_name, char *oem_table_id); 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci#endif /* _ACAPPS */ 155