diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 14:02:27 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 14:02:27 -0400 |
| commit | 6d8bdc65446a704d0750217efd05532fc641ea7d (patch) | |
| tree | 8ae6d698b3c9801750a8b117b3842fb369872a3a /static/openbsd/man9/aml_evalnode.9 | |
| parent | 2f467bd7ff8f8db0dafa40426166491d7f57f368 (diff) | |
docs: OpenBSD Man Pages Added
Diffstat (limited to 'static/openbsd/man9/aml_evalnode.9')
| -rw-r--r-- | static/openbsd/man9/aml_evalnode.9 | 202 |
1 files changed, 202 insertions, 0 deletions
diff --git a/static/openbsd/man9/aml_evalnode.9 b/static/openbsd/man9/aml_evalnode.9 new file mode 100644 index 00000000..22b0b66e --- /dev/null +++ b/static/openbsd/man9/aml_evalnode.9 @@ -0,0 +1,202 @@ +.\" $OpenBSD: aml_evalnode.9,v 1.11 2015/09/14 15:14:55 schwarze Exp $ +.\" +.\" Copyright (c) 2007 Michael Knudsen <mk@openbsd.org> +.\" +.\" Permission to use, copy, modify, and distribute this software for any +.\" purpose with or without fee is hereby granted, provided that the above +.\" copyright notice and this permission notice appear in all copies. +.\" +.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +.\" +.Dd $Mdocdate: September 14 2015 $ +.Dt AML_EVALNODE 9 +.Os +.Sh NAME +.Nm aml_evalnode , +.Nm aml_evalname , +.Nm aml_find_node , +.Nm aml_freevalue , +.Nm aml_val2int +.Nd AML API +.Sh SYNOPSIS +.In dev/acpi/acpireg.h +.In dev/acpi/acpivar.h +.In dev/acpi/acpidev.h +.In dev/acpi/amltypes.h +.In dev/acpi/dsdt.h +.Ft int +.Fn aml_evalnode "struct acpi_softc *sc" "struct aml_node *node" \ +"int argc" "struct aml_value *argv" "struct aml_value *res" +.Ft int +.Fn aml_evalname "struct acpi_softc *sc" "struct aml_node *parent" \ +"const char *name" "int argc" "struct aml_value *argv" \ +"struct aml_value *res" +.Ft int +.Fn aml_find_node "struct aml_node *node" "const char *name" \ +"int (*cbproc)(struct aml_node *, void *arg)" "void *arg" +.Ft void +.Fn aml_freevalue "struct aml_value *val" +.Ft int64_t +.Fn aml_val2int "struct aml_value *rval" +.Sh DESCRIPTION +The AML API handles decoding and evaluation of the AML +code embedded in a machine's ACPI tables. +This code is used to implement configuration and control mechanisms for +machines. +.Pp +.Fn aml_evalnode +evaluates the AML node +.Fa node +located in the ACPI table specified by +.Fa sc . +Parameters may be passed using the +.Fa argv +parameters with the parameter +.Fa argc +specifying the number of parameters passed. +If there are no arguments, +a value of 0 is used for +.Fa argc +and +.Fa argv +should be +.Dv NULL . +If evaluating the node produces any result, for example a string with a device +name reference, this result is stored in the +.Fa res +parameter unless it is +.Dv NULL . +.Fa res +is cleared before storing the result. +If +.Fa node +does not exist, +.Fn aml_evalnode +returns +.Dv ACPI_E_BADVALUE , +otherwise it returns 0. +.Pp +.Fn aml_evalname +is similar to +.Fn aml_evalnode +but differs in that it searches for a subnode of +.Fa parent +with the name +.Fa name . +If such a node is found, it is evaluated using +.Fn aml_evalnode , +passing whatever parameters were passed to itself. +.Fn aml_evalname +returns the return value of +.Fn aml_evalnode . +.Pp +.Fn aml_find_node +is used to find all subnodes of +.Fa parent +with a name of +.Fa name . +For each node found, the function specified as the +.Fa cbproc +parameter is called with the node and +.Fa arg +as the first and second parameters, respectively. +The function specified as the +.Fa cbproc +parameter returns a value that specifies if the tree walk +should be terminated (!0) or continued (0) with the children. +.Fn aml_find_node +always returns 0. +.Pp +.Fn aml_freevalue +is used to free up the result returned from +.Fn aml_evalnode +or the other AML evaluation functions. +Note that no attempt is made to free the +.Vt struct aml_value +itself so it is safe to allocate this on the stack. +Also, calling +.Fn aml_freevalue +with a parameter of +.Dv NULL +is not an error. +.Pp +.Fn aml_val2int +is used to convert the +.Vt struct aml_value +pointed to by the +.Fa rval +parameter to a signed 64-bit integer value. +Multiple types exist for +.Vt struct aml_value , +and the conversion value depends on the type +of the value object as follows. +For objects of type +.Dv AML_OBJTYPE_INTEGER +and +.Dv AML_OBJTYPE_STATICINT , +the return value is simply the integer value stored in the object. +For objects of type +.Dv AML_OBJTYPE_BUFFER , +the return value is the integer interpretation of the buffer contents. +For objects of type +.Dv AML_OBJTYPE_STRING , +the return value is the integer value represented as a string in base 10 +or, if prefixed by +.Dq 0x , +in base 16. +If +.Fa rval +is +.Dv NULL +or not of one of the types mentioned above, +.Fn aml_val2int +returns 0. +.Sh EXAMPLES +Using +.Fn aml_evalname +to invoke the +.Dq _STA +method on a node +.Fa node +should be done like the following: +.Bd -literal -offset indent +struct acpi_softc *sc +struct aml_node *node; +struct aml_value res; + +if (aml_evalname(sc->sc_acpi, node, "_STA", 0, NULL, &res) != 0) { + dnprintf(10, "%s: no _STA\en", DEVNAME(sc)); + return; +} +.Ed +.Pp +Using the +.Vt struct aml_value +obtained from the +.Dq _STA +call to determine if the device is a battery is done as follows: +.Bd -literal -offset indent +if ((aml_val2int(&res) & STA_BATTERY) == 0) { + dnprintf(10, %s: no battery present\en", DEVNAME(sc)); + return; +.Ed +.Pp +Finally, when the result stored in +.Fa res +is no longer needed, free it using +.Fn aml_freevalue : +.Bd -literal -offset indent +aml_freevalue(&res); +.Ed +.Sh SEE ALSO +.Xr acpi 4 , +.Xr acpidump 8 +.Sh HISTORY +The AML API was written by +.An Jordan Hargrave Aq Mt jordan@openbsd.org . |
