fuchsia.sys2

PROTOCOLS

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.

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.
  • COLLECTION_NOT_FOUND: collection does not exist.

Request

NameType
collection CollectionRef
iter request<ChildIterator>

Response

NameType
result Realm_ListChildren_Result

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

ComponentRunner

Defined in fuchsia.sys2/component_runner.fidl

An interface for running components.

This interface is implemented by components that provide an execution environment for running particular classes of programs. For example, the Dart virtual machine exposes a service with this interface to run Dart programs.

To specify the runner needed to run your component, set the "runner_url" property in your component's manifest.

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

Start

Starts running a new component instance described by start_info.

The caller of this method takes responsibility for binding client connections and controlling the lifetime of the newly started component instance through the requested controller.

Request

NameType
start_info ComponentStartInfo
controller request<ComponentController>

ComponentController

Defined in fuchsia.sys2/component_runner.fidl

An interface for binding client connections and controlling the lifetime of a component instance started using ComponentRunner.Start().

When the controlled component instance terminates or becomes inaccessible for any reason, the server invokes OnEpitaph() and closes its endpoint of the controller interface.

LIFECYCLE

A component may exist in one of two states, Started or Stopped. The component is Started from time ComponentRunner.Start() is called until the ComponentRunner closes the ComponentController handle. The component then transitions to Stopped.

Stop() is called to indicate a ComponentRunner should end a component's execution. Kill() indicates that a runner must halt a component's execution immediately and close the ComponentController's server end. After the ComponentController is closed the component manager can tear down the namespace it hosts for the stopped component. The component manager may call Kill() without first having called Stop().

EPITAPH

This interface uses a FIDL epitaph to indicate that the controller component instance has terminated and to describe its final disposition.

The following epitaph status codes have particular significance:

  • ZX_OK: The component instance was successfully terminated in response to Stop() and its runtime resources have been fully released.
  • ZX_ERR_UNAVAILABLE: The runner was unable to start the component instance. e.g. The runner could not retrieve the component's assets.
  • ERR_COMPONENT_DIED: The component instance was started but subsequently terminated unexpectedly.

Other status codes (e.g. ZX_ERR_PEER_CLOSED) may indicate a failure of the component runner itself. The component manager may respond to such failures by terminating the component runner's job to ensure system stability.

Stop

Requests the runner to stop the controlled component instance.

After stopping the component instance, the server should report an epitaph then close its endpoint of the controller interface.

Request

NameType

Kill

Stop this component immediately. This ComponentRunner must immediately kill the component instance, set an epitaph set on the channel, and close the channel. After the channel closes, the component instance will be considered by the component manager to be Stopped and the component's namespace will be torn down.

Kill() may have been preceeded by Stop(), but that is not guaranteed.

Request

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.

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

CancelWork

Cancel the scheduled work item specified by work_id.

Request

NameType
work_id WorkId

Response

NameType
result WorkScheduler_CancelWork_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

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

STRUCTS

RealmRef

Defined in fuchsia.sys2/relative_refs.fidl

A reference to a component’s containing realm, i.e. the parent component.

NameTypeDescriptionDefault

SelfRef

Defined in fuchsia.sys2/relative_refs.fidl

A reference to the component itself.

NameTypeDescriptionDefault

ChildRef

Defined in fuchsia.sys2/relative_refs.fidl

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

NameTypeDescriptionDefault
name child_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 collection_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 collection_name No default

StorageRef

Defined in fuchsia.sys2/relative_refs.fidl

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

NameTypeDescriptionDefault
name string[100] No default

FrameworkRef

Defined in fuchsia.sys2/relative_refs.fidl

A reference to the component framework itself.

NameTypeDescriptionDefault

Moniker

Defined in fuchsia.sys2/moniker.fidl

A moniker encodes the relationship between two component instances that exist in the component instance tree at runtime.

To understand this better, consider two component instances labeled "A" and "B" that are both children of a component instance labeled "P".

