Google is committed to advancing racial equity for Black communities. See how.

fuchsia.sys2

PROTOCOLS

BlockingEventSource

Defined in fuchsia.sys2/events.fidl

Subscribe to events in component manager.

StartComponentTree

Resume the execution of components within the realm using a scoped BlockingEventSource. This method is idempotent.

Request

NameType

Response

NameType

Subscribe

Subscribes to the events of the provided EventTypes.

Returns a EventStreamSync which can be used to expect the registered types.

Errors:

  • RESOURCE_UNAVAILABLE when the component hasn't been granted the capability to subscribe to some event in the requested events.

Request

NameType
events vector<string>[100]
stream EventStream

Response

NameType
result EventSource_Subscribe_Result

CapabilityProvider

Defined in fuchsia.sys2/events.fidl

A FIDL-based version of a CapabilityProvider

Open

Called to bind a server end of a channel to the provided capability. The flags, mode and path specified here are passed on from the fuchsia.io.Directory.Open FIDL call that caused this capability routing to occur.

Request

NameType
server_end handle<channel>
flags uint32
mode uint32
path string[4096]

Response

NameType

ChildIterator

Defined in fuchsia.sys2/realm.fidl

A protocol to iterate over the list of children in a realm.

Next

Advance the iterator and return the next batch of children.

Returns a vector of ChildRef. Returns an empty vector when there are no more children.

Request

NameType

Response

NameType
children vector<ChildRef>

ComponentResolver

Defined in fuchsia.sys2/component_resolver.fidl

An interface for resolving a URL to a component.

This interface is implemented by components that provide support for loading components with a particular URL scheme. For example, the Fuchsia package component resolver exposes a service with this interface to resolve component URLs using the "fuchsia-pkg://" scheme.

To use a resolver to resolve URLs within your realm, register it in your realm's manifest. (TODO: explain in more detail)

Note: The component manager is the only intended direct client of this interface.

Resolve

Resolves a component with the given URL.

component_url is the unescaped URL of the component to resolve.

If successful, returns ZX_OK and information about the component that was resolved.

On failure, returns null info and...

  • ZX_ERR_INVALID_ARGS: The component's URL was malformed.
  • ZX_ERR_NOT_FOUND: The component does not exist.
  • ZX_ERR_UNAVAILABLE: The resolver was unable to retrieve or parse the component's resources.

Request

NameType
component_url string

Response

NameType
status zx/status
component Component

EventSource

Defined in fuchsia.sys2/events.fidl

Subscribe to events in component manager.

Subscribe

Subscribes to the events of the provided EventTypes.

Returns a EventStreamSync which can be used to expect the registered types.

Errors:

  • RESOURCE_UNAVAILABLE when the component hasn't been granted the capability to subscribe to some event in the requested events.

Request

NameType
events vector<string>[100]
stream EventStream

Response

NameType
result EventSource_Subscribe_Result

EventStream

Defined in fuchsia.sys2/events.fidl

Listener for events on the component hierarchy. The server won't wait for the client to handle the request before sending more events.

OnEvent

Request

NameType
event Event

Handler

Defined in fuchsia.sys2/events.fidl

Every Event supports this basic handler to allow resumption.

Resume

Resumes/unblocks from an event.

Request

NameType

Response

NameType

Realm

Defined in fuchsia.sys2/realm.fidl

A protocol used by a component instance to manage its own realm, such as for binding to its children.

The component manager provides this service to components that use /svc/fuchsia.sys2.Realm.

BindChild

Binds to a child component instance, causing it to start running if it is not already. When this function successfully returns, child is running and exposed_dir is bound to a directory that contains the capabilities which the child exposed to its realm via ComponentDecl.exposes (specified via "expose" declarations in the component’s manifest).

exposed_dir is a valid channel as long as child is running. child will remain running until it either stops on its own, or DestroyChild causes the child instance to be destroyed.

For example, if the child exposes a service /svc/example.Echo then exposed_dir will contain that service at that path.

NOTE: BindChild does not support pipelining with CreateChild. If BindChild is called on an instance before CreateChild successfully returns, it may return INSTANCE_NOT_FOUND.

Errors:

  • INVALID_ARGUMENTS: child is not a valid child reference. -
  • INSTANCE_NOT_FOUND: child does not exist.
  • INSTANCE_CANNOT_START: child was not running and there was an error starting it.
  • INSTANCE_CANNOT_RESOLVE: child's component declaration failed to resolve.

Request

NameType
child ChildRef
exposed_dir request<fuchsia.io/Directory>

Response

NameType
result Realm_BindChild_Result

CreateChild

Creates a child component instance dynamically. When this function returns successfully, the instance exists, but it may not be running.

The environment of the child instance is determined by the environment of the collection. decl must not set environment.

Errors:

  • INVALID_ARGUMENTS: collection is not a valid reference or child is not a valid declaration.
  • COLLECTION_NOT_FOUND: collection does not exist.
  • INSTANCE_ALREADY_EXISTS: decl.name already exists in collection.
  • NO_SPACE: Could not allocate storage for the new instance.

Request

NameType
collection CollectionRef
decl ChildDecl

Response

NameType
result Realm_CreateChild_Result

DestroyChild

Destroys a dynamically-created component instance. When this function returns, the client should assume the instance no longer exists. However, some cleanup (such as stopping the component instance or freeing its storage) may be performed in the background after the function returns.

Errors:

  • INVALID_ARGUMENTS: child is not a valid reference or does not refer to a dynamic instance.
  • INSTANCE_NOT_FOUND: child does not exist.
  • COLLECTION_NOT_FOUND: collection does not exist.

Request

NameType
child ChildRef

Response

NameType
result Realm_DestroyChild_Result

ListChildren

Returns an iterator that lists all instances in a collection.

NOTE: The results are not guaranteed to be consistent. Instances may be created or destroyed while the iterator is live, but those changes won't be observed by the iterator after this method returns.

