| .. | .. |
|---|
| 4 | 4 | * Module Name: dswexec - Dispatcher method execution callbacks; |
|---|
| 5 | 5 | * dispatch to interpreter. |
|---|
| 6 | 6 | * |
|---|
| 7 | | - * Copyright (C) 2000 - 2018, Intel Corp. |
|---|
| 7 | + * Copyright (C) 2000 - 2020, Intel Corp. |
|---|
| 8 | 8 | * |
|---|
| 9 | 9 | *****************************************************************************/ |
|---|
| 10 | 10 | |
|---|
| .. | .. |
|---|
| 16 | 16 | #include "acinterp.h" |
|---|
| 17 | 17 | #include "acnamesp.h" |
|---|
| 18 | 18 | #include "acdebug.h" |
|---|
| 19 | +#ifdef ACPI_EXEC_APP |
|---|
| 20 | +#include "aecommon.h" |
|---|
| 21 | +#endif |
|---|
| 19 | 22 | |
|---|
| 20 | 23 | #define _COMPONENT ACPI_DISPATCHER |
|---|
| 21 | 24 | ACPI_MODULE_NAME("dswexec") |
|---|
| .. | .. |
|---|
| 329 | 332 | u32 op_class; |
|---|
| 330 | 333 | union acpi_parse_object *next_op; |
|---|
| 331 | 334 | union acpi_parse_object *first_arg; |
|---|
| 335 | +#ifdef ACPI_EXEC_APP |
|---|
| 336 | + char *namepath; |
|---|
| 337 | + union acpi_operand_object *obj_desc; |
|---|
| 338 | +#endif |
|---|
| 332 | 339 | |
|---|
| 333 | 340 | ACPI_FUNCTION_TRACE_PTR(ds_exec_end_op, walk_state); |
|---|
| 334 | 341 | |
|---|
| .. | .. |
|---|
| 537 | 544 | |
|---|
| 538 | 545 | status = |
|---|
| 539 | 546 | acpi_ds_eval_buffer_field_operands(walk_state, op); |
|---|
| 547 | + if (ACPI_FAILURE(status)) { |
|---|
| 548 | + break; |
|---|
| 549 | + } |
|---|
| 550 | +#ifdef ACPI_EXEC_APP |
|---|
| 551 | + /* |
|---|
| 552 | + * acpi_exec support for namespace initialization file (initialize |
|---|
| 553 | + * buffer_fields in this code.) |
|---|
| 554 | + */ |
|---|
| 555 | + namepath = |
|---|
| 556 | + acpi_ns_get_external_pathname(op->common.node); |
|---|
| 557 | + status = ae_lookup_init_file_entry(namepath, &obj_desc); |
|---|
| 558 | + if (ACPI_SUCCESS(status)) { |
|---|
| 559 | + status = |
|---|
| 560 | + acpi_ex_write_data_to_field(obj_desc, |
|---|
| 561 | + op->common. |
|---|
| 562 | + node->object, |
|---|
| 563 | + NULL); |
|---|
| 564 | + if ACPI_FAILURE |
|---|
| 565 | + (status) { |
|---|
| 566 | + ACPI_EXCEPTION((AE_INFO, status, |
|---|
| 567 | + "While writing to buffer field")); |
|---|
| 568 | + } |
|---|
| 569 | + } |
|---|
| 570 | + ACPI_FREE(namepath); |
|---|
| 571 | + status = AE_OK; |
|---|
| 572 | +#endif |
|---|
| 540 | 573 | break; |
|---|
| 541 | 574 | |
|---|
| 542 | 575 | case AML_TYPE_CREATE_OBJECT: |
|---|