acutils.h 14.8 KB
Newer Older
L
Linus Torvalds 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
/******************************************************************************
 *
 * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
 *
 *****************************************************************************/

/*
 * Copyright (C) 2000 - 2005, R. Byron Moore
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer,
 *    without modification.
 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
 *    substantially similar to the "NO WARRANTY" disclaimer below
 *    ("Disclaimer") and any redistribution must be conditioned upon
 *    including a substantially similar Disclaimer requirement for further
 *    binary redistribution.
 * 3. Neither the names of the above-listed copyright holders nor the names
 *    of any contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * Alternatively, this software may be distributed under the terms of the
 * GNU General Public License ("GPL") version 2 as published by the Free
 * Software Foundation.
 *
 * NO WARRANTY
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGES.
 */

#ifndef _ACUTILS_H
#define _ACUTILS_H

B
Bob Moore 已提交
47 48 49 50 51 52 53 54 55
extern const u8 acpi_gbl_resource_aml_sizes[];

/* Types for Resource descriptor entries */

#define ACPI_INVALID_RESOURCE           0
#define ACPI_FIXED_LENGTH               1
#define ACPI_VARIABLE_LENGTH            2
#define ACPI_SMALL_VARIABLE_LENGTH      3

L
Linus Torvalds 已提交
56
typedef
L
Len Brown 已提交
57 58 59 60 61 62 63 64 65 66
acpi_status(*acpi_pkg_callback) (u8 object_type,
				 union acpi_operand_object * source_object,
				 union acpi_generic_state * state,
				 void *context);

struct acpi_pkg_info {
	u8 *free_space;
	acpi_size length;
	u32 object_space;
	u32 num_packages;
L
Linus Torvalds 已提交
67 68 69 70 71 72 73 74 75 76 77 78 79 80
};

#define REF_INCREMENT       (u16) 0
#define REF_DECREMENT       (u16) 1
#define REF_FORCE_DELETE    (u16) 2

/* acpi_ut_dump_buffer */

#define DB_BYTE_DISPLAY     1
#define DB_WORD_DISPLAY     2
#define DB_DWORD_DISPLAY    4
#define DB_QWORD_DISPLAY    8

/*
R
Robert Moore 已提交
81
 * utglobal - Global data structures and procedures
L
Linus Torvalds 已提交
82
 */
L
Len Brown 已提交
83
void acpi_ut_init_globals(void);
L
Linus Torvalds 已提交
84 85 86

#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)

L
Len Brown 已提交
87
char *acpi_ut_get_mutex_name(u32 mutex_id);
L
Linus Torvalds 已提交
88 89 90

#endif

L
Len Brown 已提交
91
char *acpi_ut_get_type_name(acpi_object_type type);
L
Linus Torvalds 已提交
92

L
Len Brown 已提交
93
char *acpi_ut_get_node_name(void *object);
L
Linus Torvalds 已提交
94

L
Len Brown 已提交
95
char *acpi_ut_get_descriptor_name(void *object);
L
Linus Torvalds 已提交
96

L
Len Brown 已提交
97
char *acpi_ut_get_object_type_name(union acpi_operand_object *obj_desc);
L
Linus Torvalds 已提交
98

L
Len Brown 已提交
99
char *acpi_ut_get_region_name(u8 space_id);
L
Linus Torvalds 已提交
100

L
Len Brown 已提交
101
char *acpi_ut_get_event_name(u32 event_id);
L
Linus Torvalds 已提交
102

L
Len Brown 已提交
103
char acpi_ut_hex_to_ascii_char(acpi_integer integer, u32 position);
L
Linus Torvalds 已提交
104

L
Len Brown 已提交
105
u8 acpi_ut_valid_object_type(acpi_object_type type);
L
Linus Torvalds 已提交
106 107

/*
R
Robert Moore 已提交
108
 * utinit - miscellaneous initialization and shutdown
L
Linus Torvalds 已提交
109
 */
L
Len Brown 已提交
110
acpi_status acpi_ut_hardware_initialize(void);
R
Robert Moore 已提交
111

L
Len Brown 已提交
112
void acpi_ut_subsystem_shutdown(void);
R
Robert Moore 已提交
113

