void
acpi_ps_append_arg(union acpi_parse_object *op, union acpi_parse_object *arg)
{ union acpi_parse_object *prev_arg; conststruct acpi_opcode_info *op_info;
ACPI_FUNCTION_TRACE(ps_append_arg);
if (!op) {
return_VOID;
}
/* Get the info structure for this opcode */
op_info = acpi_ps_get_opcode_info(op->common.aml_opcode); if (op_info->class == AML_CLASS_UNKNOWN) {
/* Invalid opcode */
ACPI_ERROR((AE_INFO, "Invalid AML Opcode: 0x%2.2X",
op->common.aml_opcode));
return_VOID;
}
/* Check if this opcode requires argument sub-objects */
if (!(op_info->flags & AML_HAS_ARGS)) {
/* Has no linked argument objects */
return_VOID;
}
/* Append the argument to the linked argument list */
if (op->common.value.arg) {
/* Append to existing argument list */
prev_arg = op->common.value.arg; while (prev_arg->common.next) {
prev_arg = prev_arg->common.next;
}
prev_arg->common.next = arg;
} else { /* No argument list, this will be the first argument */
op->common.value.arg = arg;
}
/* Set the parent in this arg and any args linked after it */
while (arg) {
arg->common.parent = op;
arg = arg->common.next;
union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, union acpi_parse_object *op)
{ union acpi_parse_object *next = NULL; union acpi_parse_object *parent; union acpi_parse_object *arg;
ACPI_FUNCTION_ENTRY();
if (!op) { return (NULL);
}
/* Look for an argument or child */
next = acpi_ps_get_arg(op, 0); if (next) {
ASL_CV_LABEL_FILENODE(next); return (next);
}
/* Look for a sibling */
next = op->common.next; if (next) {
ASL_CV_LABEL_FILENODE(next); return (next);
}
/* Look for a sibling of parent */
parent = op->common.parent;
while (parent) {
arg = acpi_ps_get_arg(parent, 0); while (arg && (arg != origin) && (arg != op)) {
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.