1 | /* SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 */ |
2 | /****************************************************************************** |
3 | * |
4 | * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures |
5 | * |
6 | * Copyright (C) 2000 - 2023, Intel Corp. |
7 | * |
8 | *****************************************************************************/ |
9 | |
10 | #ifndef _ACUTILS_H |
11 | #define _ACUTILS_H |
12 | |
13 | extern const u8 acpi_gbl_resource_aml_sizes[]; |
14 | extern const u8 acpi_gbl_resource_aml_serial_bus_sizes[]; |
15 | |
16 | /* Strings used by the disassembler and debugger resource dump routines */ |
17 | |
18 | #if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) |
19 | |
20 | extern const char *acpi_gbl_bm_decode[]; |
21 | extern const char *acpi_gbl_config_decode[]; |
22 | extern const char *acpi_gbl_consume_decode[]; |
23 | extern const char *acpi_gbl_dec_decode[]; |
24 | extern const char *acpi_gbl_he_decode[]; |
25 | extern const char *acpi_gbl_io_decode[]; |
26 | extern const char *acpi_gbl_ll_decode[]; |
27 | extern const char *acpi_gbl_max_decode[]; |
28 | extern const char *acpi_gbl_mem_decode[]; |
29 | extern const char *acpi_gbl_min_decode[]; |
30 | extern const char *acpi_gbl_mtp_decode[]; |
31 | extern const char *acpi_gbl_phy_decode[]; |
32 | extern const char *acpi_gbl_rng_decode[]; |
33 | extern const char *acpi_gbl_rw_decode[]; |
34 | extern const char *acpi_gbl_shr_decode[]; |
35 | extern const char *acpi_gbl_siz_decode[]; |
36 | extern const char *acpi_gbl_trs_decode[]; |
37 | extern const char *acpi_gbl_ttp_decode[]; |
38 | extern const char *acpi_gbl_typ_decode[]; |
39 | extern const char *acpi_gbl_ppc_decode[]; |
40 | extern const char *acpi_gbl_ior_decode[]; |
41 | extern const char *acpi_gbl_dts_decode[]; |
42 | extern const char *acpi_gbl_ct_decode[]; |
43 | extern const char *acpi_gbl_sbt_decode[]; |
44 | extern const char *acpi_gbl_am_decode[]; |
45 | extern const char *acpi_gbl_sm_decode[]; |
46 | extern const char *acpi_gbl_wm_decode[]; |
47 | extern const char *acpi_gbl_cph_decode[]; |
48 | extern const char *acpi_gbl_cpo_decode[]; |
49 | extern const char *acpi_gbl_dp_decode[]; |
50 | extern const char *acpi_gbl_ed_decode[]; |
51 | extern const char *acpi_gbl_bpb_decode[]; |
52 | extern const char *acpi_gbl_sb_decode[]; |
53 | extern const char *acpi_gbl_fc_decode[]; |
54 | extern const char *acpi_gbl_pt_decode[]; |
55 | extern const char *acpi_gbl_ptyp_decode[]; |
56 | extern const char *acpi_gbl_clock_input_mode[]; |
57 | extern const char *acpi_gbl_clock_input_scale[]; |
58 | #endif |
59 | |
60 | /* |
61 | * For the iASL compiler case, the output is redirected to stderr so that |
62 | * any of the various ACPI errors and warnings do not appear in the output |
63 | * files, for either the compiler or disassembler portions of the tool. |
64 | */ |
65 | #ifdef ACPI_ASL_COMPILER |
66 | |
67 | #include <stdio.h> |
68 | |
69 | #define ACPI_MSG_REDIRECT_BEGIN \ |
70 | FILE *output_file = acpi_gbl_output_file; \ |
71 | acpi_os_redirect_output (stderr); |
72 | |
73 | #define ACPI_MSG_REDIRECT_END \ |
74 | acpi_os_redirect_output (output_file); |
75 | |
76 | #else |
77 | /* |
78 | * non-iASL case - no redirection, nothing to do |
79 | */ |
80 | #define ACPI_MSG_REDIRECT_BEGIN |
81 | #define ACPI_MSG_REDIRECT_END |
82 | #endif |
83 | |
84 | /* |
85 | * Common error message prefixes |
86 | */ |
87 | #ifndef ACPI_MSG_ERROR |
88 | #define ACPI_MSG_ERROR "ACPI Error: " |
89 | #endif |
90 | #ifndef ACPI_MSG_WARNING |
91 | #define ACPI_MSG_WARNING "ACPI Warning: " |
92 | #endif |
93 | #ifndef ACPI_MSG_INFO |
94 | #define ACPI_MSG_INFO "ACPI: " |
95 | #endif |
96 | |
97 | #ifndef ACPI_MSG_BIOS_ERROR |
98 | #define ACPI_MSG_BIOS_ERROR "Firmware Error (ACPI): " |
99 | #endif |
100 | #ifndef ACPI_MSG_BIOS_WARNING |
101 | #define ACPI_MSG_BIOS_WARNING "Firmware Warning (ACPI): " |
102 | #endif |
103 | |
104 | /* |
105 | * Common message suffix |
106 | */ |
107 | #define ACPI_MSG_SUFFIX \ |
108 | acpi_os_printf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, module_name, line_number) |
109 | |
110 | /* Flags to indicate implicit or explicit string-to-integer conversion */ |
111 | |
112 | #define ACPI_IMPLICIT_CONVERSION TRUE |
113 | #define ACPI_NO_IMPLICIT_CONVERSION FALSE |
114 | |
115 | /* Types for Resource descriptor entries */ |
116 | |
117 | #define ACPI_INVALID_RESOURCE 0 |
118 | #define ACPI_FIXED_LENGTH 1 |
119 | #define ACPI_VARIABLE_LENGTH 2 |
120 | #define ACPI_SMALL_VARIABLE_LENGTH 3 |
121 | |
122 | typedef |
123 | acpi_status (*acpi_walk_aml_callback) (u8 *aml, |
124 | u32 length, |
125 | u32 offset, |
126 | u8 resource_index, void **context); |
127 | |
128 | typedef |
129 | acpi_status (*acpi_pkg_callback) (u8 object_type, |
130 | union acpi_operand_object * source_object, |
131 | union acpi_generic_state * state, |
132 | void *context); |
133 | |
134 | struct acpi_pkg_info { |
135 | u8 *free_space; |
136 | acpi_size length; |
137 | u32 object_space; |
138 | u32 num_packages; |
139 | }; |
140 | |
141 | /* Object reference counts */ |
142 | |
143 | #define REF_INCREMENT (u16) 0 |
144 | #define REF_DECREMENT (u16) 1 |
145 | |
146 | /* acpi_ut_dump_buffer */ |
147 | |
148 | #define DB_BYTE_DISPLAY 0x01 |
149 | #define DB_WORD_DISPLAY 0x02 |
150 | #define DB_DWORD_DISPLAY 0x04 |
151 | #define DB_QWORD_DISPLAY 0x08 |
152 | #define DB_DISPLAY_DATA_ONLY 0x10 |
153 | |
154 | /* |
155 | * utascii - ASCII utilities |
156 | */ |
157 | u8 acpi_ut_valid_nameseg(char *signature); |
158 | |
159 | u8 acpi_ut_valid_name_char(char character, u32 position); |
160 | |
161 | void acpi_ut_check_and_repair_ascii(u8 *name, char *repaired_name, u32 count); |
162 | |
163 | /* |
164 | * utcksum - Checksum utilities |
165 | */ |
166 | u8 acpi_ut_generate_checksum(void *table, u32 length, u8 original_checksum); |
167 | |
168 | u8 acpi_ut_checksum(u8 *buffer, u32 length); |
169 | |
170 | acpi_status |
171 | acpi_ut_verify_cdat_checksum(struct acpi_table_cdat *cdat_table, u32 length); |
172 | |
173 | acpi_status |
174 | acpi_ut_verify_checksum(struct acpi_table_header *table, u32 length); |
175 | |
176 | /* |
177 | * utnonansi - Non-ANSI C library functions |
178 | */ |
179 | void acpi_ut_strupr(char *src_string); |
180 | |
181 | void acpi_ut_strlwr(char *src_string); |
182 | |
183 | int acpi_ut_stricmp(char *string1, char *string2); |
184 | |
185 | /* |
186 | * utstrsuppt - string-to-integer conversion support functions |
187 | */ |
188 | acpi_status acpi_ut_convert_octal_string(char *string, u64 *return_value); |
189 | |
190 | acpi_status acpi_ut_convert_decimal_string(char *string, u64 *return_value_ptr); |
191 | |
192 | acpi_status acpi_ut_convert_hex_string(char *string, u64 *return_value_ptr); |
193 | |
194 | char acpi_ut_remove_whitespace(char **string); |
195 | |
196 | char acpi_ut_remove_leading_zeros(char **string); |
197 | |
198 | u8 acpi_ut_detect_hex_prefix(char **string); |
199 | |
200 | void acpi_ut_remove_hex_prefix(char **string); |
201 | |
202 | u8 acpi_ut_detect_octal_prefix(char **string); |
203 | |
204 | /* |
205 | * utstrtoul64 - string-to-integer conversion functions |
206 | */ |
207 | acpi_status acpi_ut_strtoul64(char *string, u64 *ret_integer); |
208 | |
209 | u64 acpi_ut_explicit_strtoul64(char *string); |
210 | |
211 | u64 acpi_ut_implicit_strtoul64(char *string); |
212 | |
213 | /* |
214 | * utglobal - Global data structures and procedures |
215 | */ |
216 | acpi_status acpi_ut_init_globals(void); |
217 | |
218 | const char *acpi_ut_get_mutex_name(u32 mutex_id); |
219 | |
220 | #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) |
221 | |
222 | const char *acpi_ut_get_notify_name(u32 notify_value, acpi_object_type type); |
223 | #endif |
224 | |
225 | const char *acpi_ut_get_type_name(acpi_object_type type); |
226 | |
227 | const char *acpi_ut_get_node_name(void *object); |
228 | |
229 | const char *acpi_ut_get_descriptor_name(void *object); |
230 | |
231 | const char *acpi_ut_get_reference_name(union acpi_operand_object *object); |
232 | |
233 | const char *acpi_ut_get_object_type_name(union acpi_operand_object *obj_desc); |
234 | |
235 | const char *acpi_ut_get_region_name(u8 space_id); |
236 | |
237 | const char *acpi_ut_get_event_name(u32 event_id); |
238 | |
239 | const char *acpi_ut_get_argument_type_name(u32 arg_type); |
240 | |
241 | char acpi_ut_hex_to_ascii_char(u64 integer, u32 position); |
242 | |
243 | acpi_status acpi_ut_ascii_to_hex_byte(char *two_ascii_chars, u8 *return_byte); |
244 | |
245 | u8 acpi_ut_ascii_char_to_hex(int hex_char); |
246 | |
247 | u8 acpi_ut_valid_object_type(acpi_object_type type); |
248 | |
249 | /* |
250 | * utinit - miscellaneous initialization and shutdown |
251 | */ |
252 | acpi_status acpi_ut_hardware_initialize(void); |
253 | |
254 | void acpi_ut_subsystem_shutdown(void); |
255 | |
256 | /* |
257 | * utcopy - Object construction and conversion interfaces |
258 | */ |
259 | acpi_status |
260 | acpi_ut_build_simple_object(union acpi_operand_object *obj, |
261 | union acpi_object *user_obj, |
262 | u8 *data_space, u32 *buffer_space_used); |
263 | |
264 | acpi_status |
265 | acpi_ut_build_package_object(union acpi_operand_object *obj, |
266 | u8 *buffer, u32 *space_used); |
267 | |
268 | acpi_status |
269 | acpi_ut_copy_iobject_to_eobject(union acpi_operand_object *obj, |
270 | struct acpi_buffer *ret_buffer); |
271 | |
272 | acpi_status |
273 | acpi_ut_copy_eobject_to_iobject(union acpi_object *obj, |
274 | union acpi_operand_object **internal_obj); |
275 | |
276 | acpi_status |
277 | acpi_ut_copy_isimple_to_isimple(union acpi_operand_object *source_obj, |
278 | union acpi_operand_object *dest_obj); |
279 | |
280 | acpi_status |
281 | acpi_ut_copy_iobject_to_iobject(union acpi_operand_object *source_desc, |
282 | union acpi_operand_object **dest_desc, |
283 | struct acpi_walk_state *walk_state); |
284 | |
285 | /* |
286 | * utcreate - Object creation |
287 | */ |
288 | acpi_status |
289 | acpi_ut_update_object_reference(union acpi_operand_object *object, u16 action); |
290 | |
291 | /* |
292 | * utdebug - Debug interfaces |
293 | */ |
294 | void acpi_ut_init_stack_ptr_trace(void); |
295 | |
296 | void acpi_ut_track_stack_ptr(void); |
297 | |
298 | void |
299 | acpi_ut_trace(u32 line_number, |
300 | const char *function_name, |
301 | const char *module_name, u32 component_id); |
302 | |
303 | void |
304 | acpi_ut_trace_ptr(u32 line_number, |
305 | const char *function_name, |
306 | const char *module_name, |
307 | u32 component_id, const void *pointer); |
308 | |
309 | void |
310 | acpi_ut_trace_u32(u32 line_number, |
311 | const char *function_name, |
312 | const char *module_name, u32 component_id, u32 integer); |
313 | |
314 | void |
315 | acpi_ut_trace_str(u32 line_number, |
316 | const char *function_name, |
317 | const char *module_name, |
318 | u32 component_id, const char *string); |
319 | |
320 | void |
321 | acpi_ut_exit(u32 line_number, |
322 | const char *function_name, |
323 | const char *module_name, u32 component_id); |
324 | |
325 | void |
326 | acpi_ut_status_exit(u32 line_number, |
327 | const char *function_name, |
328 | const char *module_name, |
329 | u32 component_id, acpi_status status); |
330 | |
331 | void |
332 | acpi_ut_value_exit(u32 line_number, |
333 | const char *function_name, |
334 | const char *module_name, u32 component_id, u64 value); |
335 | |
336 | void |
337 | acpi_ut_ptr_exit(u32 line_number, |
338 | const char *function_name, |
339 | const char *module_name, u32 component_id, u8 *ptr); |
340 | |
341 | void |
342 | acpi_ut_str_exit(u32 line_number, |
343 | const char *function_name, |
344 | const char *module_name, u32 component_id, const char *string); |
345 | |
346 | void |
347 | acpi_ut_debug_dump_buffer(u8 *buffer, u32 count, u32 display, u32 component_id); |
348 | |
349 | void acpi_ut_dump_buffer(u8 *buffer, u32 count, u32 display, u32 offset); |
350 | |
351 | #ifdef ACPI_APPLICATION |
352 | void |
353 | acpi_ut_dump_buffer_to_file(ACPI_FILE file, |
354 | u8 *buffer, |
355 | u32 count, u32 display, u32 base_offset); |
356 | #endif |
357 | |
358 | void acpi_ut_report_error(char *module_name, u32 line_number); |
359 | |
360 | void acpi_ut_report_info(char *module_name, u32 line_number); |
361 | |
362 | void acpi_ut_report_warning(char *module_name, u32 line_number); |
363 | |
364 | /* |
365 | * utdelete - Object deletion and reference counts |
366 | */ |
367 | void acpi_ut_add_reference(union acpi_operand_object *object); |
368 | |
369 | void acpi_ut_remove_reference(union acpi_operand_object *object); |
370 | |
371 | void acpi_ut_delete_internal_package_object(union acpi_operand_object *object); |
372 | |
373 | void acpi_ut_delete_internal_simple_object(union acpi_operand_object *object); |
374 | |
375 | void acpi_ut_delete_internal_object_list(union acpi_operand_object **obj_list); |
376 | |
377 | /* |
378 | * uteval - object evaluation |
379 | */ |
380 | acpi_status |
381 | acpi_ut_evaluate_object(struct acpi_namespace_node *prefix_node, |
382 | const char *path, |
383 | u32 expected_return_btypes, |
384 | union acpi_operand_object **return_desc); |
385 | |
386 | acpi_status |
387 | acpi_ut_evaluate_numeric_object(const char *object_name, |
388 | struct acpi_namespace_node *device_node, |
389 | u64 *value); |
390 | |
391 | acpi_status |
392 | acpi_ut_execute_STA(struct acpi_namespace_node *device_node, u32 *status_flags); |
393 | |
394 | acpi_status |
395 | acpi_ut_execute_power_methods(struct acpi_namespace_node *device_node, |
396 | const char **method_names, |
397 | u8 method_count, u8 *out_values); |
398 | |
399 | /* |
400 | * utids - device ID support |
401 | */ |
402 | acpi_status |
403 | acpi_ut_execute_HID(struct acpi_namespace_node *device_node, |
404 | struct acpi_pnp_device_id ** return_id); |
405 | |
406 | acpi_status |
407 | acpi_ut_execute_UID(struct acpi_namespace_node *device_node, |
408 | struct acpi_pnp_device_id ** return_id); |
409 | |
410 | acpi_status |
411 | acpi_ut_execute_CID(struct acpi_namespace_node *device_node, |
412 | struct acpi_pnp_device_id_list ** return_cid_list); |
413 | |
414 | acpi_status |
415 | acpi_ut_execute_CLS(struct acpi_namespace_node *device_node, |
416 | struct acpi_pnp_device_id **return_id); |
417 | |
418 | /* |
419 | * utlock - reader/writer locks |
420 | */ |
421 | acpi_status acpi_ut_create_rw_lock(struct acpi_rw_lock *lock); |
422 | |
423 | void acpi_ut_delete_rw_lock(struct acpi_rw_lock *lock); |
424 | |
425 | acpi_status acpi_ut_acquire_read_lock(struct acpi_rw_lock *lock); |
426 | |
427 | acpi_status acpi_ut_release_read_lock(struct acpi_rw_lock *lock); |
428 | |
429 | acpi_status acpi_ut_acquire_write_lock(struct acpi_rw_lock *lock); |
430 | |
431 | void acpi_ut_release_write_lock(struct acpi_rw_lock *lock); |
432 | |
433 | /* |
434 | * utobject - internal object create/delete/cache routines |
435 | */ |
436 | union acpi_operand_object *acpi_ut_create_internal_object_dbg(const char |
437 | *module_name, |
438 | u32 line_number, |
439 | u32 component_id, |
440 | acpi_object_type |
441 | type); |
442 | |
443 | void *acpi_ut_allocate_object_desc_dbg(const char *module_name, |
444 | u32 line_number, u32 component_id); |
445 | |
446 | #define acpi_ut_create_internal_object(t) acpi_ut_create_internal_object_dbg (_acpi_module_name,__LINE__,_COMPONENT,t) |
447 | #define acpi_ut_allocate_object_desc() acpi_ut_allocate_object_desc_dbg (_acpi_module_name,__LINE__,_COMPONENT) |
448 | |
449 | void acpi_ut_delete_object_desc(union acpi_operand_object *object); |
450 | |
451 | u8 acpi_ut_valid_internal_object(void *object); |
452 | |
453 | union acpi_operand_object *acpi_ut_create_package_object(u32 count); |
454 | |
455 | union acpi_operand_object *acpi_ut_create_integer_object(u64 value); |
456 | |
457 | union acpi_operand_object *acpi_ut_create_buffer_object(acpi_size buffer_size); |
458 | |
459 | union acpi_operand_object *acpi_ut_create_string_object(acpi_size string_size); |
460 | |
461 | acpi_status |
462 | acpi_ut_get_object_size(union acpi_operand_object *obj, acpi_size *obj_length); |
463 | |
464 | /* |
465 | * utosi - Support for the _OSI predefined control method |
466 | */ |
467 | acpi_status acpi_ut_initialize_interfaces(void); |
468 | |
469 | acpi_status acpi_ut_interface_terminate(void); |
470 | |
471 | acpi_status acpi_ut_install_interface(acpi_string interface_name); |
472 | |
473 | acpi_status acpi_ut_remove_interface(acpi_string interface_name); |
474 | |
475 | acpi_status acpi_ut_update_interfaces(u8 action); |
476 | |
477 | struct acpi_interface_info *acpi_ut_get_interface(acpi_string interface_name); |
478 | |
479 | acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state); |
480 | |
481 | /* |
482 | * utpredef - support for predefined names |
483 | */ |
484 | const union acpi_predefined_info *acpi_ut_get_next_predefined_method(const union |
485 | acpi_predefined_info |
486 | *this_name); |
487 | |
488 | const union acpi_predefined_info *acpi_ut_match_predefined_method(char *name); |
489 | |
490 | void acpi_ut_get_expected_return_types(char *buffer, u32 expected_btypes); |
491 | |
492 | #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP) |
493 | const union acpi_predefined_info *acpi_ut_match_resource_name(char *name); |
494 | |
495 | void |
496 | acpi_ut_display_predefined_method(char *buffer, |
497 | const union acpi_predefined_info *this_name, |
498 | u8 multi_line); |
499 | |
500 | u32 acpi_ut_get_resource_bit_width(char *buffer, u16 types); |
501 | #endif |
502 | |
503 | /* |
504 | * utstate - Generic state creation/cache routines |
505 | */ |
506 | void |
507 | acpi_ut_push_generic_state(union acpi_generic_state **list_head, |
508 | union acpi_generic_state *state); |
509 | |
510 | union acpi_generic_state *acpi_ut_pop_generic_state(union acpi_generic_state |
511 | **list_head); |
512 | |
513 | union acpi_generic_state *acpi_ut_create_generic_state(void); |
514 | |
515 | struct acpi_thread_state *acpi_ut_create_thread_state(void); |
516 | |
517 | union acpi_generic_state *acpi_ut_create_update_state(union acpi_operand_object |
518 | *object, u16 action); |
519 | |
520 | union acpi_generic_state *acpi_ut_create_pkg_state(void *internal_object, |
521 | void *external_object, |
522 | u32 index); |
523 | |
524 | acpi_status |
525 | acpi_ut_create_update_state_and_push(union acpi_operand_object *object, |
526 | u16 action, |
527 | union acpi_generic_state **state_list); |
528 | |
529 | union acpi_generic_state *acpi_ut_create_control_state(void); |
530 | |
531 | void acpi_ut_delete_generic_state(union acpi_generic_state *state); |
532 | |
533 | /* |
534 | * utmath |
535 | */ |
536 | acpi_status |
537 | acpi_ut_divide(u64 in_dividend, |
538 | u64 in_divisor, u64 *out_quotient, u64 *out_remainder); |
539 | |
540 | acpi_status |
541 | acpi_ut_short_divide(u64 in_dividend, |
542 | u32 divisor, u64 *out_quotient, u32 *out_remainder); |
543 | |
544 | acpi_status |
545 | acpi_ut_short_multiply(u64 in_multiplicand, u32 multiplier, u64 *outproduct); |
546 | |
547 | acpi_status acpi_ut_short_shift_left(u64 operand, u32 count, u64 *out_result); |
548 | |
549 | acpi_status acpi_ut_short_shift_right(u64 operand, u32 count, u64 *out_result); |
550 | |
551 | /* |
552 | * utmisc |
553 | */ |
554 | const struct acpi_exception_info *acpi_ut_validate_exception(acpi_status |
555 | status); |
556 | |
557 | u8 acpi_ut_is_pci_root_bridge(char *id); |
558 | |
559 | #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP) |
560 | u8 acpi_ut_is_aml_table(struct acpi_table_header *table); |
561 | #endif |
562 | |
563 | acpi_status |
564 | acpi_ut_walk_package_tree(union acpi_operand_object *source_object, |
565 | void *target_object, |
566 | acpi_pkg_callback walk_callback, void *context); |
567 | |
568 | /* Values for Base above (16=Hex, 10=Decimal) */ |
569 | |
570 | #define ACPI_ANY_BASE 0 |
571 | |
572 | u32 acpi_ut_dword_byte_swap(u32 value); |
573 | |
574 | void acpi_ut_set_integer_width(u8 revision); |
575 | |
576 | #ifdef ACPI_DEBUG_OUTPUT |
577 | void |
578 | acpi_ut_display_init_pathname(u8 type, |
579 | struct acpi_namespace_node *obj_handle, |
580 | const char *path); |
581 | #endif |
582 | |
583 | /* |
584 | * utownerid - Support for Table/Method Owner IDs |
585 | */ |
586 | acpi_status acpi_ut_allocate_owner_id(acpi_owner_id *owner_id); |
587 | |
588 | void acpi_ut_release_owner_id(acpi_owner_id *owner_id); |
589 | |
590 | /* |
591 | * utresrc |
592 | */ |
593 | acpi_status |
594 | acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state, |
595 | u8 *aml, |
596 | acpi_size aml_length, |
597 | acpi_walk_aml_callback user_function, |
598 | void **context); |
599 | |
600 | acpi_status |
601 | acpi_ut_validate_resource(struct acpi_walk_state *walk_state, |
602 | void *aml, u8 *return_index); |
603 | |
604 | u32 acpi_ut_get_descriptor_length(void *aml); |
605 | |
606 | u16 acpi_ut_get_resource_length(void *aml); |
607 | |
608 | u8 (void *aml); |
609 | |
610 | u8 acpi_ut_get_resource_type(void *aml); |
611 | |
612 | acpi_status |
613 | acpi_ut_get_resource_end_tag(union acpi_operand_object *obj_desc, u8 **end_tag); |
614 | |
615 | /* |
616 | * utstring - String and character utilities |
617 | */ |
618 | void acpi_ut_print_string(char *string, u16 max_length); |
619 | |
620 | #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP |
621 | void ut_convert_backslashes(char *pathname); |
622 | #endif |
623 | |
624 | void acpi_ut_repair_name(char *name); |
625 | |
626 | #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) || defined (ACPI_DEBUG_OUTPUT) |
627 | u8 acpi_ut_safe_strcpy(char *dest, acpi_size dest_size, char *source); |
628 | |
629 | void acpi_ut_safe_strncpy(char *dest, char *source, acpi_size dest_size); |
630 | |
631 | u8 acpi_ut_safe_strcat(char *dest, acpi_size dest_size, char *source); |
632 | |
633 | u8 |
634 | acpi_ut_safe_strncat(char *dest, |
635 | acpi_size dest_size, |
636 | char *source, acpi_size max_transfer_length); |
637 | #endif |
638 | |
639 | /* |
640 | * utmutex - mutex support |
641 | */ |
642 | acpi_status acpi_ut_mutex_initialize(void); |
643 | |
644 | void acpi_ut_mutex_terminate(void); |
645 | |
646 | acpi_status acpi_ut_acquire_mutex(acpi_mutex_handle mutex_id); |
647 | |
648 | acpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id); |
649 | |
650 | /* |
651 | * utalloc - memory allocation and object caching |
652 | */ |
653 | acpi_status acpi_ut_create_caches(void); |
654 | |
655 | acpi_status acpi_ut_delete_caches(void); |
656 | |
657 | acpi_status acpi_ut_validate_buffer(struct acpi_buffer *buffer); |
658 | |
659 | acpi_status |
660 | acpi_ut_initialize_buffer(struct acpi_buffer *buffer, |
661 | acpi_size required_length); |
662 | |
663 | #ifdef ACPI_DBG_TRACK_ALLOCATIONS |
664 | void *acpi_ut_allocate_and_track(acpi_size size, |
665 | u32 component, const char *module, u32 line); |
666 | |
667 | void *acpi_ut_allocate_zeroed_and_track(acpi_size size, |
668 | u32 component, |
669 | const char *module, u32 line); |
670 | |
671 | void |
672 | acpi_ut_free_and_track(void *address, |
673 | u32 component, const char *module, u32 line); |
674 | |
675 | void acpi_ut_dump_allocation_info(void); |
676 | |
677 | void acpi_ut_dump_allocations(u32 component, const char *module); |
678 | |
679 | acpi_status |
680 | acpi_ut_create_list(const char *list_name, |
681 | u16 object_size, struct acpi_memory_list **return_cache); |
682 | |
683 | #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ |
684 | |
685 | /* |
686 | * utaddress - address range check |
687 | */ |
688 | acpi_status |
689 | acpi_ut_add_address_range(acpi_adr_space_type space_id, |
690 | acpi_physical_address address, |
691 | u32 length, struct acpi_namespace_node *region_node); |
692 | |
693 | void |
694 | acpi_ut_remove_address_range(acpi_adr_space_type space_id, |
695 | struct acpi_namespace_node *region_node); |
696 | |
697 | u32 |
698 | acpi_ut_check_address_range(acpi_adr_space_type space_id, |
699 | acpi_physical_address address, u32 length, u8 warn); |
700 | |
701 | void acpi_ut_delete_address_lists(void); |
702 | |
703 | /* |
704 | * utxferror - various error/warning output functions |
705 | */ |
706 | ACPI_PRINTF_LIKE(5) |
707 | void ACPI_INTERNAL_VAR_XFACE |
708 | acpi_ut_predefined_warning(const char *module_name, |
709 | u32 line_number, |
710 | char *pathname, |
711 | u16 node_flags, const char *format, ...); |
712 | |
713 | ACPI_PRINTF_LIKE(5) |
714 | void ACPI_INTERNAL_VAR_XFACE |
715 | acpi_ut_predefined_info(const char *module_name, |
716 | u32 line_number, |
717 | char *pathname, |
718 | u16 node_flags, const char *format, ...); |
719 | |
720 | ACPI_PRINTF_LIKE(5) |
721 | void ACPI_INTERNAL_VAR_XFACE |
722 | acpi_ut_predefined_bios_error(const char *module_name, |
723 | u32 line_number, |
724 | char *pathname, |
725 | u16 node_flags, const char *format, ...); |
726 | |
727 | void |
728 | acpi_ut_prefixed_namespace_error(const char *module_name, |
729 | u32 line_number, |
730 | union acpi_generic_state *prefix_scope, |
731 | const char *internal_name, |
732 | acpi_status lookup_status); |
733 | |
734 | void |
735 | acpi_ut_method_error(const char *module_name, |
736 | u32 line_number, |
737 | const char *message, |
738 | struct acpi_namespace_node *node, |
739 | const char *path, acpi_status lookup_status); |
740 | |
741 | /* |
742 | * Utility functions for ACPI names and IDs |
743 | */ |
744 | const struct ah_predefined_name *acpi_ah_match_predefined_name(char *nameseg); |
745 | |
746 | const struct ah_device_id *acpi_ah_match_hardware_id(char *hid); |
747 | |
748 | const char *acpi_ah_match_uuid(u8 *data); |
749 | |
750 | /* |
751 | * utuuid -- UUID support functions |
752 | */ |
753 | #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP) |
754 | void acpi_ut_convert_string_to_uuid(char *in_string, u8 *uuid_buffer); |
755 | |
756 | acpi_status acpi_ut_convert_uuid_to_string(char *uuid_buffer, char *out_string); |
757 | #endif |
758 | |
759 | #endif /* _ACUTILS_H */ |
760 | |