def in.put

bend-osdev-acpi@0.1.1.0 · aml_interp.bend:833

import bend-osdev-acpi@0.1.1.0/aml_interp.bend as AmlInterp
import Base
import bend-osdev-acpi@0.1.1.0/error.bend as E
import bend-osdev-acpi@0.1.1.0/aml_value.bend as V
import bend-osdev-acpi@0.1.1.0/aml_ns.bend as S
import bend-osdev-acpi@0.1.1.0/aml_host.bend as Hs

833# CopyObject (chapter 19), and how Index writes back: the value replaces what
834# the location holds, without conversion (a field unit is written)
835def in.put(~H: Data, ~io: H -> Hs.AmlHostOp -> Result<&2, &2, E.AcpiError, Hs.AmlHostAns<H>>, l: V.AmlLoc, +w: AmlWorld<H>, +v: V.AmlValue) -> Result<&2, &2, E.AcpiError, AmlWorld<H>>:
836  match l:
837    case V.AmlLName{+p}:
838      +q = in.unalias(AmlWorld.ns(H, w), p)
839      in.put.name(~H, ~io, in.is_writable(S.AmlNs.get(AmlWorld.ns(H, w), q)), w, q, v)
840    case V.AmlLLocal{i}:
841      Done{in.set.local(H, w, i, v)}
842    case V.AmlLArg{i}:
843      Done{in.set.arg(H, w, i, v)}
844    case V.AmlLIndex{base, i}:
845      in.put.index(~H, ~io, base, i, w, v)
846    case V.AmlLElem{x, i}:
847      Done{w}
848    case V.AmlLDebug{}:
849      Done{in.debug(H, w, v)}
850    case V.AmlLNone{}:
851      Done{w}

Uses (16)

Used by (2)