Errors:

  • INVALID_ARGUMENTS: collection is not a valid reference or iter does not have ZX_RIGHT_WAIT.
  • COLLECTION_NOT_FOUND: collection does not exist.
  • If iter does not have standard channel rights, this function may return ACCESS_DENIED or component manager may close iter.

Request

NameType
collection CollectionRef
iter request<ChildIterator>

Response

NameType
result Realm_ListChildren_Result

RoutingProtocol

Defined in fuchsia.sys2/events.fidl

Allows injecting capabilities over FIDL. Used by RouteFrameworkCapability and RouteBuiltinCapability

ReplaceAndOpen

Replace the existing provider with the given client_end and open the existing provider with given server end.

This method is used to interpose between a client and service: Client <---> Interposer <---> Server

Opening the existing provider sets up Interposer <---> Server Replacing the existing provider sets up Client <---> Interposer

Request

NameType
client_end CapabilityProvider
server_end handle<channel>

Response

NameType

SetProvider

Set a CapabilityProvider. Invoking this method will replace any existing provider.

When a component attempts to connect to a capability, this method can be used to mock/inject that capability.

Request

NameType
client_end CapabilityProvider

Response

NameType

SystemController

Defined in fuchsia.sys2/system_controller.fidl

An interface implemented by ComponentManager that requests the ComponentManager stop all components and exit.

Shutdown

Stop all components, return an empty result, close this protocol's channel, and exit ComponentManager. If this is the root ComponentManager is exited we expect the system will reboot.

Request

NameType

Response

NameType

WorkScheduler

Defined in fuchsia.sys2/work_scheduler.fidl

