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