L
Len Brown 已提交
114
acpi_status acpi_ut_validate_fadt(void);
R
Robert Moore 已提交
115 116 117 118

/*
 * utclib - Local implementations of C library functions
 */
L
Linus Torvalds 已提交
119 120
#ifndef ACPI_USE_SYSTEM_CLIBRARY

L
Len Brown 已提交
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
acpi_size acpi_ut_strlen(const char *string);

char *acpi_ut_strcpy(char *dst_string, const char *src_string);

char *acpi_ut_strncpy(char *dst_string,
		      const char *src_string, acpi_size count);

int acpi_ut_memcmp(const char *buffer1, const char *buffer2, acpi_size count);

int acpi_ut_strncmp(const char *string1, const char *string2, acpi_size count);

int acpi_ut_strcmp(const char *string1, const char *string2);

char *acpi_ut_strcat(char *dst_string, const char *src_string);

char *acpi_ut_strncat(char *dst_string,
		      const char *src_string, acpi_size count);

u32 acpi_ut_strtoul(const char *string, char **terminator, u32 base);

char *acpi_ut_strstr(char *string1, char *string2);

void *acpi_ut_memcpy(void *dest, const void *src, acpi_size count);

void *acpi_ut_memset(void *dest, acpi_native_uint value, acpi_size count);

int acpi_ut_to_upper(int c);

int acpi_ut_to_lower(int c);
L
Linus Torvalds 已提交
150 151 152

extern const u8 _acpi_ctype[];

L
Len Brown 已提交
153 154 155 156 157 158 159 160 161 162
#define _ACPI_XA     0x00	/* extra alphabetic - not supported */
#define _ACPI_XS     0x40	/* extra space */
#define _ACPI_BB     0x00	/* BEL, BS, etc. - not supported */
#define _ACPI_CN     0x20	/* CR, FF, HT, NL, VT */
#define _ACPI_DI     0x04	/* '0'-'9' */
#define _ACPI_LO     0x02	/* 'a'-'z' */
#define _ACPI_PU     0x10	/* punctuation */
#define _ACPI_SP     0x08	/* space */
#define _ACPI_UP     0x01	/* 'A'-'Z' */
#define _ACPI_XD     0x80	/* '0'-'9', 'A'-'F', 'a'-'f' */
L
Linus Torvalds 已提交
163 164 165 166 167 168 169 170 171

#define ACPI_IS_DIGIT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
#define ACPI_IS_SPACE(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
#define ACPI_IS_UPPER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
#define ACPI_IS_LOWER(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
#define ACPI_IS_PRINT(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU))
#define ACPI_IS_ALPHA(c)  (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))

L
Len Brown 已提交
172
#endif				/* ACPI_USE_SYSTEM_CLIBRARY */
R
Robert Moore 已提交
173

L
Linus Torvalds 已提交
174
/*
R
Robert Moore 已提交
175
 * utcopy - Object construction and conversion interfaces
L
Linus Torvalds 已提交
176 177
 */
acpi_status
L
Len Brown 已提交
178 179 180
acpi_ut_build_simple_object(union acpi_operand_object *obj,
			    union acpi_object *user_obj,
			    u8 * data_space, u32 * buffer_space_used);
L
Linus Torvalds 已提交
181 182

acpi_status
L
Len Brown 已提交
183 184
acpi_ut_build_package_object(union acpi_operand_object *obj,
			     u8 * buffer, u32 * space_used);
L
Linus Torvalds 已提交
185 186

acpi_status
L
Len Brown 已提交
187 188
acpi_ut_copy_iobject_to_eobject(union acpi_operand_object *obj,
				struct acpi_buffer *ret_buffer);
L
Linus Torvalds 已提交
189 190

acpi_status
L
Len Brown 已提交
191 192
acpi_ut_copy_eobject_to_iobject(union acpi_object *obj,
				union acpi_operand_object **internal_obj);
L
Linus Torvalds 已提交
193 194

acpi_status
L
Len Brown 已提交
195 196
acpi_ut_copy_isimple_to_isimple(union acpi_operand_object *source_obj,
				union acpi_operand_object *dest_obj);
L
Linus Torvalds 已提交
197 198

