summaryrefslogtreecommitdiff
path: root/source/components/dispatcher/dsfield.c
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2018-08-10 16:34:24 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2018-08-10 16:34:24 +0000
commitc6014c64fcfd099d0087da3509e8a623d2c30209 (patch)
treec22d0c3f38051befce50bdd7580336199d2aa061 /source/components/dispatcher/dsfield.c
parentd776ccceca14a93812a2f15904c3b09af20ec866 (diff)
Notes
Diffstat (limited to 'source/components/dispatcher/dsfield.c')
-rw-r--r--source/components/dispatcher/dsfield.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/source/components/dispatcher/dsfield.c b/source/components/dispatcher/dsfield.c
index df770c1c07b3..3db39fb8b25d 100644
--- a/source/components/dispatcher/dsfield.c
+++ b/source/components/dispatcher/dsfield.c
@@ -157,6 +157,10 @@
#include "acnamesp.h"
#include "acparser.h"
+#ifdef ACPI_EXEC_APP
+#include "aecommon.h"
+#endif
+
#define _COMPONENT ACPI_DISPATCHER
ACPI_MODULE_NAME ("dsfield")
@@ -430,6 +434,13 @@ AcpiDsGetFieldNames (
UINT64 Position;
ACPI_PARSE_OBJECT *Child;
+#ifdef ACPI_EXEC_APP
+ UINT64 Value = 0;
+ ACPI_OPERAND_OBJECT *ResultDesc;
+ ACPI_OPERAND_OBJECT *ObjDesc;
+ char *NamePath;
+#endif
+
ACPI_FUNCTION_TRACE_PTR (DsGetFieldNames, Info);
@@ -564,6 +575,18 @@ AcpiDsGetFieldNames (
{
return_ACPI_STATUS (Status);
}
+#ifdef ACPI_EXEC_APP
+ NamePath = AcpiNsGetExternalPathname (Info->FieldNode);
+ ObjDesc = AcpiUtCreateIntegerObject (Value);
+ if (ACPI_SUCCESS (AeLookupInitFileEntry (NamePath, &Value)))
+ {
+ AcpiExWriteDataToField (ObjDesc,
+ AcpiNsGetAttachedObject (Info->FieldNode),
+ &ResultDesc);
+ }
+ AcpiUtRemoveReference (ObjDesc);
+ ACPI_FREE (NamePath);
+#endif
}
}
@@ -756,6 +779,9 @@ AcpiDsInitFieldObjects (
Flags |= ACPI_NS_TEMPORARY;
}
+#ifdef ACPI_EXEC_APP
+ Flags |= ACPI_NS_OVERRIDE_IF_FOUND;
+#endif
/*
* Walk the list of entries in the FieldList
* Note: FieldList can be of zero length. In this case, Arg will be NULL.