class ModifySecureHeapPhysicalRange

Defined at line 1877 of file fidling/gen/sdk/fidl/fuchsia.sysmem/fuchsia.sysmem/cpp/fidl/fuchsia.sysmem/cpp/markers.h

This request from sysmem to the securemem driver conveys a physical

range to modify and its new base and length, for a heap whose physical

range(s) are set up via sysmem.

Only sysmem can call this because only sysmem is handed the client end

of a FIDL channel serving this protocol, via RegisterSecureMem(). The

securemem driver is the server end of this protocol.

The securemem driver must configure the range to cover only the new

offsets before responding to this message with success.

On failure, the securemem driver must ensure the range was not changed.

Sysmem must not call this if dynamic_protection_ranges false. Sysmem

must not call this if !is_mod_protected_range_available.

If dynamic_protection_ranges is true, sysmem can call this repeatedly,

on various ranges that exist at the time of the call.

The range must only be modified at one end or the other, but not both.

If the range is getting shorter, and the un-covered blocks are not

covered by other active ranges, any ongoing DMA to the entire range

that's geting shorter may fail in a way that disrupts the entire system

(bus lockup or similar), so the caller must ensure that no DMA is

ongoing to any portion of a range that is getting shorter, unless the

blocks being un-covered by the modification to this range are all

covered by other active ranges, in which case no disruption to ongoing

DMA will occur.

If a range is modified to become

<

= zero length, the range is deleted.

Errors:

* ZX_ERR_BAD_STATE - called when !dynamic_protection_ranges.

* ZX_ERR_INVALID_ARGS - unexpected heap, or old_range or new_range

that doesn't conform to protected_range_granularity, or old_range

and new_range differ in both begin and end (disallowed).

* ZX_ERR_INTERNAL - generic internal error (such as in communication

with TEE which doesn't generate zx_status_t errors).

* ZX_ERR_NOT_FOUND - the specified range is not found.

* other errors are possible, such as from communication failures or

server propagation of zx_status_t failures.

Public Members

static const bool kHasClientToServer
static const bool kHasClientToServerBody
static const bool kHasServerToClient
static const bool kHasServerToClientBody
static const bool kHasNonEmptyUserFacingResponse
static const bool kHasDomainError
static const bool kHasFrameworkError
static const uint64_t kOrdinal