fuchsia.hardware.qualcomm.fastrpc

Added: HEAD

PROTOCOLS

RemoteDomain

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

Close

Closes down the domain. This will release all resources associated with this domain. The server end will close the channel when this is completed.

Request

<EMPTY>

GetPayloadBufferSet

Requests |count| payload buffers from the driver. The returned vector of buffers should be managed by the client entirely. When making an |Invoke| request, the client can provide the |id| of the buffer of their chosing inside the |payload_buffer_id|. The client should ensure only 1 invoke is active for each of these buffers.

Request

NameType
count uint8

Response

NameType
payload RemoteDomain_GetPayloadBufferSet_Result

Invoke

A user invocation on the remote domain.

Request

NameType
remote_thread_id int32
handle uint32
method_id uint32
payload_buffer_id PayloadBufferId
input_arguments vector<ArgumentEntry>
output_arguments vector<ArgumentEntry>

Response

NameType
payload RemoteDomain_Invoke_Result

SecureFastRpc

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

This is a secure fastrpc protocol and provides certain privileged operations like attaching to the root protection domain in a remote processor. Currently starnix is the only direct user of this protocol, therefore we don't need an unsecure variant. If in the future we want to provide this to client applications directly, we will need to make sure there is also an UnsecureFastRpc protocol.

Allocate

Allocate a contiguous region of memory of at least |size|. This memory is meant to be used in |VmoArgument| typed arguments in an |InvokeParameters|. This vmo is owned exclusively by the caller.

Request

NameType
size uint64

Response

NameType
payload SecureFastRpc_Allocate_Result

AttachRootDomain

Attaches to the root (Guest OS) protection domain in the remote processor. This domain can access to the memory of its own protection domain, the memory of the user protection domains, and some system registers.

Request

NameType
server server_end:RemoteDomain

Response

NameType
payload SecureFastRpc_AttachRootDomain_Result

CreateStaticDomain

Creates the static (user) protection domain identified by |name| on the remote processor. This is provided with a memory of size |memory_size|. This protection domain can access only its own memory. Static domains are created for specific use cases like audio.

Request

NameType
name string
memory_size uint32
server server_end:RemoteDomain

Response

NameType
payload SecureFastRpc_CreateStaticDomain_Result

GetCapabilities

Get the vector of capabilities from the remote processor.

Request

<EMPTY>

Response

NameType
payload SecureFastRpc_GetCapabilities_Result

GetChannelId

Used to identify the channel id that this device instance talks to. The channel id is associated with the remote processor target.

Request

<EMPTY>

Response

NameType
payload SecureFastRpc_GetChannelId_Result

STRUCTS

Argument

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

A FastRPC argument that lives in the shared |payload_buffer|.

FieldTypeDescriptionDefault
offset uint64

The start offset of the argument within the |payload_buffer|.

No default
length uint64

Length of the argument.

No default

RemoteDomain_GetPayloadBufferSet_Response resource

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

FieldTypeDescriptionDefault
buffers vector<SharedPayloadBuffer>:100 No default

RemoteDomain_Invoke_Response

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

<EMPTY>

SecureFastRpc_Allocate_Response resource

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

FieldTypeDescriptionDefault
vmo handle<vmo> No default

SecureFastRpc_AttachRootDomain_Response

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

<EMPTY>

SecureFastRpc_CreateStaticDomain_Response

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

<EMPTY>

SecureFastRpc_GetCapabilities_Response

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

FieldTypeDescriptionDefault
capabilities vector<Capability>:256 No default

SecureFastRpc_GetChannelId_Response

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

FieldTypeDescriptionDefault
channel_id uint32 No default

SharedPayloadBuffer resource

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

These buffers are allocated in the driver, and provided to the client for use by their id when communicating with the driver through the |payload_buffer_id|. The ids will be non-zero, as 0 will imply no buffer.

FieldTypeDescriptionDefault
id PayloadBufferId No default
vmo handle<vmo> No default

VmoArgument resource

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

A FastRPC argument that lives in a standalone vmo.

FieldTypeDescriptionDefault
vmo handle<vmo>

The vmo that this argument lives in.

No default
offset uint64

The start offset of the argument within the vmo.

No default
length uint64

Length of the argument.

No default

UNIONS

ArgumentEntry strict resource

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

A single FastRPC argument.

OrdinalVariantTypeDescription
argument Argument
vmo_argument VmoArgument

RemoteDomain_GetPayloadBufferSet_Result strict resource

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

OrdinalVariantTypeDescription
response RemoteDomain_GetPayloadBufferSet_Response
err zx/Status
framework_err internal

RemoteDomain_Invoke_Result strict

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

OrdinalVariantTypeDescription
response RemoteDomain_Invoke_Response
err Error
framework_err internal

SecureFastRpc_Allocate_Result strict resource

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

OrdinalVariantTypeDescription
response SecureFastRpc_Allocate_Response
err zx/Status
framework_err internal

SecureFastRpc_AttachRootDomain_Result strict

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

OrdinalVariantTypeDescription
response SecureFastRpc_AttachRootDomain_Response
err Error
framework_err internal

SecureFastRpc_CreateStaticDomain_Result strict

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

OrdinalVariantTypeDescription
response SecureFastRpc_CreateStaticDomain_Response
err Error
framework_err internal

SecureFastRpc_GetCapabilities_Result strict

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

OrdinalVariantTypeDescription
response SecureFastRpc_GetCapabilities_Response
err Error
framework_err internal

SecureFastRpc_GetChannelId_Result strict

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

OrdinalVariantTypeDescription
response SecureFastRpc_GetChannelId_Response
err zx/Status
framework_err internal

CONSTANTS

NameValueTypeDescription
MAX_CAPABILITIES_COUNT 256 uint32
MAX_PAYLOAD_BUFFER_SET 100 uint8

ALIASES

NameValueDescription
Capability uint32
Error int32

See this header for error definitions: https://github.com/quic/fastrpc/blob/main/inc/AEEStdErr.h

PayloadBufferId uint32

SERVICES

SecureService

Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl

NameTypeTransport
device fuchsia.hardware.qualcomm.fastrpc/SecureFastRpc Channel