acpi_status
L
Len Brown 已提交
199 200 201
acpi_ut_copy_iobject_to_iobject(union acpi_operand_object *source_desc,
				union acpi_operand_object **dest_desc,
				struct acpi_walk_state *walk_state);
L
Linus Torvalds 已提交
202 203

/*
R
Robert Moore 已提交
204
 * utcreate - Object creation
L
Linus Torvalds 已提交
205 206
 */
acpi_status
L
Len Brown 已提交
207
acpi_ut_update_object_reference(union acpi_operand_object *object, u16 action);
L
Linus Torvalds 已提交
208 209

/*
R
Robert Moore 已提交
210
 * utdebug - Debug interfaces
L
Linus Torvalds 已提交
211
 */
L
Len Brown 已提交
212
void acpi_ut_init_stack_ptr_trace(void);
L
Linus Torvalds 已提交
213

L
Len Brown 已提交
214
void acpi_ut_track_stack_ptr(void);
L
Linus Torvalds 已提交
215 216

void
L
Len Brown 已提交
217 218
acpi_ut_trace(u32 line_number,
	      const char *function_name, char *module_name, u32 component_id);
L
Linus Torvalds 已提交
219 220

void
L
Len Brown 已提交
221 222 223
acpi_ut_trace_ptr(u32 line_number,
		  const char *function_name,
		  char *module_name, u32 component_id, void *pointer);
L
Linus Torvalds 已提交
224 225

void
L
Len Brown 已提交
226 227 228
acpi_ut_trace_u32(u32 line_number,
		  const char *function_name,
		  char *module_name, u32 component_id, u32 integer);
L
Linus Torvalds 已提交
229 230

void
L
Len Brown 已提交
231 232 233
acpi_ut_trace_str(u32 line_number,
		  const char *function_name,
		  char *module_name, u32 component_id, char *string);
L
Linus Torvalds 已提交
234 235

void
L
Len Brown 已提交
236 237
acpi_ut_exit(u32 line_number,
	     const char *function_name, char *module_name, u32 component_id);
L
Linus Torvalds 已提交
238 239

void
L
Len Brown 已提交
240 241 242
acpi_ut_status_exit(u32 line_number,
		    const char *function_name,
		    char *module_name, u32 component_id, acpi_status status);
L
Linus Torvalds 已提交
243 244

void
L
Len Brown 已提交
245 246 247
acpi_ut_value_exit(u32 line_number,
		   const char *function_name,
		   char *module_name, u32 component_id, acpi_integer value);
L
Linus Torvalds 已提交
248 249

void
L
Len Brown 已提交
250 251 252
acpi_ut_ptr_exit(u32 line_number,
		 const char *function_name,
		 char *module_name, u32 component_id, u8 * ptr);
L
Linus Torvalds 已提交
253

L
Len Brown 已提交
254
void acpi_ut_report_info(char *module_name, u32 line_number, u32 component_id);
L
Linus Torvalds 已提交
255

L
Len Brown 已提交
256
void acpi_ut_report_error(char *module_name, u32 line_number, u32 component_id);
L
Linus Torvalds 已提交
257 258

void
L
Len Brown 已提交
259
acpi_ut_report_warning(char *module_name, u32 line_number, u32 component_id);
L
Linus Torvalds 已提交
260

L
Len Brown 已提交
261
void acpi_ut_dump_buffer(u8 * buffer, u32 count, u32 display, u32 component_id);
L
Linus Torvalds 已提交
262 263

void ACPI_INTERNAL_VAR_XFACE
L
Len Brown 已提交
264 265 266 267 268
acpi_ut_debug_print(u32 requested_debug_level,
		    u32 line_number,
		    const char *function_name,
		    char *module_name,
		    u32 component_id, char *format, ...) ACPI_PRINTF_LIKE_FUNC;
L
Linus Torvalds 已提交
269 270

void ACPI_INTERNAL_VAR_XFACE
L
Len Brown 已提交
271 272 273 274 275 276
acpi_ut_debug_print_raw(u32 requested_debug_level,
			u32 line_number,
			const char *function_name,
			char *module_name,
			u32 component_id,
			char *format, ...) ACPI_PRINTF_LIKE_FUNC;
L
Linus Torvalds 已提交
277 278