Framework service: API for scheduling and canceling work. Each component instance can access work items that it has scheduled (but not others' scheduled work items). Work items are scheduled roughly at the specified time and frequency; the service implementation may specify its notion of roughly, and may provide a configuration API to tune this notion.

Each scheduled work item is identified by a client-provided WorkId. Each scheduled work item has a WorkId that is unique with respect to scheduled work items belonging to the same component instance.

CancelWork

Cancel the scheduled work item specified by work_id.

Request

NameType
work_id WorkId

Response

NameType
result WorkScheduler_CancelWork_Result

ScheduleWork

Schedule a new work item identified by work_id. The work item is to be scheduled roughly at the time corresponding to work_request.start. When work_request.period is specified, reschedule work roughly every work_request.period until the the work item is canceled.

Request

NameType
work_id WorkId
work_request WorkRequest

Response

NameType
result WorkScheduler_ScheduleWork_Result

WorkSchedulerControl

Defined in fuchsia.sys2/work_scheduler.fidl

Framework service: Administrative API for controlling parameters of the WorkScheduler framework service. So long as there are work items with deadlines in the next batch_period, the WorkScheduler will sleep for batch_period, then wake up and immediately dispatch a batch of work items: all those with past deadlines. It will repeat this process until no work items would be scheduled in the next batch_period, at which point it will go to sleep until the next deadline. This strategy ensures that each work item is dispatched approximately within batch_period of its deadline.

GetBatchPeriod

Get the current period between WorkScheduler attempts to dispatch a batch of work. batch_period is a non-negative 64-bit integer in the range [0, 2^63-1], representing a number of nanoseconds between dispatching batches of work.

Request

NameType

Response

NameType
result WorkSchedulerControl_GetBatchPeriod_Result

SetBatchPeriod

Set the current period between WorkScheduler attempts to batch and dispatch a batch of work. batch_period is a non-negative 64-bit integer in the range [0, 2^63-1], representing a number of nanoseconds between dispatching batches of work.

Request

NameType
batch_period zx/duration

Response

NameType
result WorkSchedulerControl_SetBatchPeriod_Result

Worker

Defined in fuchsia.sys2/work_scheduler.fidl

Component-exposed service: Work scheduler connects to this service to invoke scheduled work item callbacks. The service implementation is responsible for invoking the code that corresponds to the scheduled work item identified by work_id.

Note: The intent of exposing this service is to expose it to the WorkScheduler service provider (i.e., the framework) and no one else.

DoWork

Request

NameType
work_id WorkId

Response

NameType
result Worker_DoWork_Result

STRUCTS

ChildRef

Defined in fuchsia.sys2/relative_refs.fidl

A reference to one of the component's child instances.

NameTypeDescriptionDefault
name fuchsia.component/name

The name assigned to the child by its parent. If collection is set, name is scoped to collection and the child is a dynamic instance. Required.

No default
collection fuchsia.component/name

The collection name belongs to. If omitted, name references a static instance. This field must be omitted if the ChildRef is being used in a component declaration. Optional.

No default

CollectionRef

Defined in fuchsia.sys2/relative_refs.fidl

A reference to one of the component's collections.

NameTypeDescriptionDefault
name fuchsia.component/name No default

Entry

Defined in fuchsia.sys2/object.fidl

A key/value pair in an Object.

NameTypeDescriptionDefault
key string No default
value Value? No default

EventSource_Subscribe_Response

Defined in fuchsia.sys2/events.fidl

NameTypeDescriptionDefault

FrameworkRef

Defined in fuchsia.sys2/relative_refs.fidl

A reference to the component framework itself.

NameTypeDescriptionDefault

Object

Defined in fuchsia.sys2/object.fidl

An object is a sequence of key/value pairs. Keys must be unique and sorted in lexicographically increasing order.

NameTypeDescriptionDefault
entries vector<Entry> No default

ParentRef

Defined in fuchsia.sys2/relative_refs.fidl

A reference to a component’s parent instance.

NameTypeDescriptionDefault

Realm_BindChild_Response

Defined in fuchsia.sys2/realm.fidl

NameTypeDescriptionDefault

Realm_CreateChild_Response

Defined in fuchsia.sys2/realm.fidl

NameTypeDescriptionDefault

Realm_DestroyChild_Response

Defined in fuchsia.sys2/realm.fidl

NameTypeDescriptionDefault

Realm_ListChildren_Response

Defined in fuchsia.sys2/realm.fidl

NameTypeDescriptionDefault

SelfRef

Defined in fuchsia.sys2/relative_refs.fidl

A reference to the component itself.

NameTypeDescriptionDefault

StorageRef

Defined in fuchsia.sys2/relative_refs.fidl

A reference to one of the component's storage sections.

NameTypeDescriptionDefault
name fuchsia.component/name No default

Vector

Defined in fuchsia.sys2/object.fidl

A vector is a sequence of values.

NameTypeDescriptionDefault
values vector<Value> No default

WorkSchedulerControl_GetBatchPeriod_Response

Defined in fuchsia.sys2/work_scheduler.fidl

NameTypeDescriptionDefault
batch_period zx/duration No default

WorkSchedulerControl_SetBatchPeriod_Response

Defined in fuchsia.sys2/work_scheduler.fidl

NameTypeDescriptionDefault

WorkScheduler_CancelWork_Response

Defined in fuchsia.sys2/work_scheduler.fidl

NameTypeDescriptionDefault

WorkScheduler_ScheduleWork_Response

Defined in fuchsia.sys2/work_scheduler.fidl

NameTypeDescriptionDefault

Worker_DoWork_Response

Defined in fuchsia.sys2/work_scheduler.fidl

NameTypeDescriptionDefault

ENUMS

DependencyType

Type: uint32

Defined in fuchsia.sys2/offer_decl.fidl

Describes the type of dependency implied by the capability.

NameValueDescription
STRONG 1

A strong dependency which may be required by components that use it.

WEAK_FOR_MIGRATION 2

A weak dependency specifically used to mark cyclic dependencies of migrated components. Components that use a weak dependency must support the dependency being unavailable at arbitrary times.

Durability

Type: uint32

Defined in fuchsia.sys2/collection_decl.fidl

The durability of component instances created in a collection.

NameValueDescription
PERSISTENT 1

An instance exists until either it or its parent is destroyed.

TRANSIENT 2

An instance exists until either its parent instance is stopped or it is explicitly destroyed.

EnvironmentExtends

Type: uint32

Defined in fuchsia.sys2/environment_decl.fidl

Specifies how a declared environment's initial set of properties are assigned.

NameValueDescription
NONE 0

The environment has no initial set of properties.

REALM 1

The environment's initial set of properties are inherited from its realm. Inherited properties include any fields defined in EnvironmentDecl.

EventType

Type: uint32

Defined in fuchsia.sys2/events.fidl

These EventTypes are used for the EventStream protocol. They are FIDL versions of the EventType enum in hooks.rs and have the same meaning.

NameValueDescription
CAPABILITY_READY 1

A capability exposed to the framework by a component is available.

CAPABILITY_REQUESTED 2

A capability provided by this component has been requested. The event payload carries the request channel.

CAPABILITY_ROUTED 3

A capability is being requested by a component and its routing has also been determined. The event propagation system is used to supply the capability being requested.

DESTROYED 4

An instance was destroyed successfully. The instance is stopped and no longer exists in the parent's realm.

DISCOVERED 5

A component instance was discovered. This is the first stage in the lifecycle of components. Dispatched for dynamic children when they're created, for static children when their parent is resolved, and for the root when the component manager starts.

MARKED_FOR_DESTRUCTION 6

Destruction of an instance has begun. The instance may/may not be stopped by this point. The instance still exists in the parent's realm but will soon be removed. TODO(fxbug.dev/39417): Ensure the instance is stopped before this event.

RESOLVED 7

An instance's declaration was resolved successfully for the first time.

STARTED 8

This instance has started, according to component manager. However, if this is an executable component, the runner has further work to do to launch the component.

STOPPED 9

An instance was stopped successfully. This event must occur before Destroyed.

RUNNING 10

If requested, this event is dispatched on subscription and indicates that the instance has already started and is still running.

StartupMode

Type: uint32

Defined in fuchsia.sys2/child_decl.fidl

Describes under what conditions the component may be started.

NameValueDescription
LAZY 0

Start component instance only when another instance binds to it.

EAGER 1

Start component instance as soon as parent starts. This mode is only supported for statically declared children -- a dynamic instance may only be started by binding to it.

StorageType

Type: uint32

Defined in fuchsia.sys2/capability_decl.fidl

The type of storage offered or used by a component.

NameValueDescription
DATA 1

Persistent data storage.

CACHE 2

Cache storage that may be deleted at any time by the system.

META 3

Meta storage that will be used by component manager to persist metadata and other information about the component

TABLES

AboveRootCapability

Defined in fuchsia.sys2/events.fidl

Describes a capability provided by component manager at the realm above the root.

OrdinalNameTypeDescription

CapabilityReadyError

Defined in fuchsia.sys2/events.fidl

Error payload for CapabilityReady events

OrdinalNameTypeDescription
1 path string[1024]

The path of the capability.

CapabilityReadyPayload

Defined in fuchsia.sys2/events.fidl

Payload for CapabilityReady events

OrdinalNameTypeDescription
1 path string[1024]

The path of the capability.

2 node fuchsia.io/Node

Channel to the node exposed by the event source at path.

CapabilityRequestedError

Defined in fuchsia.sys2/events.fidl

Error payload for CapabilityRequested events

OrdinalNameTypeDescription
1 path string[50]

Identifier of capability being requested. For a path-based capability, this is the path. For a runner capability, this is the name.

CapabilityRequestedPayload

Defined in fuchsia.sys2/events.fidl

Payload for CapabilityRequested events

OrdinalNameTypeDescription
1 path string[1024]

The path of the capability.

2 capability handle<channel>

A handle to the server end of the channel to host capability.

CapabilityRoutedError

Defined in fuchsia.sys2/events.fidl

Error payload for CapabilityRouted events

OrdinalNameTypeDescription
1 capability_id string[50]

Identifier of capability being requested. For a path-based capability, this is the path. For a runner capability, this is the name.

CapabilityRoutedPayload

Defined in fuchsia.sys2/events.fidl

Payload for CapabilityRouted events

OrdinalNameTypeDescription
1 routing_protocol RoutingProtocol

Allows setting a capability provider for CapabilityRouted events This will not be available with an async event.

2 capability_id string[50]

Identifier of capability being requested. For a path-based capability, this is the path. For a runner capability, this is the name.

3 source CapabilitySource

Source of the capability that needs to be routed.

ChildDecl

Defined in fuchsia.sys2/child_decl.fidl

Statically declares a child component instance.

OrdinalNameTypeDescription
1 name fuchsia.component/name

The name assigned to the child by its parent.

Must be non-empty, unique among all siblings, and contain only the following characters: [a-z0-9-_.].

2 url fuchsia.url/Url

The child component's URL.

Must be non-empty and a well-formed URL.

3 startup StartupMode

The startup mode for the component instance.

4 environment fuchsia.component/name

The environment assigned to this child.

Must be non-empty, reference an environment defined in the containing ComponentDecl, and contain only the following characters: [a-z0-9-_.].

CollectionDecl

Defined in fuchsia.sys2/collection_decl.fidl

Statically declares a component instance collection.

OrdinalNameTypeDescription
1 name fuchsia.component/name

The name of the collection. Instances created in the collection are scoped to this name.

2 durability Durability

The durability of instances in the collection.

3 environment fuchsia.component/name

The environment assigned to child instances in this collection.

Must be non-empty, reference an environment defined in the containing ComponentDecl, and contain only the following characters: [a-z0-9-_.].

Component

Defined in fuchsia.sys2/component.fidl

A component is a unit of executable software.

This object provides the component's declaration, access to its package's content, and relevant metadata.

OrdinalNameTypeDescription
1 resolved_url string

The resolved URL of the component. This is the canonical URL obtained by the component resolver after following redirects and resolving relative paths.

2 decl ComponentDecl

The component's declaration. This information is typically obtained from the component's manifest or generated by the component resolver.

3 package Package

The package that contains the component. By convention, the component's package is mapped to "/pkg" in its namespace at runtime.

This is null if the component is not represented as a package. In that case, it is the runner's responsibility to load the component's resource from the resolved_url. This mechanism is used for web applications.

Most runners, including but not limited to the builtin ELF runner, require the package's directory connection to have OPEN_RIGHT_EXECUTABLE rights in order to run the resolved component.

ComponentCapability

Defined in fuchsia.sys2/events.fidl

Describes a capability provided by a component

OrdinalNameTypeDescription
1 source_moniker string[4096]

The moniker of the instance that is providing this capability.

ComponentDecl

Defined in fuchsia.sys2/component_decl.fidl

A component declaration.

This information is typically encoded in the component manifest (.cm file) if it has one or may be generated at runtime by a component resolver for those that don't.

OrdinalNameTypeDescription
1 program fuchsia.data/Dictionary

Information about the program to run when the component is executed.

The component manager provides the contents of this dictionary to the component runner when executing the program. Each component runner can freely define the contents of this dictionary as needed.

The system's default runner understands the following entries:

  • "binary": string The path of the executable relative to the root of the package. Typically an ELF binary.

  • "args": vector of strings The command-line arguments to provide to the executable at runtime.

  • "env": dictionary of strings The environment variables to provide to the executable at runtime.

Other runners may define different entries.

2 uses vector<UseDecl>

List of capabilities used by the component. These consist of capabilities offered to the component that are installed in its incoming namespace.

The used capabilities must be unique and non-overlapping.

3 exposes vector<ExposeDecl>

List of capabilities exposed by the component. These consist of capabilities that are made visible to the containing realm. The parent may offer these capabilities to its children, but not use them.

The exposed capabilities must be unique and non-overlapping.

4 offers vector<OfferDecl>

List of capabilities offered to the component’s children. These consist of capabilities that the given children may use, which may come from a child, the containing realm, or the component's own outgoing namespace.

The offered capabilities must be unique and non-overlapping.

5 capabilities vector<CapabilityDecl>

List of capabilities defined by the component.

6 children vector<ChildDecl>

The component's statically instantiated children. The children must have unique names.

7 collections vector<CollectionDecl>

The component's collections. The collections must have unique names.

8 environments vector<EnvironmentDecl>

List of environments created by this component. Environments are assigned to children and control aspects of a child component's runtime.

9 facets Object

Additional metadata about the component.

ComponentDescriptor

Defined in fuchsia.sys2/events.fidl

A descriptor providing metadata about a target component instance.

OrdinalNameTypeDescription
1 moniker string[4096]

Relative moniker identifying the component instance. Relative to the scope of the event.

2 component_url fuchsia.url/Url

URL used to resolve the component.

DestroyedError

Defined in fuchsia.sys2/events.fidl

Error payload for Destroyed events.

OrdinalNameTypeDescription

DestroyedPayload

Defined in fuchsia.sys2/events.fidl

Payload for Destroyed events.

OrdinalNameTypeDescription

DirectoryDecl

Defined in fuchsia.sys2/capability_decl.fidl

Declares a directory capability backed by this component.

To learn more about directories, see: https://fuchsia.dev/fuchsia-src/glossary#directory

OrdinalNameTypeDescription
1 name string[100]

The name of this directory.

2 source_path string[1024]

The path to the directory in the component's outgoing directory.

3 rights fuchsia.io2/Rights

The maximum rights that can be set by a component using this directory.

DiscoveredError

Defined in fuchsia.sys2/events.fidl

Error payload for Discovered events.

OrdinalNameTypeDescription

DiscoveredPayload

Defined in fuchsia.sys2/events.fidl

Payload for Discovered events.

OrdinalNameTypeDescription

EnvironmentDecl

Defined in fuchsia.sys2/environment_decl.fidl

Declares an environment which configures a realm.

OrdinalNameTypeDescription
1 name fuchsia.component/name

The name of this environment.

2 extends EnvironmentExtends

Specifies how the initial state of this environment is constructed.

3 runners vector<RunnerRegistration>

List of runners available in this environment.

This list determines the total set of runners that are available for any component in the environment to use.

4 resolvers vector<ResolverRegistration>

List of component resolvers and the URL schemes they are registered to resolve. These registrations determine how components are resolved in the realm. If the component URL scheme does not match any of these resolvers, URL resolution is delegated to the parent environment, if this environment extends from REALM.

5 stop_timeout_ms uint32

The duration in milliseconds that the component will have to stop before it is killed.

Event

Defined in fuchsia.sys2/events.fidl

Contains all information about a single event

OrdinalNameTypeDescription
1 event_type EventType

Event type corresponding to the event

2 descriptor ComponentDescriptor

Information about the component for which this event was generated.

3 handler Handler

Handler for resuming from event This will be absent if this is an async event.

4 event_result EventResult

Optional payload for some event types

5 timestamp zx/time

Time when the event occurred.

EventError

Defined in fuchsia.sys2/events.fidl

Corresponds to an error that occurred during a state transition.

OrdinalNameTypeDescription
1 description string[100]

A string describing the error that occurred. TODO(fxbug.dev/49792): We should be sending structured errors, and not simply strings. This is a placeholder pending further internal component manager refactors.

2 error_payload EventErrorPayload

The error payload of the event if any.

ExposeDirectoryDecl

Defined in fuchsia.sys2/expose_decl.fidl

Declares a directory exposed to a component's containing realm, such as a directory exposed by the component or one of its children at runtime.

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be self or child.

2 source_path string[1024]

Path identifying the directory, by which it was presented to this component.

3 target Ref

The destination to which the directory is exposed: either the component's realm or the framework.

4 target_path string[1024]

The path by which the capability is being exposed.

Must be an absolute path starting with /.

5 rights fuchsia.io2/Rights

The maximum rights that can be set by a component using this directory, required iff source == self.

6 subdir string[1024]

The subdirectory of this directory to expose instead of the root. Optional.

ExposeProtocolDecl

Defined in fuchsia.sys2/expose_decl.fidl

Declares a protocol exposed to a component's containing realm, such as a protocol exposed by the component or one of its children at runtime.

To learn more about protocols, see: https://fuchsia.dev/fuchsia-src/glossary#protocol

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be self or child.

2 source_path string[1024]

Path identifying the protocol, by which it was presented to this component.

3 target Ref

The destination to which the protocol is exposed: either the component's realm or the framework.

4 target_path string[1024]

The path by which the capability is being exposed.

Must be an absolute path starting with /.

ExposeResolverDecl

Defined in fuchsia.sys2/expose_decl.fidl

Declares a resolver exposed to a component's containing realm, such as a resolver exposed by the component or one of its children at runtime.

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be self or child.

2 source_name fuchsia.component/name

The name of the resolver, by which it was presented to this component.

3 target Ref

The destination to which the resolver is exposed: either the component's realm or the framework.

4 target_name fuchsia.component/name

The name by which the capability is being exposed.

ExposeRunnerDecl

Defined in fuchsia.sys2/expose_decl.fidl

Declares a runner exposed to a component's containing realm, such as a runner exposed by the component or one of its children at runtime.

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be self or child.

2 source_name fuchsia.component/name

The name of the runner, by which it was presented to this component.

3 target Ref

The destination to which the runner is exposed: either the component's realm or the framework.

4 target_name fuchsia.component/name

The name by which the capability is being exposed.

ExposeServiceDecl

Defined in fuchsia.sys2/expose_decl.fidl

Declares a service exposed to a component's containing realm, such as a service exposed by the component or one of its children at runtime.

To learn more about services, see: https://fuchsia.dev/fuchsia-src/glossary#service

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be self or child.

2 source_name fuchsia.component/name

Name identifying the service, by which it was presented to this component.

3 target Ref

The destination to which the service is exposed: either the component's realm or the framework.

4 target_name fuchsia.component/name

The name by which the capability is being exposed.

FrameworkCapability

Defined in fuchsia.sys2/events.fidl

Describes a capability provided by the framework, scoped to a realm.

OrdinalNameTypeDescription
1 scope_moniker string[4096]

The moniker of the instance that this capability is scoped to.

MarkedForDestructionError

Defined in fuchsia.sys2/events.fidl

Error payload for MarkedForDestruction events.

OrdinalNameTypeDescription

MarkedForDestructionPayload

Defined in fuchsia.sys2/events.fidl

Payload for MarkedForDestruction events.

OrdinalNameTypeDescription

OfferDirectoryDecl

Defined in fuchsia.sys2/offer_decl.fidl

Declares a directory offered by a component to one of its children, which may have been offered by the component's containing realm, the component itself, or one of its other children.

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be parent, self, or child.

2 source_path string[1024]

Path identifying the directory being offered.

3 target Ref

Reference to the target of the capability. Must be child or collection.

4 target_path string[1024]

The path under which the capability is being offered.

Must be an absolute path starting with /.

5 rights fuchsia.io2/Rights

The maximum rights that can be set by a component using this directory, required iff source == self.

6 subdir string[1024]

The subdirectory of this directory to offer instead of the root. Optional.

7 dependency_type DependencyType

The dependency type this offer represents. A component which recieves a weak offer must support the offered capability being unavailable at any point.

OfferEventDecl

Defined in fuchsia.sys2/offer_decl.fidl

Declares an event offered by a component.

OrdinalNameTypeDescription
1 source Ref

The provider of the event. Must be parent.

2 source_name fuchsia.component/name

Name of the event being offered.

3 target Ref

Reference to the target of the event. Must be child or collection.

4 target_name fuchsia.component/name

Name under which the event is being offered.

5 filter fuchsia.data/Dictionary

Filter for the event. The structure of the filter depends on the event type. May be absent for some events.

OfferProtocolDecl

Defined in fuchsia.sys2/offer_decl.fidl

Declares a protocol offered by a component to one of its children, which may have been offered by the component's containing realm, the component itself, or one of its other children.

To learn more about protocols, see: https://fuchsia.dev/fuchsia-src/glossary#protocol

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be parent, self, or child.

2 source_path string[1024]

Path identifying the legacy service being offered.

3 target Ref

Reference to the target. Must be child or collection.

4 target_path string[1024]

The path under which the capability is being offered.

Must be an absolute path starting with /.

5 dependency_type DependencyType

The dependency type this offer represents. A component which recieves a weak offer must support the offered capability being unavailable at any point.

OfferResolverDecl

Defined in fuchsia.sys2/offer_decl.fidl

Declares a resolver capability offered by a component to one of its children, which may have been offered by the component's containing realm, the component itself, or one of its other children.

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be parent, self, or child.

2 source_name fuchsia.component/name

Name of the resolver being offered.

3 target Ref

Reference to the target of the capability. Must be child or collection.

4 target_name fuchsia.component/name

Name under which the capability is being offered.

OfferRunnerDecl

Defined in fuchsia.sys2/offer_decl.fidl

Declares a runner offered by a component to one of its children, which may have been offered by the component's containing realm, the component itself, or one of its other children.

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be parent, self, or child.

2 source_name fuchsia.component/name

Name of the runner being offered.

3 target Ref

Reference to the target of the capability. Must be child or collection.

4 target_name fuchsia.component/name

Name under which the capability is being offered.

OfferServiceDecl

Defined in fuchsia.sys2/offer_decl.fidl

Declares a service offered by a component to one of its children, which may have been offered by the component's containing realm, the component itself, or one of its other children.

To learn more about services, see: https://fuchsia.dev/fuchsia-src/glossary#service

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be parent, self, or child.

2 source_name fuchsia.component/name

Name identifying the service being offered.

3 target Ref

Reference to the target. Must be child or collection.

4 target_name fuchsia.component/name

The name under which the capability is being offered.

OfferStorageDecl

Defined in fuchsia.sys2/offer_decl.fidl

Declares a storage capability offered by a component to one of its children, such as meta storage offered by the component's containing realm or cache storage offered by the component itself.

OrdinalNameTypeDescription
1 type StorageType

The type of storage being offered.

2 source Ref

The source of the storage capability. Must be parent or storage.

3 target Ref

Reference to the target of the capability. Must be child or collection.

Package

Defined in fuchsia.sys2/package.fidl

A package is a signed collection of immutable files.

This object provides access to a package's content and relevant metadata.

OrdinalNameTypeDescription
1 package_url string

The URL of the package itself.

2 package_dir fuchsia.io/Directory

The package's content directory.

ProtocolDecl

Defined in fuchsia.sys2/capability_decl.fidl

Declares a protocol capability backed by this component.

To learn more about protocols, see: https://fuchsia.dev/fuchsia-src/glossary#protocol

OrdinalNameTypeDescription
1 name string[100]

The name of this protocol.

2 source_path string[1024]

The path to the protocol in the component's outgoing directory.

ResolvedError

Defined in fuchsia.sys2/events.fidl

Error payload for Resolved events.

OrdinalNameTypeDescription

ResolvedPayload

Defined in fuchsia.sys2/events.fidl

Payload for Resolved events.

OrdinalNameTypeDescription

ResolverDecl

Defined in fuchsia.sys2/capability_decl.fidl

Declares a resolver which is responsible for resolving component URLs to actual components. See fuchsia.sys2.ComponentResolver for the protocol resolvers are expected to implement.

OrdinalNameTypeDescription
1 name fuchsia.component/name

The name of this resolver. Must be non-empty, unique among resolvers declared in the same ComponentDecl, and contain only the following characters: [a-z0-9-_.].

2 source_path string[1024]

The path of the capability in the declaring component's namespace.

ResolverRegistration

Defined in fuchsia.sys2/environment_decl.fidl

A mapping of URL scheme to resolver name.

OrdinalNameTypeDescription
1 resolver fuchsia.component/name

The name of the resolver.

2 source Ref

The provider of the capability relative to the component itself. Must be parent, self, or child.

3 scheme fuchsia.component/url_scheme

The URL scheme the resolver is registered to handle. Only one resolver may be registered to a particular URL scheme. The URL scheme must start with a lowercase ASCII letter (a-z), and may contain lowercase ASCII letters, digits, +, -, and ..

RunnerDecl

Defined in fuchsia.sys2/capability_decl.fidl

Declares a runner capability backed by a service.

OrdinalNameTypeDescription
1 name fuchsia.component/name

The name of this runner.

2 source Ref

The provider of the underlying service relative to the component itself. Must be parent, self, or child.

3 source_path string[1024]

The path of the capability within the specified source.

RunnerRegistration

Defined in fuchsia.sys2/environment_decl.fidl

A repository of the runners available in an environment.

OrdinalNameTypeDescription
1 source_name fuchsia.component/name

The name of the runner capability as it's exposed to, offered, or defined by this component.

2 source Ref

The provider of the capability relative to the component itself. Must be parent, self, or child.

3 target_name fuchsia.component/name

The name by which the runner is made available in this environment.

RunningError

Defined in fuchsia.sys2/events.fidl

Error payload for Running events.

OrdinalNameTypeDescription
1 started_timestamp zx/time

Time when the component started.

RunningPayload

Defined in fuchsia.sys2/events.fidl

Payload for Running events.

OrdinalNameTypeDescription
1 started_timestamp zx/time

Time when the component started.

ServiceDecl

Defined in fuchsia.sys2/capability_decl.fidl

Declares a service capability backed by this component.

To learn more about services, see: https://fuchsia.dev/fuchsia-src/glossary#service

OrdinalNameTypeDescription
1 name string[100]

The name of this service.

2 source_path string[1024]

The path to the service in the component's outgoing directory.

StartedError

Defined in fuchsia.sys2/events.fidl

Error payload for Started events.

OrdinalNameTypeDescription

StartedPayload

Defined in fuchsia.sys2/events.fidl

Payload for Started events.

OrdinalNameTypeDescription

StoppedError

Defined in fuchsia.sys2/events.fidl

Error payload for Stopped events.

OrdinalNameTypeDescription

StoppedPayload

Defined in fuchsia.sys2/events.fidl

Payload for Stopped events.

OrdinalNameTypeDescription
1 status zx/status

The epitaph set on the fuchsia.component.runner/ComponentController protocol channel. This is the exit status of the component. The possible status values and their meaning are described in the definition of the ComponentController protocol.

StorageDecl

Defined in fuchsia.sys2/capability_decl.fidl

Declares a storage capability backed by a directory from which data, cache, or meta storage can be offered.

OrdinalNameTypeDescription
1 name fuchsia.component/name

The name of this storage

2 source Ref

The provider of the underlying directory capability relative to the component itself. Must be parent, self, or child.

3 source_path string[1024]

The incoming path to the directory capability. If "source == SELF", this is a path in the component's outgoing directory. Otherwise, it is the path by which the capability was presented to the component.

UseDirectoryDecl

Defined in fuchsia.sys2/use_decl.fidl

Declares a directory used by a component, which was offered to the component's environment.

OrdinalNameTypeDescription
1 source Ref

The provider of the directory relative to the component itself. Must be parent or framework.

2 source_path string[1024]

Path identifying the directory, by which it was presented to this component.

3 target_path string[1024]

The path where the capability should be installed in the component's namespace.

Must be an absolute path starting with /.

4 rights fuchsia.io2/Rights

The rights required by the component to use this directory.

5 subdir string[1024]

The subdirectory of this directory to use instead of the root. Optional.

UseEventDecl

Defined in fuchsia.sys2/use_decl.fidl

Declares an event used by a component.

OrdinalNameTypeDescription
1 source Ref

The provider of the event. Must be |realm| or |framework|.

2 source_name fuchsia.component/name

Name identifying the event which was presented to this component.

3 target_name fuchsia.component/name

The name which the component will use to refer to this event.

4 filter fuchsia.data/Dictionary

Filter for the event. The structure of the filter depends on the event type. May be absent for some events.

UseEventStreamDecl

Defined in fuchsia.sys2/use_decl.fidl

Declares a static EventStream used by a component.

OrdinalNameTypeDescription
1 target_path string[1024]

The path where the EventStream protocol will be served.

Must be an absolute path starting with /.

2 events vector<string>[100]

The set of event names to which this EventStream is subscribed. Note: This vector must be non-empty.

UseProtocolDecl

Defined in fuchsia.sys2/use_decl.fidl

Declares a legacy service used by a component, which was offered to the component's environment.

A legacy service is a service with a single instance, provided by a single FIDL protocol.

OrdinalNameTypeDescription
1 source Ref

The provider of the legacy service relative to the component itself. Must be parent or framework.

2 source_path string[1024]

Path identifying the legacy service, by which it was presented to this component.

3 target_path string[1024]

The path where the capability should be installed in the component's namespace.

Must be an absolute path starting with /.

UseRunnerDecl

Defined in fuchsia.sys2/use_decl.fidl

Declares a runner used by a component, which was offered to the component's environment.

OrdinalNameTypeDescription
1 source_name fuchsia.component/name

The name of the runner, as it was presented to this component by the realm.

UseServiceDecl

Defined in fuchsia.sys2/use_decl.fidl

Declares a service used by a component, which was offered to the component's environment.

To learn more about services, see: https://fuchsia.dev/fuchsia-src/glossary#service

OrdinalNameTypeDescription
1 source Ref

The provider of the service relative to the component itself. Must be parent or framework.

2 source_name fuchsia.component/name

Name identifying the service, by which it was presented to this component.

3 target_path string[1024]

The path where the capability should be installed in the component's namespace.

Must be an absolute path starting with /.

UseStorageDecl

Defined in fuchsia.sys2/use_decl.fidl

Declares storage used by a component, which was offered to the component's environment.

OrdinalNameTypeDescription
1 type StorageType

Type of storage used by the component.

2 target_path string[1024]

The path where the capability should be installed in the component's namespace. Must not be set if type is META.

Must be an absolute path starting with /.

WorkRequest

Defined in fuchsia.sys2/work_scheduler.fidl

Parameters for a new piece of work to be scheduled.

OrdinalNameTypeDescription
1 start Start

Time when corresponding work item should be first scheduled.

2 period zx/duration

Delay between repeated schedulings of corresponding work item. This is left unspecified for one-shot work that should not repeat. Repeating work items are rescheduled indefinitely until it is canceled.

UNIONS

CapabilityDecl

Defined in fuchsia.sys2/capability_decl.fidl

Declares a capability defined by this component.

NameTypeDescription
service ServiceDecl
protocol ProtocolDecl
directory DirectoryDecl
storage StorageDecl
runner RunnerDecl
resolver ResolverDecl

CapabilitySource

Defined in fuchsia.sys2/events.fidl

Describes the source of a routed capability.

NameTypeDescription
component ComponentCapability

The capability is provided by another component.

framework FrameworkCapability

The capability is provided by the framework and is scoped to a realm.

above_root AboveRootCapability

The capability is provided by realm above the root, which is component manager itself.

EventErrorPayload

Defined in fuchsia.sys2/events.fidl

Encapsulates additional data for some event errors.

NameTypeDescription
capability_ready CapabilityReadyError

Payload for CapabilityReady events

capability_requested CapabilityRequestedError

Payload for CapabilityRequested events

capability_routed CapabilityRoutedError

Payload for CapabilityRouted events

destroyed DestroyedError

Payload for Destroyed events.

discovered DiscoveredError

Payload for Discovered events.

marked_for_destruction MarkedForDestructionError

Payload for MarkedForDestruction events.

resolved ResolvedError

Payload for Resolved events

running RunningError

Payload for Running events

started StartedError

Payload for Started events

stopped StoppedError

Payload for Stopped events

EventPayload

Defined in fuchsia.sys2/events.fidl

Encapsulates additional data/protocols for some event types.

NameTypeDescription
capability_ready CapabilityReadyPayload

Payload for CapabilityReady events

capability_requested CapabilityRequestedPayload

Payload for CapabilityRequested events

capability_routed CapabilityRoutedPayload

Payload for CapabilityRouted events

destroyed DestroyedPayload

Payload for Destroyed events.

discovered DiscoveredPayload

Payload for Discovered events.

marked_for_destruction MarkedForDestructionPayload

Payload for MarkedForDestruction events.

resolved ResolvedPayload

Payload for Resolved events

running RunningPayload

Payload for Running events

started StartedPayload

Payload for Started events

stopped StoppedPayload

Payload for Stopped events

EventResult

Defined in fuchsia.sys2/events.fidl

Describes the result of a state transition.

NameTypeDescription
payload EventPayload

The payload of the event if the state transition described by the event succeeds.

error EventError

The error that caused the state transition described by the event to fail.

EventSource_Subscribe_Result

Defined in fuchsia.sys2/events.fidl

NameTypeDescription
response EventSource_Subscribe_Response
err fuchsia.component/Error

ExposeDecl

Defined in fuchsia.sys2/expose_decl.fidl

Declares a capability exposed to either a component's containing realm or to the framework. For example, a legacy service exposed by the component at runtime.

NameTypeDescription
service ExposeServiceDecl
protocol ExposeProtocolDecl
directory ExposeDirectoryDecl
runner ExposeRunnerDecl
resolver ExposeResolverDecl

OfferDecl

Defined in fuchsia.sys2/offer_decl.fidl

Declares a capability offered by a component to one of its children, which may have been offered by the component's containing realm, the component itself, or one of its other children.

NameTypeDescription
service OfferServiceDecl
protocol OfferProtocolDecl
directory OfferDirectoryDecl
storage OfferStorageDecl
runner OfferRunnerDecl
resolver OfferResolverDecl
event OfferEventDecl

Realm_BindChild_Result

Defined in fuchsia.sys2/realm.fidl

NameTypeDescription
response Realm_BindChild_Response
err fuchsia.component/Error

Realm_CreateChild_Result

Defined in fuchsia.sys2/realm.fidl

NameTypeDescription
response Realm_CreateChild_Response
err fuchsia.component/Error

Realm_DestroyChild_Result

Defined in fuchsia.sys2/realm.fidl

NameTypeDescription
response Realm_DestroyChild_Response
err fuchsia.component/Error

Realm_ListChildren_Result

Defined in fuchsia.sys2/realm.fidl

NameTypeDescription
response Realm_ListChildren_Response
err fuchsia.component/Error

Ref

Defined in fuchsia.sys2/relative_refs.fidl

A reference to a capability source or destination relative to this component.

NameTypeDescription
parent ParentRef
self SelfRef
child ChildRef
collection CollectionRef
storage StorageRef
framework FrameworkRef

Start

Defined in fuchsia.sys2/work_scheduler.fidl

Different ways to specify when to schedule a work item for the first time.

NameTypeDescription
delay zx/duration

A non-negative delay to wait before scheduling work.

monotonic_time zx/time

A fixed point in time to start scheduling work, interpreted like ZX_CLOCK_MONOTONIC: number of nanoseconds since the system was powered on.

UseDecl

Defined in fuchsia.sys2/use_decl.fidl

Declares a capability used by a component, which was offered to the component's environment.

NameTypeDescription
service UseServiceDecl
protocol UseProtocolDecl
directory UseDirectoryDecl
storage UseStorageDecl
runner UseRunnerDecl
event UseEventDecl
event_stream UseEventStreamDecl

Value

Defined in fuchsia.sys2/object.fidl

A value is a boolean, integer, float, string, vector, or object.

NameTypeDescription
bit bool
inum int64
fnum float64
str string
vec Vector
obj Object

WorkSchedulerControl_GetBatchPeriod_Result

Defined in fuchsia.sys2/work_scheduler.fidl

NameTypeDescription
response WorkSchedulerControl_GetBatchPeriod_Response
err fuchsia.component/Error

WorkSchedulerControl_SetBatchPeriod_Result

Defined in fuchsia.sys2/work_scheduler.fidl

NameTypeDescription
response WorkSchedulerControl_SetBatchPeriod_Response
err fuchsia.component/Error

WorkScheduler_CancelWork_Result

Defined in fuchsia.sys2/work_scheduler.fidl

NameTypeDescription
response WorkScheduler_CancelWork_Response
err fuchsia.component/Error

WorkScheduler_ScheduleWork_Result

Defined in fuchsia.sys2/work_scheduler.fidl

NameTypeDescription
response WorkScheduler_ScheduleWork_Response
err fuchsia.component/Error

Worker_DoWork_Result

Defined in fuchsia.sys2/work_scheduler.fidl

NameTypeDescription
response Worker_DoWork_Response
err fuchsia.component/Error

CONSTANTS

NameValueTypeDescription
MAX_CAPABILITY_ID_LENGTH 50 uint64

The maximum string length of a capability ID. This value is currently set arbitrarily.

MAX_ERROR_DESCRIPTION_LENGTH 100 uint64

The maximum string length of an error description.

MAX_WORK_ID_LENGTH 100 uint32

TYPE ALIASES

NameValueDescription
WorkId string[MAX_WORK_ID_LENGTH]