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
Name | Type |
---|---|
count |
uint8
|
Response
Name | Type |
---|---|
payload |
RemoteDomain_GetPayloadBufferSet_Result
|
Invoke
A user invocation on the remote domain.
Request
Name | Type |
---|---|
remote_thread_id |
int32
|
handle |
uint32
|
method_id |
uint32
|
payload_buffer_id |
PayloadBufferId
|
input_arguments |
vector<ArgumentEntry>
|
output_arguments |
vector<ArgumentEntry>
|
Response
Name | Type |
---|---|
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
Name | Type |
---|---|
size |
uint64
|
Response
Name | Type |
---|---|
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
Name | Type |
---|---|
server |
server_end:RemoteDomain
|
Response
Name | Type |
---|---|
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
Name | Type |
---|---|
name |
string
|
memory_size |
uint32
|
server |
server_end:RemoteDomain
|
Response
Name | Type |
---|---|
payload |
SecureFastRpc_CreateStaticDomain_Result
|
GetCapabilities
Get the vector of capabilities from the remote processor.
Request
<EMPTY>
Response
Name | Type |
---|---|
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
Name | Type |
---|---|
payload |
SecureFastRpc_GetChannelId_Result
|
STRUCTS
Argument
Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl
A FastRPC argument that lives in the shared |payload_buffer|.
Field | Type | Description | Default |
---|---|---|---|
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
Field | Type | Description | Default |
---|---|---|---|
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
Field | Type | Description | Default |
---|---|---|---|
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
Field | Type | Description | Default |
---|---|---|---|
capabilities |
vector<Capability>:256
|
No default |
SecureFastRpc_GetChannelId_Response
Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl
Field | Type | Description | Default |
---|---|---|---|
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.
Field | Type | Description | Default |
---|---|---|---|
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.
Field | Type | Description | Default |
---|---|---|---|
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.
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
argument |
Argument
|
|
2 |
vmo_argument |
VmoArgument
|
RemoteDomain_GetPayloadBufferSet_Result strict resource
Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
RemoteDomain_GetPayloadBufferSet_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
RemoteDomain_Invoke_Result strict
Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
RemoteDomain_Invoke_Response
|
|
2 |
err |
Error
|
|
3 |
framework_err |
internal
|
SecureFastRpc_Allocate_Result strict resource
Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
SecureFastRpc_Allocate_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
SecureFastRpc_AttachRootDomain_Result strict
Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
SecureFastRpc_AttachRootDomain_Response
|
|
2 |
err |
Error
|
|
3 |
framework_err |
internal
|
SecureFastRpc_CreateStaticDomain_Result strict
Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
SecureFastRpc_CreateStaticDomain_Response
|
|
2 |
err |
Error
|
|
3 |
framework_err |
internal
|
SecureFastRpc_GetCapabilities_Result strict
Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
SecureFastRpc_GetCapabilities_Response
|
|
2 |
err |
Error
|
|
3 |
framework_err |
internal
|
SecureFastRpc_GetChannelId_Result strict
Defined in fuchsia.hardware.qualcomm.fastrpc/fastrpc.fidl
Ordinal | Variant | Type | Description |
---|---|---|---|
1 |
response |
SecureFastRpc_GetChannelId_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
CONSTANTS
Name | Value | Type | Description |
---|---|---|---|
MAX_CAPABILITIES_COUNT |
256
|
uint32 |
|
MAX_PAYLOAD_BUFFER_SET |
100
|
uint8 |
ALIASES
Name | Value | Description |
---|---|---|
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
Name | Type | Transport |
---|---|---|
device |
fuchsia.hardware.qualcomm.fastrpc/SecureFastRpc
|
Channel |