/*
R
Robert Moore 已提交
279
 * utdelete - Object deletion and reference counts
L
Linus Torvalds 已提交
280
 */
L
Len Brown 已提交
281
void acpi_ut_add_reference(union acpi_operand_object *object);
L
Linus Torvalds 已提交
282

L
Len Brown 已提交
283
void acpi_ut_remove_reference(union acpi_operand_object *object);
L
Linus Torvalds 已提交
284

L
Len Brown 已提交
285
void acpi_ut_delete_internal_package_object(union acpi_operand_object *object);
L
Linus Torvalds 已提交
286

L
Len Brown 已提交
287
void acpi_ut_delete_internal_simple_object(union acpi_operand_object *object);
L
Linus Torvalds 已提交
288

L
Len Brown 已提交
289
void acpi_ut_delete_internal_object_list(union acpi_operand_object **obj_list);
L
Linus Torvalds 已提交
290 291

/*
R
Robert Moore 已提交
292
 * uteval - object evaluation
L
Linus Torvalds 已提交
293
 */
L
Len Brown 已提交
294
acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state);
L
Linus Torvalds 已提交
295 296

acpi_status
L
Len Brown 已提交
297 298 299 300
acpi_ut_evaluate_object(struct acpi_namespace_node *prefix_node,
			char *path,
			u32 expected_return_btypes,
			union acpi_operand_object **return_desc);
L
Linus Torvalds 已提交
301 302

acpi_status
L
Len Brown 已提交
303 304 305
acpi_ut_evaluate_numeric_object(char *object_name,
				struct acpi_namespace_node *device_node,
				acpi_integer * address);
L
Linus Torvalds 已提交
306 307

acpi_status
L
Len Brown 已提交
308 309
acpi_ut_execute_HID(struct acpi_namespace_node *device_node,
		    struct acpi_device_id *hid);
L
Linus Torvalds 已提交
310 311

acpi_status
L
Len Brown 已提交
312 313
acpi_ut_execute_CID(struct acpi_namespace_node *device_node,
		    struct acpi_compatible_id_list **return_cid_list);
L
Linus Torvalds 已提交
314 315

acpi_status
L
Len Brown 已提交
316 317
acpi_ut_execute_STA(struct acpi_namespace_node *device_node,
		    u32 * status_flags);
L
Linus Torvalds 已提交
318 319

acpi_status
L
Len Brown 已提交
320 321
acpi_ut_execute_UID(struct acpi_namespace_node *device_node,
		    struct acpi_device_id *uid);
L
Linus Torvalds 已提交
322 323

acpi_status
L
Len Brown 已提交
324
acpi_ut_execute_sxds(struct acpi_namespace_node *device_node, u8 * highest);
L
Linus Torvalds 已提交
325 326

/*
R
Robert Moore 已提交
327
 * utobject - internal object create/delete/cache routines
L
Linus Torvalds 已提交
328
 */
L
Len Brown 已提交
329 330 331 332 333 334 335 336
union acpi_operand_object *acpi_ut_create_internal_object_dbg(char *module_name,
							      u32 line_number,
							      u32 component_id,
							      acpi_object_type
							      type);

void *acpi_ut_allocate_object_desc_dbg(char *module_name,
				       u32 line_number, u32 component_id);
L
Linus Torvalds 已提交
337

338 339
#define acpi_ut_create_internal_object(t) acpi_ut_create_internal_object_dbg (_acpi_module_name,__LINE__,_COMPONENT,t)
#define acpi_ut_allocate_object_desc()  acpi_ut_allocate_object_desc_dbg (_acpi_module_name,__LINE__,_COMPONENT)
L
Linus Torvalds 已提交
340

L
Len Brown 已提交
341
void acpi_ut_delete_object_desc(union acpi_operand_object *object);
L
Linus Torvalds 已提交
342

L
Len Brown 已提交
343
u8 acpi_ut_valid_internal_object(void *object);
L
Linus Torvalds 已提交
344

L
Len Brown 已提交
345
union acpi_operand_object *acpi_ut_create_buffer_object(acpi_size buffer_size);
L
Linus Torvalds 已提交
346

L
Len Brown 已提交
347
union acpi_operand_object *acpi_ut_create_string_object(acpi_size string_size);
L
Linus Torvalds 已提交
348 349

