Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c34c82bc authored by Bob Moore's avatar Bob Moore Committed by Rafael J. Wysocki
Browse files

ACPICA: Predefine names: Add allowed argument types to master info table



This change adds the infrastructure to enable typechecking
on incoming arguments for the predefined methods/objects. It
does not actually contain the code that will fully utilize this
information. Also condenses some duplicate code for the predefined
names into a new module, utilities/utpredef.c

Signed-off-by: default avatarBob Moore <robert.moore@intel.com>
Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent f084dbb9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -161,6 +161,7 @@ acpi-y += \
	utobject.o	\
	utosi.o		\
	utownerid.o	\
	utpredef.o	\
	utresrc.o	\
	utstate.o	\
	utstring.o	\
+10 −3
Original line number Diff line number Diff line
@@ -294,6 +294,8 @@ acpi_status(*acpi_internal_method) (struct acpi_walk_state * walk_state);
#define ACPI_BTYPE_OBJECTS_AND_REFS     0x0001FFFF	/* ARG or LOCAL */
#define ACPI_BTYPE_ALL_OBJECTS          0x0000FFFF

#pragma pack(1)

/*
 * Information structure for ACPI predefined names.
 * Each entry in the table contains the following items:
@@ -304,7 +306,7 @@ acpi_status(*acpi_internal_method) (struct acpi_walk_state * walk_state);
 */
struct acpi_name_info {
	char name[ACPI_NAME_SIZE];
	u8 param_count;
	u16 argument_list;
	u8 expected_btypes;
};

@@ -327,7 +329,7 @@ struct acpi_package_info {
	u8 count1;
	u8 object_type2;
	u8 count2;
	u8 reserved;
	u16 reserved;
};

/* Used for ACPI_PTYPE2_FIXED */
@@ -336,6 +338,7 @@ struct acpi_package_info2 {
	u8 type;
	u8 count;
	u8 object_type[4];
	u8 reserved;
};

/* Used for ACPI_PTYPE1_OPTION */
@@ -345,7 +348,7 @@ struct acpi_package_info3 {
	u8 count;
	u8 object_type[2];
	u8 tail_object_type;
	u8 reserved;
	u16 reserved;
};

union acpi_predefined_info {
@@ -355,6 +358,10 @@ union acpi_predefined_info {
	struct acpi_package_info3 ret_info3;
};

/* Reset to default packing */

#pragma pack()

/* Data block used during object validation */

struct acpi_predefined_data {
+0 −4
Original line number Diff line number Diff line
@@ -231,10 +231,6 @@ acpi_ns_check_predefined_names(struct acpi_namespace_node *node,
			       acpi_status return_status,
			       union acpi_operand_object **return_object);

const union acpi_predefined_info *acpi_ns_check_for_predefined_name(struct
								    acpi_namespace_node
								    *node);

void
acpi_ns_check_parameter_count(char *pathname,
			      struct acpi_namespace_node *node,
+910 −395

File changed.

Preview size limit exceeded, changes collapsed.

+20 −0
Original line number Diff line number Diff line
@@ -431,6 +431,26 @@ struct acpi_interface_info *acpi_ut_get_interface(acpi_string interface_name);

acpi_status acpi_ut_osi_implementation(struct acpi_walk_state *walk_state);

/*
 * utpredef - support for predefined names
 */
const union acpi_predefined_info *acpi_ut_get_next_predefined_method(const union
								     acpi_predefined_info
								     *this_name);

const union acpi_predefined_info *acpi_ut_match_predefined_method(char *name);

const union acpi_predefined_info *acpi_ut_match_resource_name(char *name);

void
acpi_ut_display_predefined_method(char *buffer,
				  const union acpi_predefined_info *this_name,
				  u8 multi_line);

void acpi_ut_get_expected_return_types(char *buffer, u32 expected_btypes);

u32 acpi_ut_get_resource_bit_width(char *buffer, u16 types);

/*
 * utstate - Generic state creation/cache routines
 */
Loading