At runtime, when "B" requests a service from "A" through a channel established by the component manager, the component manager may provide "A" with a moniker that encodes "B's" identity relative to "A" itself. The moniker's encoded value describes the directed path to traverse from "A" (the moniker's origin) to "B" (the moniker's referent), passing through "P" (their common ancestor).

NameTypeDescriptionDefault
encoded_value string[4096]

An opaque representation of the moniker's relation.

No default

Realm_BindChild_Response

generated

NameTypeDescriptionDefault

Realm_CreateChild_Response

generated

NameTypeDescriptionDefault

Realm_DestroyChild_Response

generated

NameTypeDescriptionDefault

Realm_ListChildren_Response

generated

NameTypeDescriptionDefault

ComponentNamespace

Defined in fuchsia.sys2/component_namespace.fidl

A namespace specifies the set of directories that a component instance receives at start-up. Each component instance's namespace is tailored to provide access to a set of files and services that are appropriate to that component instance's role in the system (its sandbox).

By convention, a component's namespace typically contains some or all of the following directories:

  • "/svc": A directory containing services that the component requested to use via its "import" declarations.
  • "/pkg": A directory containing the component's package, including its binaries, libraries, and other assets.
NameTypeDescriptionDefault
paths vector<string>

The mount point for each of the directories below, each including a leading slash. For example, ["/pkg", "/svc", "/config/data"].

Each mount point must be unique and non-overlapping. For example, ["/foo", "/foo/bar"] is invalid.

No default
directories vector<fuchsia.io/Directory>

The directories mounted at each path in the namespace.

No default

WorkScheduler_ScheduleWork_Response

generated

NameTypeDescriptionDefault

WorkScheduler_CancelWork_Response

generated

NameTypeDescriptionDefault

Worker_DoWork_Response

generated

NameTypeDescriptionDefault

WorkSchedulerControl_GetBatchPeriod_Response

generated

NameTypeDescriptionDefault
batch_period zx/duration No default

WorkSchedulerControl_SetBatchPeriod_Response

generated

NameTypeDescriptionDefault

ENUMS

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.

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.

StorageType

Type: uint32

Defined in fuchsia.sys2/storage_decl.fidl

The type of storage offered by this component.

NameValueDescription
DATA 1

General 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

Error

Type: uint32

Defined in fuchsia.sys2/error.fidl

Standard error codes for component framework protocols.

NameValueDescription
INTERNAL 1

Component manager encountered an otherwise unspecified error while performing the operation.

INVALID_ARGUMENTS 2

At least one argument had an invalid format.

UNSUPPORTED 3

The feature is not yet supported.

INSTANCE_NOT_FOUND 4

The component instance was not found.

INSTANCE_ALREADY_EXISTS 5

The component instance already exists.

INSTANCE_CANNOT_START 6

The component instance could not be started.

INSTANCE_CANNOT_RESOLVE 7

Failed to resolve the component's declaration.

COLLECTION_NOT_FOUND 8

The component collection was not found.

NO_SPACE 9

There was insufficient space to perform the operation.

TABLES

ChildDecl

Defined in fuchsia.sys2/child_decl.fidl

Statically declares a child component instance.

OrdinalNameTypeDescription
1 name child_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 string[4096]

The child component's URL.

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

3 startup StartupMode

The startup mode for the component instance.

CollectionDecl

Defined in fuchsia.sys2/collection_decl.fidl

Statically declares a component instance collection.

OrdinalNameTypeDescription
1 name collection_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.

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 facets fuchsia.data/Dictionary

Additional metadata about 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 storage vector<StorageDecl>

List of storage capabilities created by this component. Storage capabilities can be offered to children.

9 runners vector<RunnerDecl>

List of runner capabilities created by this component. Runner capabilities can be exposed to the parent's realm or offered to children.

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_path string[1024]

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

Must be an absolute path starting with /.

3 target Ref

The destination to which the service 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 /.

ExposeServiceProtocolDecl

Defined in fuchsia.sys2/expose_decl.fidl

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

A legacy service is a service with a single instance, provided by a single FIDL 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 legacy service, by which it was presented to this component.

3 target Ref

The destination to which the legacy service 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 /.

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 rights to expose this directory with, required iff source == self.

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 runner_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 runner_name

The name by which the capability is being exposed.

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 realm, self, or child.

2 source_path string[1024]

Path identifying the service being offered.

Must be an absolute path starting with /.

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 /.

OfferServiceProtocolDecl

Defined in fuchsia.sys2/offer_decl.fidl

Declares a legacy 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.

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

OrdinalNameTypeDescription
1 source Ref

The provider of the capability relative to the component itself. Must be realm, 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 /.

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 realm, 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 rights this directory should be offered with, required iff source == self.

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 realm or storage.

3 target Ref

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

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 realm, self, or child.

2 source_name runner_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 runner_name

Name under which the capability is being offered.

RunnerDecl

Defined in fuchsia.sys2/runner_decl.fidl

Declares a runner capability backed by a service.

OrdinalNameTypeDescription
1 name runner_name

The name of this runner.

2 source Ref

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

3 source_path string[1024]

The path of the capability within the specified source.

StorageDecl

Defined in fuchsia.sys2/storage_decl.fidl

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

OrdinalNameTypeDescription
1 name string[100]

The name of this storage

2 source Ref

The provider of the underlying directory capability relative to the component itself. Must be realm, 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.

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 |realm| or |framework|.

2 source_path string[1024]

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

Must be an absolute path starting with /.

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 /.

UseServiceProtocolDecl

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 |realm| 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 /.

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 |realm| 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.

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 /.

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 runner_name

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

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.

ComponentStartInfo

Defined in fuchsia.sys2/component_runner.fidl

Parameters for starting a new component instance.

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 program fuchsia.data/Dictionary

The component's program declaration. This information originates from ComponentDecl.program.

3 ns ComponentNamespace

The namespace to provide to the component instance.

4 outgoing_dir request<fuchsia.io/Directory>

The directory this component serves.

5 runtime_dir request<fuchsia.io/Directory>

The directory served by the runner to present runtime information about the component.

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.

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

Realm_BindChild_Result

generated

NameTypeDescription
response Realm_BindChild_Response
err Error

Realm_CreateChild_Result

generated

NameTypeDescription
response Realm_CreateChild_Response
err Error

Realm_DestroyChild_Result

generated

NameTypeDescription
response Realm_DestroyChild_Response
err Error

Realm_ListChildren_Result

generated

NameTypeDescription
response Realm_ListChildren_Response
err Error

WorkScheduler_ScheduleWork_Result

generated

NameTypeDescription
response WorkScheduler_ScheduleWork_Response
err Error

WorkScheduler_CancelWork_Result

generated

NameTypeDescription
response WorkScheduler_CancelWork_Response
err Error

Worker_DoWork_Result

generated

NameTypeDescription
response Worker_DoWork_Response
err Error

WorkSchedulerControl_GetBatchPeriod_Result

generated

NameTypeDescription
response WorkSchedulerControl_GetBatchPeriod_Response
err Error

WorkSchedulerControl_SetBatchPeriod_Result

generated

NameTypeDescription
response WorkSchedulerControl_SetBatchPeriod_Response
err Error

XUNIONS

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
service_protocol ExposeServiceProtocolDecl
directory ExposeDirectoryDecl
runner ExposeRunnerDecl

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
service_protocol OfferServiceProtocolDecl
directory OfferDirectoryDecl
storage OfferStorageDecl
runner OfferRunnerDecl

Ref

Defined in fuchsia.sys2/relative_refs.fidl

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

NameTypeDescription
realm RealmRef
self SelfRef
child ChildRef
collection CollectionRef
storage StorageRef
framework FrameworkRef

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
service_protocol UseServiceProtocolDecl
directory UseDirectoryDecl
storage UseStorageDecl
runner UseRunnerDecl

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.

CONSTANTS

NameValueTypeDescription
MAX_FACET_NAME_LENGTH 100 uint32
MAX_CHILD_NAME_LENGTH 100 uint32
MAX_COLLECTION_NAME_LENGTH 100 uint32
MAX_RUNNER_NAME_LENGTH 100 uint32
MAX_STORAGE_NAME_LENGTH 100 uint32
MAX_PATH_LENGTH 1024 uint32
MAX_URL_LENGTH 4096 uint32
MAX_MONIKER_LENGTH 4096 uint32
ERR_COMPONENT_DIED 1 int32

Error produced when a component terminates unexpected.

MAX_WORK_ID_LENGTH 100 uint32

TYPE ALIASES

NameValueDescription
child_name string[MAX_CHILD_NAME_LENGTH]
collection_name string[MAX_COLLECTION_NAME_LENGTH]
runner_name string[MAX_RUNNER_NAME_LENGTH]
WorkId string[MAX_WORK_ID_LENGTH]