acpi_status
L
Len Brown 已提交
350
acpi_ut_get_object_size(union acpi_operand_object *obj, acpi_size * obj_length);
L
Linus Torvalds 已提交
351 352

/*
R
Robert Moore 已提交
353
 * utstate - Generic state creation/cache routines
L
Linus Torvalds 已提交
354 355
 */
void
L
Len Brown 已提交
356 357
acpi_ut_push_generic_state(union acpi_generic_state **list_head,
			   union acpi_generic_state *state);
L
Linus Torvalds 已提交
358

L
Len Brown 已提交
359 360
union acpi_generic_state *acpi_ut_pop_generic_state(union acpi_generic_state
						    **list_head);
L
Linus Torvalds 已提交
361

L
Len Brown 已提交
362
union acpi_generic_state *acpi_ut_create_generic_state(void);
L
Linus Torvalds 已提交
363

L
Len Brown 已提交
364
struct acpi_thread_state *acpi_ut_create_thread_state(void);
L
Linus Torvalds 已提交
365

L
Len Brown 已提交
366 367
union acpi_generic_state *acpi_ut_create_update_state(union acpi_operand_object
						      *object, u16 action);
L
Linus Torvalds 已提交
368

L
Len Brown 已提交
369 370 371
union acpi_generic_state *acpi_ut_create_pkg_state(void *internal_object,
						   void *external_object,
						   u16 index);
L
Linus Torvalds 已提交
372 373

acpi_status
L
Len Brown 已提交
374 375 376
acpi_ut_create_update_state_and_push(union acpi_operand_object *object,
				     u16 action,
				     union acpi_generic_state **state_list);
L
Linus Torvalds 已提交
377

R
Robert Moore 已提交
378
#ifdef	ACPI_FUTURE_USAGE
L
Linus Torvalds 已提交
379
acpi_status
L
Len Brown 已提交
380 381 382 383 384
acpi_ut_create_pkg_state_and_push(void *internal_object,
				  void *external_object,
				  u16 index,
				  union acpi_generic_state **state_list);
#endif				/* ACPI_FUTURE_USAGE */
L
Linus Torvalds 已提交
385

L
Len Brown 已提交
386
union acpi_generic_state *acpi_ut_create_control_state(void);
L
Linus Torvalds 已提交
387

L
Len Brown 已提交
388
void acpi_ut_delete_generic_state(union acpi_generic_state *state);
R
Robert Moore 已提交
389

L
Linus Torvalds 已提交
390
/*
R
Robert Moore 已提交
391
 * utmath
L
Linus Torvalds 已提交
392 393
 */
acpi_status
L
Len Brown 已提交
394 395 396
acpi_ut_divide(acpi_integer in_dividend,
	       acpi_integer in_divisor,
	       acpi_integer * out_quotient, acpi_integer * out_remainder);
L
Linus Torvalds 已提交
397 398

acpi_status
L
Len Brown 已提交
399 400 401
acpi_ut_short_divide(acpi_integer in_dividend,
		     u32 divisor,
		     acpi_integer * out_quotient, u32 * out_remainder);
L
Linus Torvalds 已提交
402

R
Robert Moore 已提交
403 404 405
/*
 * utmisc
 */
L
Len Brown 已提交
406
acpi_status acpi_ut_allocate_owner_id(acpi_owner_id * owner_id);
407

L
Len Brown 已提交
408
void acpi_ut_release_owner_id(acpi_owner_id * owner_id);
409 410

acpi_status
L
Len Brown 已提交
411 412 413
acpi_ut_walk_package_tree(union acpi_operand_object *source_object,
			  void *target_object,
			  acpi_pkg_callback walk_callback, void *context);
R
Robert Moore 已提交
414

L
Len Brown 已提交
415
void acpi_ut_strupr(char *src_string);
R
Robert Moore 已提交
416

L
Len Brown 已提交
417
void acpi_ut_print_string(char *string, u8 max_length);
R
Robert Moore 已提交
418

L
Len Brown 已提交
419
u8 acpi_ut_valid_acpi_name(u32 name);
L
Linus Torvalds 已提交
420

L
Len Brown 已提交
421
u8 acpi_ut_valid_acpi_character(char character);
L
Linus Torvalds 已提交
422 423

