drivers/acpi/acpica/acinterp.h

Source file repositories/reference/linux-study-clean/drivers/acpi/acpica/acinterp.h

File Facts

System
Linux kernel
Corpus path
drivers/acpi/acpica/acinterp.h
Extension
.h
Size
15976 bytes
Lines
547
Domain
Driver Families
Bucket
drivers/acpi
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

#ifndef __ACINTERP_H__
#define __ACINTERP_H__

#define ACPI_WALK_OPERANDS          (&(walk_state->operands [walk_state->num_operands -1]))

/* Macros for tables used for debug output */

#define ACPI_EXD_OFFSET(f)          (u8) ACPI_OFFSET (union acpi_operand_object,f)
#define ACPI_EXD_NSOFFSET(f)        (u8) ACPI_OFFSET (struct acpi_namespace_node,f)
#define ACPI_EXD_TABLE_SIZE(name)   (sizeof(name) / sizeof (struct acpi_exdump_info))

/*
 * If possible, pack the following structures to byte alignment, since we
 * don't care about performance for debug output. Two cases where we cannot
 * pack the structures:
 *
 * 1) Hardware does not support misaligned memory transfers
 * 2) Compiler does not support pointers within packed structures
 */
#if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED))
#pragma pack(1)
#endif

typedef const struct acpi_exdump_info {
	u8 opcode;
	u8 offset;
	const char *name;

} acpi_exdump_info;

/* Values for the Opcode field above */

#define ACPI_EXD_INIT                   0
#define ACPI_EXD_TYPE                   1
#define ACPI_EXD_UINT8                  2
#define ACPI_EXD_UINT16                 3
#define ACPI_EXD_UINT32                 4
#define ACPI_EXD_UINT64                 5
#define ACPI_EXD_LITERAL                6
#define ACPI_EXD_POINTER                7
#define ACPI_EXD_ADDRESS                8
#define ACPI_EXD_STRING                 9
#define ACPI_EXD_BUFFER                 10
#define ACPI_EXD_PACKAGE                11
#define ACPI_EXD_FIELD                  12
#define ACPI_EXD_REFERENCE              13
#define ACPI_EXD_LIST                   14	/* Operand object list */
#define ACPI_EXD_HDLR_LIST              15	/* Address Handler list */
#define ACPI_EXD_RGN_LIST               16	/* Region list */
#define ACPI_EXD_NODE                   17	/* Namespace Node */

/* restore default alignment */

#pragma pack()

/*
 * exconvrt - object conversion
 */
acpi_status
acpi_ex_convert_to_integer(union acpi_operand_object *obj_desc,
			   union acpi_operand_object **result_desc,
			   u32 implicit_conversion);

acpi_status
acpi_ex_convert_to_buffer(union acpi_operand_object *obj_desc,
			  union acpi_operand_object **result_desc);

acpi_status
acpi_ex_convert_to_string(union acpi_operand_object *obj_desc,
			  union acpi_operand_object **result_desc, u32 type);

/* Types for ->String conversion */

#define ACPI_EXPLICIT_BYTE_COPY         0x00000000
#define ACPI_EXPLICIT_CONVERT_HEX       0x00000001
#define ACPI_IMPLICIT_CONVERT_HEX       0x00000002
#define ACPI_EXPLICIT_CONVERT_DECIMAL   0x00000003

acpi_status
acpi_ex_convert_to_target_type(acpi_object_type destination_type,
			       union acpi_operand_object *source_desc,
			       union acpi_operand_object **result_desc,
			       struct acpi_walk_state *walk_state);

/*
 * exdebug - AML debug object
 */
void
acpi_ex_do_debug_object(union acpi_operand_object *source_desc,
			u32 level, u32 index);

Annotation

Implementation Notes