^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /******************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Module Name: acapps - common include for ACPI applications/tools
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (C) 2000 - 2020, Intel Corp.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) *****************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #ifndef _ACAPPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define _ACAPPS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #ifdef ACPI_USE_STANDARD_HEADERS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <sys/stat.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #endif /* ACPI_USE_STANDARD_HEADERS */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) /* Common info for tool signons */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define ACPICA_NAME "Intel ACPI Component Architecture"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2020 Intel Corporation"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #if ACPI_MACHINE_WIDTH == 64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define ACPI_WIDTH " (64-bit version)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #elif ACPI_MACHINE_WIDTH == 32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define ACPI_WIDTH " (32-bit version)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #error unknown ACPI_MACHINE_WIDTH
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define ACPI_WIDTH " (unknown bit width, not 32 or 64)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) /* Macros for signons and file headers */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) #define ACPI_COMMON_SIGNON(utility_name) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) "\n%s\n%s version %8.8X\n%s\n\n", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) ACPICA_NAME, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) utility_name, ((u32) ACPI_CA_VERSION), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) ACPICA_COPYRIGHT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define ACPI_COMMON_HEADER(utility_name, prefix) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) "%s%s\n%s%s version %8.8X%s\n%s%s\n%s\n", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) prefix, ACPICA_NAME, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) prefix, utility_name, ((u32) ACPI_CA_VERSION), ACPI_WIDTH, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) prefix, ACPICA_COPYRIGHT, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) prefix
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define ACPI_COMMON_BUILD_TIME \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) "Build date/time: %s %s\n", __DATE__, __TIME__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) /* Macros for usage messages */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define ACPI_USAGE_HEADER(usage) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) printf ("Usage: %s\nOptions:\n", usage);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #define ACPI_USAGE_TEXT(description) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) printf (description);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) #define ACPI_OPTION(name, description) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) printf (" %-20s%s\n", name, description);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) /* Check for unexpected exceptions */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) #define ACPI_CHECK_STATUS(name, status, expected) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) if (status != expected) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) acpi_os_printf ("Unexpected %s from %s (%s-%d)\n", \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) acpi_format_exception (status), #name, _acpi_module_name, __LINE__); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) /* Check for unexpected non-AE_OK errors */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) #define ACPI_CHECK_OK(name, status) ACPI_CHECK_STATUS (name, status, AE_OK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) #define FILE_SUFFIX_DISASSEMBLY "dsl"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) #define FILE_SUFFIX_BINARY_TABLE ".dat" /* Needs the dot */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) /* acfileio */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) acpi_status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) ac_get_all_tables_from_file(char *filename,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) u8 get_only_aml_tables,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) struct acpi_new_table_desc **return_list_head);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) void ac_delete_table_list(struct acpi_new_table_desc *list_head);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) u8 ac_is_file_binary(FILE * file);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) acpi_status ac_validate_table_header(FILE * file, long table_offset);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) /* Values for get_only_aml_tables */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) #define ACPI_GET_ONLY_AML_TABLES TRUE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) #define ACPI_GET_ALL_TABLES FALSE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) * getopt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) int acpi_getopt(int argc, char **argv, char *opts);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) int acpi_getopt_argument(int argc, char **argv);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) extern int acpi_gbl_optind;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) extern int acpi_gbl_opterr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) extern int acpi_gbl_sub_opt_char;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) extern char *acpi_gbl_optarg;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) * cmfsize - Common get file size function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) u32 cm_get_file_size(ACPI_FILE file);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) * adwalk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) acpi_dm_cross_reference_namespace(union acpi_parse_object *parse_tree_root,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) struct acpi_namespace_node *namespace_root,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) acpi_owner_id owner_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) void acpi_dm_dump_tree(union acpi_parse_object *origin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) void acpi_dm_find_orphan_methods(union acpi_parse_object *origin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) acpi_dm_finish_namespace_load(union acpi_parse_object *parse_tree_root,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) struct acpi_namespace_node *namespace_root,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) acpi_owner_id owner_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) acpi_dm_convert_parse_objects(union acpi_parse_object *parse_tree_root,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) struct acpi_namespace_node *namespace_root);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) * adfile
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) acpi_status ad_initialize(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) char *fl_generate_filename(char *input_filename, char *suffix);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) acpi_status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) fl_split_input_pathname(char *input_path,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) char **out_directory_path, char **out_filename);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) char *fl_get_file_basename(char *file_pathname);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) char *ad_generate_filename(char *prefix, char *table_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) void
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) ad_write_table(struct acpi_table_header *table,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) u32 length, char *table_name, char *oem_table_id);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) #endif /* _ACAPPS */