acpi_status
L
Len Brown 已提交
424
acpi_ut_strtoul64(char *string, u32 base, acpi_integer * ret_integer);
L
Linus Torvalds 已提交
425 426 427 428 429

/* Values for Base above (16=Hex, 10=Decimal) */

#define ACPI_ANY_BASE        0

B
Bob Moore 已提交
430 431
acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index);

B
Bob Moore 已提交
432 433 434 435
u32 acpi_ut_get_descriptor_length(void *aml);

u16 acpi_ut_get_resource_length(void *aml);

B
Bob Moore 已提交
436 437
u8 acpi_ut_get_resource_header_length(void *aml);

B
Bob Moore 已提交
438 439
u8 acpi_ut_get_resource_type(void *aml);

B
Bob Moore 已提交
440 441 442
acpi_status
acpi_ut_get_resource_end_tag(union acpi_operand_object *obj_desc,
			     u8 ** end_tag);
L
Linus Torvalds 已提交
443

L
Len Brown 已提交
444
u8 acpi_ut_generate_checksum(u8 * buffer, u32 length);
L
Linus Torvalds 已提交
445

L
Len Brown 已提交
446
u32 acpi_ut_dword_byte_swap(u32 value);
L
Linus Torvalds 已提交
447

L
Len Brown 已提交
448
void acpi_ut_set_integer_width(u8 revision);
L
Linus Torvalds 已提交
449 450 451

#ifdef ACPI_DEBUG_OUTPUT
void
L
Len Brown 已提交
452 453 454
acpi_ut_display_init_pathname(u8 type,
			      struct acpi_namespace_node *obj_handle,
			      char *path);
L
Linus Torvalds 已提交
455 456 457 458

#endif

/*
459
 * utmutex - mutex support
L
Linus Torvalds 已提交
460
 */
L
Len Brown 已提交
461
acpi_status acpi_ut_mutex_initialize(void);
L
Linus Torvalds 已提交
462

L
Len Brown 已提交
463
void acpi_ut_mutex_terminate(void);
464

L
Len Brown 已提交
465
acpi_status acpi_ut_acquire_mutex(acpi_mutex_handle mutex_id);
466

L
Len Brown 已提交
467
acpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id);
468 469 470 471

/*
 * utalloc - memory allocation and object caching
 */
L
Len Brown 已提交
472
acpi_status acpi_ut_create_caches(void);
473

L
Len Brown 已提交
474
acpi_status acpi_ut_delete_caches(void);
L
Linus Torvalds 已提交
475

L
Len Brown 已提交
476
acpi_status acpi_ut_validate_buffer(struct acpi_buffer *buffer);
L
Linus Torvalds 已提交
477 478

acpi_status
L
Len Brown 已提交
479 480 481 482 483 484
acpi_ut_initialize_buffer(struct acpi_buffer *buffer,
			  acpi_size required_length);

void *acpi_ut_allocate(acpi_size size, u32 component, char *module, u32 line);

void *acpi_ut_callocate(acpi_size size, u32 component, char *module, u32 line);
L
Linus Torvalds 已提交
485 486

#ifdef ACPI_DBG_TRACK_ALLOCATIONS
L
Len Brown 已提交
487 488 489 490 491
void *acpi_ut_allocate_and_track(acpi_size size,
				 u32 component, char *module, u32 line);

void *acpi_ut_callocate_and_track(acpi_size size,
				  u32 component, char *module, u32 line);
L
Linus Torvalds 已提交
492 493

void
L
Len Brown 已提交
494
acpi_ut_free_and_track(void *address, u32 component, char *module, u32 line);
L
Linus Torvalds 已提交
495

R
Robert Moore 已提交
496
#ifdef	ACPI_FUTURE_USAGE
L
Len Brown 已提交
497 498
void acpi_ut_dump_allocation_info(void);
#endif				/* ACPI_FUTURE_USAGE */
L
Linus Torvalds 已提交
499

L
Len Brown 已提交
500
void acpi_ut_dump_allocations(u32 component, char *module);
L
Linus Torvalds 已提交
501 502
#endif

L
Len Brown 已提交
503
#endif				/* _ACUTILS_H */