The purpose of this document is to provide short definitions for a collection of technical terms used in Fuchsia.
To add a glossary definition, see Adding glossary entries.
Terms
Glossary area
-
ABI
The binary-level interface to the system.
Full description
The Application Binary Interface(ABI) for a system is the binary-level interface to the system. Typically you don't write software that uses the system ABI directly. Instead, you write software against the system API. When the software is compiled, the binary artifact created by the compiler interfaces with the system through the ABI. Changes to the system ABI may require you to recompile your source code to account for the changes in the ABI.
-
ABR
Fuchsia uses a bootloader with two partitions A and B, and a recovery slot.
Full description
Fuchsia uses a bootloader with two partitions A and B, and a recovery slot. This logic is not required to boot Zircon or run a basic Fuchsia system, but it is required to take full advantage of Fuchsia's over-the-air (OTA) update features.
The term slot is used to refer to a set of partitions that update together. If an update fails, the partitions fall back together. This works because there are two copies of each partition on disk. By convention, the slots used for normal updates are denoted A and B, and the corresponding partitions are labeled with a suffix of "_a" or "_b". The slot used for recovery is denoted R which is chosen when neither A nor B is bootable.
Related links Information related to ABR
Guides related to ABR
-
Action key
Keys that have a distinct special action.
Full description
Keys corresponding to specific actions, such as "display brightness increment", "display brightness decrement" etc, which are specifically named in the USB HID usage tables.
-
Assembly Config
The JSON file that the product owner writes in order to specify (1) lists of product-specific packages, components, drivers, and configuration and (2) platform features and configuration. This is the configuration that encapsulates both a Product Config and a Platform Config.
Related links Information related to Assembly Config
-
Assembly Input Bundle (AIB)
An Assembly Input Bundle is a self-contained directory of artifacts with a manifest file in the root describing what is included. This bundle is used internally by the Software Assembly tool. Fuchsia is composed of many packages, components, drivers, and configuration data. These elements are grouped together inside Assembly Input Bundles (AIBs) for inclusion together into the assembled product. All AIBs other than the Legacy AIBs are "platform AIBs".
Related links Information related to Assembly Input Bundle (AIB)
-
Banjo
Language for definition protocols that communicate between drivers.
Full description
Banjo is a language for defining protocols that are used to communicate between drivers. It is different from FIDL in that it specifies an ABI for drivers to use to call into each other, rather than an IPC protocol.
-
Bind language
The language used to write bind libraries and bind rules in a static file.
Related links Information related to Bind language
Guides related to Bind language
-
Bind library
A bind library is a mechanism used to define node properties. The node properties can be assigned to nodes by their parent drivers or used in the bind rules. Bind libraries are defined through the bind language.
Related links Information related to Bind library
Guides related to Bind library
-
Bind rules
Bind rules are a defined set of conditions provided by a driver that must be satisfied in order for the driver to match to a node. The conditions are evaluated against node properties. Formerly known as a bind program.
Related links Information related to Bind rules
Guides related to Bind rules
-
Board
A board is a complete computer hardware platform with a CPU, memory, peripherals, and so on.
Full description
A board is a complete computer hardware platform with a CPU, memory, peripherals, and so on. It defines the architecture that the build produces for, and key features of the device upon which the build is intended to run. This configuration affects what drivers are included, and may also influence device-specific kernel parameters.
Related links Information related to Board
-
Board driver
A board driver is a specialized driver that contains the platform-specific information needed by the platform bus and controls what other drivers will be loaded by the platform bus.
Full description
A board driver is a specialized driver that contains the platform-specific information needed by the platform bus and controls what other drivers will be loaded by the platform bus. The board driver is the first driver loaded and parented by the platform bus.
Related links Information related to Board driver
-
bootfs
The boot filesystem that contains the files needed early in the boot process.
Full description
The bootfs RAM disk contains the files needed early in the boot process when no other filesystems are available. It is part of the zircon boot image, and is decompressed and served by bootsvc. After the early boot process is complete, the bootfs is mounted at `/boot`.
-
bootsvc
Provides a filesystem service for the bootfs and a loader service.
Full description
The second process started in Fuchsia. It provides a filesystem service for the bootfs and a loader service that loads programs from the same bootfs. After starting these services, it loads the third program, which defaults to `component_manager`.
-
Base driver
A driver that is available in the Fuchsia image and not critical for bootstrapping the system. These drivers are loaded from the system's storage, so they need to be loaded after the boot drivers have enabled storage (for example, USB drivers, networking drivers).
Full description
A driver that is available in the Fuchsia image and not critical for bootstrapping the system. These drivers are loaded from the system's storage, so they need to be loaded after the boot drivers have enabled storage (for example, USB drivers, networking drivers). Base drivers reside in the base packages.
-
Boot driver
A driver that exists in the Zircon Boot Image (ZBI) and is needed for bootstrapping the system (for example, storage drivers).
Full description
A driver that exists in the Zircon Boot Image (ZBI) and is needed for bootstrapping the system (for example, storage drivers). The Zircon Boot Image (ZBI) has limited space for such drivers, a constraint that does not generally apply to base drivers.
-
Bringup
The process of getting Fuchsia to run on a new board.
Full description
Bringup is the catchall term for all of the engineering work related to getting Fuchsia to run on a new board. The term "bringup" should not be used for situations where Fuchsia support for the board already exists. For example, flashing a Fuchsia image onto a VIM3 is not bringup. The original engineering work of implementing the drivers and so on so that Fuchsia can run on the VIM3 is bringup.
Related links Information related to Bringup
-
Bus driver
A driver for a device that has multiple children.
Full description
A driver for a device that has multiple children. For example, hardware interfaces like PCI specify a topology in which a single controller is used to interface with multiple devices connected to it. In that situation, the driver for the controller would be a bus driver. A bus driver does not necessarily correspond to a physical bus.
-
Cache directory
A private directory, that may be cleared by the system at any time, within which a component instance may cache data local to the device.
Full description
A private directory, that may be cleared by the system at any time, within which a component instance may cache data local to the device. Similar to a data directory, except that the contents of a cache directory may be cleared by the system at any time, such as when the device is under storage pressure. Canonically mapped to
/cache
in the component instance’s namespace.
Related links Information related to Cache directory
-
Capability
A value that combines an object reference and a set of rights.
Full description
A capability is a value that combines an object reference and a set of rights. When a program has a capability it is conferred the privilege to perform certain actions using that capability. A handle is a common example for a capability.
Related links Information related to Capability
-
Capability routing
A way for one component instance to give capabilities to another component instance.
Full description
A way for one component instance to give capabilities to another instance over the component instance tree. Component manifests define how routing takes place, with syntax for service capabilities, directory capabilities, and storage capabilities.
Related links Information related to Capability routing
-
Channel
An IPC primitive provided by Zircon.
Full description
A channel is an IPC primitive provided by Zircon. It is a bidirectional, datagram-like transport that can transfer small messages including handles. FIDL protocols typically use channels as their underlying transport.
Related links Information related to Channel
-
Character key
A key that sends characters to the computer.
Full description
A key that sends characters to the computer. This definition does not specifically account for the effect of key composition and dead keys, which are present on certain keyboard layouts, but is operational enough for effective use.
-
Child component instance
A child component instance is a component instance that is owned by another instance, the parent.
Related links Information related to Child component instance
-
Child node
A node that receives resources from parent driver(s).
Related links Information related to Child node
-
CIPD
A cloud service for storing and distributing packages. Packages can be arbitrary collections of files, but most often contain prebuilt binaries.
Full description
The Fuchsia project uses CIPD to download, publish, and distribute compiled software such as the Fuchsia SDK. Jiri has built-in support for versioning and downloading CIPD packages.
Related links Information related to CIPD
-
colocate
A driver is colocated with another driver when they share the same driver host.
Related links Information related to colocate
-
Compat driver
A Driver Framework v2 (DFv2) driver that wraps a Driver Framework v1 (DFv1) driver so that the DFv1 driver can run in a DFv2 environment.
-
Component
Components are the common abstraction that defines how all software is described, sandboxed, and executed on a Fuchsia system.
Full description
Components are the common abstraction that defines how all software (regardless of source, programming language, or runtime) is described, sandboxed, and executed on a Fuchsia system. Components may specify a binary executable, and may be composed of multiple child components.
Related links Information related to Component
-
Component collection
A node in the component instance tree whose children are dynamically instantiated rather than statically defined in a component manifest.
Full description
A node in the component instance tree whose children are dynamically instantiated rather than statically defined in a component manifest.
Related links Information related to Component collection
-
Component configuration
The process of tailoring a component instance to the context it's running in.
Full description
The process of tailoring a component instance to the context it's running in. This includes defining and delivering the data that a component can use to understand and adapt to the context in which it was launched.
Related links Information related to Component configuration
-
Component configuration data
Data supplied to a component instance that it can use to understand and adapt to the context in which it was launched.
Full description
Data supplied to a component instance that it can use to understand and adapt to the context in which it was launched.
Related links Information related to Component configuration data
-
Component declaration
A FIDL table that includes information about a component.
Full description
A component declaration is a fidl table (fuchsia.sys2.ComponentDecl) that includes information about a component’s runtime configuration, capabilities it exposes, offers, and uses.
Related links Information related to Component declaration
-
Component framework
An application framework for declaring and managing components, consisting of build tools, APIs, conventions, and system services.
Related links Information related to Component framework
-
Component instance
A specific runtime instantiation of a particular component at a specific location in the component instance tree at runtime.
Related links Information related to Component instance
-
Component instance tree
A tree structure that represents the runtime state of parent-child relationships component instances.
Full description
A tree structure that represents the runtime state of parent-child relationships between component instances. If instance A launches instance B then in the tree A will be the parent of B. The component instance tree is used to route capabilities such that parents can offer capabilities to their children to use, and children can expose capabilities for their parents to expose to their parents or offer to other children.
Related links Information related to Component instance tree
-
Component manager
A system service that lets component instances manage their children and capability routing between them, thus implementing the component instancetree.
Full description
A system service that lets component instances manage their children and capability routing between them, thus implementing the component instancetree. Component manager is the system service that implements the component runtime.
Related links Information related to Component manager
-
Component manifest
A binary file ending in
.cm
that encodes a component declaration, often distributed as part of a package. The term is sometimes used interchangeably with component manifest source.Full description
A binary file ending in
.cm
that encodes a component declaration, often distributed as part of a package. Thecmc
tool generates a component manifest from a component manifest source file.
Related links Information related to Component manifest
-
Component manifest source
A JSON5 file with a
.cml
extension that describes a component's declaration, and is compiled by [cmc] to produce a [component manifest].Full description
A JSON5 file with a
.cml
extension that describes a component's declaration, and is compiled by [cmc] to produce a [component manifest].The file contains information about a [component]'s executable and runtime configuration (if any), any child [component]s, as well as [capability routing] between itself, its parent, and its children.
Related links Information related to Component manifest source
-
Component manifest facet
Additional component manifest metadata.
Full description
Additional metadata that is carried in a component manifest. This is an extension point to the framework.
Related links Information related to Component manifest facet
-
Component instance identifier
A unique, stable identifer for a component instance.
Full description
A unique, stable identifer for a component instance. The instance id is the canonical identifier for a component instance. The component runtime uses this to key a component's persistent resources, if it has any. While a component instance's moniker may change, its instance ID remains the same.
Instance IDs are assigned to component instances using a component ID index.
Related links Information related to Component instance identifier
-
Component topology
Collective term for the component instance tree and the capability routes over that tree.
Full description
The component topology describes the set of relationships between component instances in a Fuchsia system. It consists of the parent-child relationships of the component instance tree as well as the capability routes over that tree.
Related links Information related to Component topology
-
Component URL
URL that identifies a component's declaration and package.
Full description
URL that identifies a component's declaration and package, most often used when instantiating a component. Example:
fuchsia-pkg://fuchsia.com/stash#meta/stash_secure.cm
.
Related links Information related to Component URL
-
Composite driver
A driver that only binds to a composite node. A driver can be defined as a composite via its bind rules.
Related links Information related to Composite driver
Guides related to Composite driver
-
Composite node
A node with multiple parents. The driver that is bound to the composite node can access the combined resources provided by the parent drivers. Formerly known as a composite device.
Related links Information related to Composite node
-
Composite node specification
A composite node specification is a mechanism for creating a composite node. It describe the nodes that can parent the composite node and the driver that can bind to the composite node.
Related links Information related to Composite node specification
-
Configuration Capability
A capability that provides a data value that a component can use for configuration. A component using a configuration capability will be able to read the value in it's structured configuration.
Related links Information related to Configuration Capability
-
Concurrent device driver
A hardware driver that supports multiple concurrent operations.
Full description
A hardware driver that supports multiple concurrent operations. This may be, for example, through a hardware command queue or multiple device channels. From the perspective of the core driver, the device has multiple pending operations, each of which completes or fails independently. If the driven device can internally parallelize an operation, but can only have one operation outstanding at a time, it may be better implemented with a sequential device driver.
-
Content
Graphical content containing a bitmap that is attached to a Transform in Flatland. Image, Viewport and FilledRect are types of Contents.
Full description
Graphical content containing a bitmap that is attached to a Transform in Flatland. Image, Viewport and FilledRect are types of Contents. Each Transform can have, at most, one attached Content. A Content inherits all of the attributes from its attached Transform.
-
Core driver
A driver that implements the application-facing RPC interface for a class of drivers.
Full description
A driver that implements the application-facing RPC interface for a class of drivers (e.g. block drivers, ethernet drivers). It is hardware-agnostic. It communicates with a hardware driver through banjo to service its requests.
-
Core-sdk tarball
The artifact containing Fuchsia APIs, Fuchsia tools, binaries, and metadata. Used to access the Fuchsia tools, or the Fuchsia APIs.
-
Data directory
A private directory within which a component instance may store data local to the device.
Full description
A private directory within which a component instance may store data local to the device, canonically mapped to
/data
in the component instance’s namespace.
-
Device pixel ratio
The ratio between the display's physical pixels and the display's device independent pixels.
Full description
The ratio between the display's physical pixels and the display's device independent pixels. Each logical or device independent pixel is displayed on screen by one or more physical pixels, as determined by this scale.
Related links Information related to Device pixel ratio
-
Dictionary
A capability that bundles multiple capabilities together.
Full description
A capability that bundles multiple capabilities together. A dictionary is a key-value data collection, where the key is a capability name string and the value is a capability. The value itself may be another dictionary, which can be used to achieve directory-like nesting.
Related links Information related to Dictionary
-
Directory capability
A capability that permits access to a filesystem directory by adding it to the namespace of the component instance that uses it.
Full description
A capability that permits access to a filesystem directory by adding it to the namespace of the component instance that uses it. If multiple component instances are offered the same directory capability then they will have access to the same underlying filesystem directory.
Related links Information related to Directory capability
-
Dispatcher
A dispatcher is an interface for scheduling asynchronous operations.
Full description
A dispatcher, when assigned to a driver, coordinates and performs asynchronous operations for the driver. A dispatcher mainly handles two tasks: it schedules asynchronous work to run on threads in a driver host and it actually runs the work on those threads on behalf of a driver.
Related links Information related to Dispatcher
Guides related to Dispatcher
-
Domain object
The corresponding class or data type in a target language (such as C++) used to represent a FIDL type. A domain object usually models an entity in a problem domain space.
-
Driver
A driver is a dynamic shared library that enables and controls one or more nodes.
Full description
A driver is a dynamic shared library that enables and controls one or more nodes. Drivers are loaded into driver hosts by the driver manager.
Related links Information related to Driver
-
Driver binding
The process where a driver is matched to a node, started, and then handed the node’s resources.
Full description
The process where a driver is matched to a node, started, and then handed the node’s resources. A driver bound to a node can access the node's resources and create child nodes.
Related links Guides related to Driver binding
-
Driver host
A process containing one or more device drivers.
Full description
A process containing one or more device drivers. They are created by the Driver Manager, as needed, to provide isolation between drivers for stability and security.
-
Driver index
The driver index is a Fuchsia component that is responsible for keeping track of all available drivers.
-
Driver manager
The Driver Manager (formerly devmgr or devcoordinator) is responsible for enumerating, loading, and managing the life cycle of device drivers.
-
Driver matching
The process where the Driver Framework finds a driver and assigns it to a node. A driver that’s assigned to the node is considered as a matched driver.
Related links Guides related to Driver matching
-
Driver runtime
The driver runtime is an in-process runtime modeled after the Zircon kernel that enables colocated drivers to communicate with each other locally. It is much more efficient than communicating using Zircon channels.
Full description
The driver runtime is an in-process runtime modeled after the Zircon kernel that enables colocated drivers to communicate with each other locally. It is much more efficient than communicating using Zircon channels. It also provides a set of primitives mirroring Zircon kernel objects and a threading model for drivers which allows for the sharing of Zircon threads.
Related links Information related to Driver runtime
-
Driver transport
The driver transport is a transport system in FIDL that's implemented on top of channels.
Related links Information related to Driver transport
-
Environment
A container for a set of components.
Full description
A container for a set of components, which provides a way to manage their lifecycle and provision services for them. All components in an environment receive access to (a subset of) the environment's services.
-
Ephemeral driver
A driver that is not included in the board configuration. These drivers are loaded from the universe package set<> at runtime.
-
Escher
Graphics library for compositing user interface content.
Full description
Graphics library for compositing user interface content. Its design is inspired by modern real-time and physically based rendering techniques though Fuchsia anticipates most of the content it renders to have non-realistic or stylized qualities suitable for user interfaces.
-
Experimental-sdk tarball
The artifact containing experimental Fuchsia APIs.
-
expose
A keyword for a component instance to indicate that it is making a capability available to its parent to route.
Full description
A component instance may use the
expose
manifest keyword to indicate that it is making a capability available to its parent to route. Parents may offer a capability exposed by any of their children to their other children or to their parent, but they cannot use it themselves in order to avoid dependency cycles.
Related links Information related to expose
-
Exposed directory
A file system directory that contains the set of exposed capabilities for a component.
Full description
A file system directory provided by component manager that contains the set of capabilities exposed by a component to its parent.
Related links Information related to Exposed directory
-
FAR
The Fuchsia Archive Format is a container for files to be used by Zircon and Fuchsia.
Related links Information related to FAR
-
FBL
FBL is the Fuchsia Base Library, which is shared between kernel and userspace.
Related links Information related to FBL
-
FDF
The Fuchsia driver framework is the documentation, APIs, and ABIs necessary to build Zircon device drivers.
Full description
The Fuchsia driver framework is the documentation, APIs, and ABIs necessary to build Zircon device drivers. Device drivers are implemented as ELF shared libraries loaded by Zircon's driver manager.
Related links Information related to FDF
-
fdio
The core Fuchsia method for talking about files and other I/O primitives are FIDL protocols over Zircon channels.
Full description
It provides the implementation of posix-style open(), close(), read(), write(), select(), poll(), etc, against the RemoteIO RPC protocol. These APIs are return- not-supported stubs in libc, and linking against libfdio overrides these stubs with functional implementations. Sometimes referred to as "POSIX Lite".
Related links Information related to fdio
-
ffx
Fuchsia's primary tool for working with a Fuchsia system and Fuchsia tools. Example use cases include stream logs from a device and start an emulator.
Related links Information related to ffx
-
FHO
Fuchsia Host Objects is a set of APIs connecting `ffx` with subtools.
Full description
Fuchsia Host Objects is a set of APIs connecting `ffx` with subtools. It acts as a compatibility layer between the program and a device or virtual machine running Fuchsia, allowing the tool to ignore all the setup necessary to connect to the device, establish FIDL channels to services on the device, and log useful information about the interactions.
Related links Information related to FHO
-
FilledRect
A solid color rectangle can be attached to a Transform in Flatland.
Full description
A solid color rectangle can be attached to a Transform in Flatland. FilledRect is type of a Content.
-
FIDL
The Fuchsia Interface Definition Language (FIDL) is a language for defining protocols.
Full description
The Fuchsia Interface Definition Language (FIDL) is a language for defining protocols that are typically used over channels. FIDL is programming language agnostic and has bindings for many popular languages, including C, C++, Dart, Go, and Rust. This approach lets system components written in a variety of languages interact seamlessly.
Related links Guides related to FIDL
-
Flatland
A FIDL protocol that allows sending 2D graphical content to Scenic.
Full description
The 2D composition API for Fuchsia graphics clients. Flatland clients can construct their scene graph and send to Scenic to compose into the shared scene graph that is submitted to the display.
-
Fragment
A fragment is a node that composes a Driver Framework v1 composite node. Each fragment binds to a fragment driver which provides protocols and metadata to the composite node. Only used in Driver Framework v1.
Related links Information related to Fragment
-
FTP
Deprecated, replaced by RFC. An FTP is the way developers can suggest changes to FIDL.
Full description
An FTP is the way developers can suggest changes to FIDL. After being written, an FTP goes through a formal review process where it is either accepted or rejected.
Related links Information related to FTP
Guides related to FTP
-
Fuchsia API surface
The Fuchsia API Surface is the combination of the Fuchsia system interface and the client libraries included in the Fuchsia IDK.
-
FEMU
The Fuchsia emulator (FEMU) is the default emulator for Fuchsia.
Full description
The Fuchsia emulator (FEMU) is the default emulator for Fuchsia. It allows you to test Fuchsia components and applications without needing a Fuchsia device. FEMU is based on the Android Emulator (AEMU), which is a fork of QEMU.
Related links Information related to FEMU
-
fuchsia-pkg URL
A scheme that refers to a repository, a package, or a package resource.
Full description
A scheme that refers to a repository, a package, or a package resource. The syntax is
fuchsia-pkg://
]`. For example, for the component[/ ][# ] test_manager.cm
published under the packagetest_manager
'smeta
directory, from thefuchsia.com
repository, its URL isfuchsia-pkg://fuchsia.com/test_manager#meta/test_manager.cm
.
Related links Information related to fuchsia-pkg URL
-
Fuchsia extension for VS Code
An extension for Visual Studio Code (VsCode) supporting common developer workflows for Fuchsia, like environment set up, editing, debugging, and testing.
Related links Information related to Fuchsia extension for VS Code
-
Fuchsia IDK
The Fuchsia IDK contains a small set of libraries and tools required to start building and running programs that target Fuchsia. The contents of the IDK represent the most basic contract that the Fuchsia platform developers offer to prospective developers.
-
Fuchsia provided developer artifacts
Set of deliverables from the Fuchsia Authors that make it easier to develop components against Fuchsia. Some artifacts include: Fuchsia SDK, Fuchsia tools, components, and editor extensions.
-
Fuchsia SDK
The Fuchsia SDK is the set of APIs, tools, build system integrations, and language integration artifacts produced by Fuchsia that enable the production of software and products for and with Fuchsia.
-
Fuchsia SDK with Bazel
An integration of the Bazel build system with the Fuchsia SDK. Enables developers to compile, run, and test their software with Bazel. Supports C++ through a bundled Clang toolchain.
-
Fuchsia System Interface
The binary interface that the Fuchsia operating system presents to software it runs.
Full description
The binary interface that the Fuchsia operating system presents to software it runs. For example, the entry points into the vDSO as well as all the FIDL protocols are part of the Fuchsia System Interface.
Related links Information related to Fuchsia System Interface
-
Fuchsia tools
Programs designed to help work with Fuchsia. For example, tools to compile FIDL IDL (interactive data language), or tools to get logs from a device.
-
Fuchsia Volume Manager
Fuchsia Volume Manager (FVM) is a partition manager providing dynamically allocated groups of blocks known as slices into a virtual block address space.
Full description
Fuchsia Volume Manager (FVM) is a partition manager providing dynamically allocated groups of blocks known as slices into a virtual block address space. The FVM partitions provide a block interface enabling filesystems to interact with it in a manner largely consistent with a regular block device.
Related links Information related to Fuchsia Volume Manager
-
Function key
The common name for the keys F1, F2, F3, ...
Full description
The common name for the keys F1, F2, F3, ...
-
GN
GN is a meta-build system that generates build files.
Full description
GN is a meta-build system that generates build files so that Fuchsia can be built with Ninja. GN is fast and comes with solid tools to manage and explore dependencies. GN files, named `BUILD.gn`, are located all over the repository.
Related links Information related to GN
-
GraphicalPresenter
A FIDL protocol that organizes and presents graphical views.
Full description
A FIDL protocol that organizes and presents graphical views. The presented views can be annotated with element annotations to communicate presentation properties to the
GraphicalPresenter
. This protocol is used, for example, when a window manager accompanying a session component written in Rust wants to delegate presentation logic to a child component written in Flutter, or when a window manager delegates the presentation of element views launched by the session component to a child component that implementsGraphicalPresenter
.
Related links Information related to GraphicalPresenter
-
Handle
A Handle is how a userspace process refers to a kernel object.
Full description
A Handle is how a userspace process refers to a kernel object. They can be passed to other processes over channels.
Related links Information related to Handle
-
Hardware driver
A driver that controls a device.
Full description
A driver that controls a device. It receives requests from its core driver and translates them into hardware-specific operations. Hardware drivers strive to be as thin as possible. They do not support RPC interfaces, ideally have no local worker threads (though that is not a strict requirement), and some will have interrupt handling threads. They may be further classified into sequential device drivers and concurrent device drivers.
-
Image
A bitmap containing pixels that can be attached to a Transform in Flatland.
Full description
A bitmap containing pixels that can be attached to a Transform in Flatland. Image is type of a Content.
-
Images Config
This configuration file that tells the Software Assembly tooling which images to generate and how to generate them.
Full description
The Images Config is an internal contract between the two subsystems of Software Assembly -- Product Assembly and Image Assembly. The structure and contents of this file is subject to rapid iteration, as it is consumed only by the Software Assembly team.
Related links Guides related to Images Config
-
In-tree
Relating to or describing an action to be performed inside a Fuchsia checkout.
Full description
For instance, checking out the Fuchsia source code is a prerequisite for performing any in-tree development. The `fx build` command is used to operate the in-tree build system.
Related links Information related to In-tree
Guides related to In-tree
-
Input Method Editor
Software for sophisticated text input.
Full description
From MSDN: "A software component that enables a user to input text in a language that can not be represented easily on a standard keyboard."
Related links Information related to Input Method Editor
- Input Method Editor API
-
Input Method Editor API
API to implement IMEs
Full description
A FIDL API offered by the keyboard subsystem for integrating with built-in or custom made input method editors.
Related links Information related to Input Method Editor API
- Input Method Editor
-
Input Pipeline
Fuchsia system component for handling input-related events.
Full description
A library and component for processing of input-related events on Fuchsia in a sequential manner. The input pipeline mediates between driver-level input and "UI Framework" facing services. One of the input pipeline's tasks is to apply a keymap by attaching a key meaning to a key event.
Related links Information related to Input Pipeline
- key event
- key meaning
- keymap
- RFC-0096
-
InputDeviceBinding
A Rust trait in the input pipeline client library.
Full description
Represents a connection to a physical input device (e.g. mouse, keyboard) in an input pipeline. An
InputDeviceBinding
does the following:- Connects to an
InputReport
file located at/dev/class/input-report/XXX
. - Generates
InputEvent
's from theDeviceDescriptor
and incominginputReport
.
The input pipeline creates and owns
InputDeviceBinding
`s as new input peripherals are connected to a device.
Related links Information related to InputDeviceBinding
- Connects to an
-
InputDeviceDescriptor
Describes the ranges of values a particular input device can generate.
Full description
A property of the Rust struct
InputReport
of typeenum InputDeviceDescriptor
and a FIDL table. For example, aInputDeviceDescriptor
contains the keys available on the keyboard, and aInputDeviceDescriptor::Touch
contains the maximum number of touch contacts and the range ofx-
andy-
values each contact can take on.
Related links Information related to InputDeviceDescriptor
-
InputDeviceEvent
Represents an input event from an input device.
Full description
A property of the Rust struct
InputEvent
.InputDeviceEvent
`s contain more context than the rawInputReport
`s they are parsed from. For example,InputDeviceEvent::Keyboard
contains all the pressed keys, as well as the key's phase (pressed, released, etc.).
Related links Information related to InputDeviceEvent
-
InputEvent
An event from an input device containing context (a
InputDeviceDescriptor
and state (e.g. phase and location of a button press). The input pipeline generatesInputEvent
`s from hardware signals.Full description
A Rust struct in the input pipeline client library.
Related links Information related to InputEvent
-
InputHandler
Represents a client ofInputEvent
in an input pipeline. When anInputHandler
receives anInputEvent
, it does at least one of the following:- Forwards the
InputEvent
to the relevant client component. - Outputs a vector of
InputEvent
's for the nextInputHandler
to process.
Full description
A Rust trait in the input pipeline client library.
Related links Information related to InputHandler
- Forwards the
-
InputReport
A stateless representation of an event from a physical input device.
Full description
A FIDL struct. Zircon generates
InputReport
`s from HID Reports.
Related links Information related to InputReport
-
Jiri
Jiri is a tool for multi-repo development.
Full description
It is used to checkout the Fuchsia codebase. It supports various subcommands, which makes it easy for developers to manage their local checkouts.
Related links Information related to Jiri
-
Job
A kernel object that groups a set of related processes, their child processes, and their jobs (if any).
Full description
Every process in the system belongs to a job and all jobs form a single rooted tree.
Related links Information related to Job
-
Kernel object
A kernel object is a kernel data structure that is used to regulate access to system resources such as memory, I/O, processor time and access to other processes.
Full description
Userspace can only reference kernel objects through handles.
Related links Information related to Kernel object
-
Key
A switch that can be pressed or released.
Full description
A switch that can be pressed or released. Usually, but not always, it has a keycap with one or more symbols written on it. It is traditionally a mechanical, or electromechanical device, but modern input modes have seen purely software key implementations, as a user-interface element coupled with a touch-screen, or a computer mouse for actuation. ISO/IEC 9995-1:2009 does not explicitly define the term
key , but notes that a keyboard has keys that can be actuated. We will use the term physical key to emphasize a key on a physical keyboard where otherwise confusion would arise.
Related links Information related to Key
- keyboard
- keycap
- physical key
-
Key actuation
Physical action to cause a key effect.
Full description
Doing something to a key to cause a key effect. For example, pressing a key. Actuation is probably a better term to use in general, since while each press is an actuation, not every key actuation has to be a key press. Some keys may be actuated by a tap, or a throw switch, or a twist etc. It's OK to use "key press" when talking about pressable keys in the narrow sense - such as on a standard PC keyboard. Prefer "key actuation" in formal contexts, or where precision is important.
Related links Information related to Key actuation
- Physical key
- Key effect
-
Key binding
A key chord and its key effect, together.
Full description
A pair of a key chord and a key effect. For example pressing "Ctrl+O" causes the "Open File" dialog box to be shown.
Related links Information related to Key binding
- Key actuation
- Key chord
- Key effect
-
Key event
A message that reports a state change for a key.
Full description
A message reporting a state change associated with a single key. "Key 'A' has just been pressed" is a representation of a key event. On Fuchsia, a key event can only ever be delivered to a View that is in focus. This feature ensures that potentially sensitive keyboard input is always delivered only to the View that is permitted to receive it.
Related links Information related to Key event
- Keyboard
- Physical key
- View
-
Key chord
One or more simultaneous key actuations.
Full description
One or more key actuations that happen at the same time. It may be impossible to actuate a specific key chord without actuating other key chords first. For example, on mechanical keyboards, "Ctrl+Alt+Del" can not be actuated until at least one of "Ctrl", or "Alt" or "Del" is actuated first, as it is physically impossible to press all the three keys at the same time. This is not a universal definition, so expect variations across time periods, operating systems, and schools of thought. For example, KDE uses the term "chord" to mean "key sequence". But this usage seems unusual and not intuitive, as it deviates from the use of "chord" in music, so we don't follow this precedent and recommend against following it.
Related links Information related to Key chord
- Physical key
-
Key consumer
The final destination for the events generated by the keyboard subsystem.
Full description
A client that is the final destination for the events generated by the keyboard subsystem. Prefer the term
consumer toclient , since the keyboard subsystem has multiple collaborators, each of which can be a client in the context of a particular 1:1 collaboration.
Related links Information related to Key consumer
- key event
- keyboard subsystem
-
Key effect
Effect that results when a key is actuated.
Full description
"Effect that results when a key is actuated, depending on the active level, and possibly by the concurrent operation of a qualifier key or keys." (ISO/IEC 9995-1:2009, section 4) Example: the letter "a" appearing on a screen is a key effect, caused by an actuation of the key with the keycap "a" on the keyboard.
Related links Information related to Key effect
- key
- keycap
- keyboard
-
Key event API
An API that provides discrete key events.
Full description
E.g. fuchsia.ui.input3. API that gives access to discrete key events, possibly annotated with information about the currently applicable keyboard layout. At this stage, events corresponding to button presses have not yet been interpreted as language. May be used for limited use-cases such as controlling a game, but most clients should prefer the text edit API.
Related links Information related to Key event API
- Text Edit API
-
Key meaning
An encoding corresponding to the meaning a key event has to the key consumer, with all layout and other mappings that apply.
Full description
An encoding corresponding to the meaning a key event has to the key consumer, with all layout and other mappings that apply.
-
Key sequence
A sequence of key chords.
Full description
A sequence of key chords. Example: in Emacs, pressing C-x followed by C-s saves the current buffer. Since a single key actuation is a key chord (see definition above), every sequence of single key presses such as "hello world" is also a key sequence.
-
Keyboard
A means for input of information by a human being.
Full description
An "[...] intermediate element between a user and an information processing system. The keyboard is specifically intended as a means for input of information by a human being." (ISO/IEC 9995-1:2009, section 5). This link has some examples of computer keyboards.
Related links Information related to Keyboard
- physical keyboard
- virtual keyboard
-
Keyboard subsystem
The set of Fuchsia system services that process keyboard and text related input.
Full description
The set of Fuchsia system services that process keyboard and text related input.
Related links Information related to Keyboard subsystem
- Keyboard
- key event
-
Keyboard map
A map that transforms a sequence of physical keys into a key meaning.
Full description
A map that transforms a sequence of physical keys into a key meaning. Also known as
keymap , orkeyboard layout .
-
Keyboard shortcut
A special kind of key binding.
Full description
A key chord that appears in some key binding. All keyboard shortcuts are chords, but only chords that have a key effect associated with them are shortcuts. On Fuchsia, a distinctive feature of shortcuts is that they can be routed to Views that are not in focus. This allows top-level Views such as the graphical shell, or Accessibility, to install system-wide shortcuts and intercept them instead of yielding them over to child views. Contrast to the behavior of key events, which are only ever delivered to focused views.
-
Keycap symbol
The symbol displayed on top of a key.
Full description
The symbol that is displayed on a key of the physical keyboard, or on the UI item representing a virtual keyboard button that acts as a key. The user's expectation is that actuating a key with a specific symbol on the keycap would, by default, cause that symbol to be communicated to the computer.
Related links Information related to Keycap symbol
- Physical key
- Keyboard
- Key meaning
-
KOID
A Kernel Object Identifier.
Related links Information related to KOID
-
Legacy Assembly Input Bundle
The "Legacy AIB" is an AIB that includes both platform and product artifacts that are specified via the GN build arguments such as base_product_labels and bootfs_labels.
Full description
The Legacy Assembly Input Bundle (LAIB) is an AIB that includes both platform and product artifacts that are specified via the GN build arguments such as base_product_labels and bootfs_labels. Eventually, all the contents of the Legacy AIB will be migrated to platform AIBs or the Assembly Config, and it will be deleted entirely. As of November 2022 (last time this definition was updated), Software Assembly is not feature-complete, and products have not been fully migrated over to using Software Assembly. Many of the current platform features and product code lack the support in Assembly to define them inside the Assembly Config, therefore we invented a temporary solution.
Related links Information related to Legacy Assembly Input Bundle
-
Logical pixels
View's device independent pixels.
Full description
View's device independent pixels. This affects the content layout. Each pixel is displayed on-screen by one or more physical pixels, as determined by device pixel ratio.
Related links Information related to Logical pixels
-
Lock state
Caps lock, num lock, fn lock, scroll lock
Full description
A "state set by actuating a lock key, singly or in combination with a [modifier] key". (ISO/IEC 9995-1:2009, section 4.5) Example lock state keys on PC keyboards are: CapsLock, NumLock, FnLock, ScrollLock.
-
LK
Little Kernel (LK) is the embedded kernel that formed the core of the Zircon Kernel.
Full description
LK is more microcontroller-centric and lacks support for MMUs, userspace, system calls -- features that Zircon added.
Related links Information related to LK
-
Mnemonic
Underlined character in a menu option.
Full description
The underlined character in a menu (Wikipedia). For example, the "F" in "File" which is accessed by pressing "Alt+F". Mnemonics are localized. For example, the "File" menu in an English version of a program has "F" as the mnemonic, so "Alt+F" would be used to access. The Dutch version of the same program would have "Bestanden" as the title of that very same menu, so "Alt+B" would be used for access. Mnemonics differ from shortcuts: in an application an "Open" command could have "O" as mnemonic, but Ctrl+F12 as a shortcut.
-
Modifier key
A key that modifies the effect of other keys.
Full description
A "key whose operation has no immediate effect, but which, for as long as it is actuated, modifies the effects of other keys. A modifier key can be, for example, [...] a control key." (ISO/IEC 9995-1:2009, section 4.17)
-
Moniker
Identifies a specific component instance in the component tree using a topological path.
Full description
A component's moniker is defined as a path to the component instance in the component instance tree.
Related links Information related to Moniker
-
Musl
Fuchsia's standard C library (libc) is based on Musl Libc.
Related links Information related to Musl
-
Namespace
A namespace is the composite hierarchy of files, directories, sockets, services, and other named objects offered to components by their environment.
Related links Information related to Namespace
-
Netstack
An implementation of TCP, UDP, IP, and related networking protocols for Fuchsia.
-
Ninja
The build system executing Fuchsia builds.
Full description
It is a small build system with a strong emphasis on speed. Unlike other systems, Ninja files are not supposed to be manually written but should be generated by other systems, such as GN in Fuchsia.
Related links Information related to Ninja
Guides related to Ninja
-
Node
An entity in the Driver Framework that contains a set of resources that a driver can interact with and a set of properties. A node can be thought of as a hardware or virtual device, or a node can be a part of a hardware device.
Related links Information related to Node
-
Node properties
Node properties are key-value pairs contained in nodes. They are used by bind rules to evaluate whether a driver is matched to the node.
Full description
Node properties are key-value pairs contained in nodes. They are used by bind rules to evaluate whether a driver is matched to the node.The keys can be of integer or string type. The values can be of integer, string, boolean, or enum type.
Related links Information related to Node properties
-
Node topology
The node topology describes the parent-child relationships between nodes in a Fuchsia system. These nodes form a single node topology, expressed in a directed acyclic graph.
Related links Information related to Node topology
-
offer
A keyword for a component instance to route a capability that was exposed to it.
Full description
A component instance may use the
offer
manifest keyword to route a capability that was exposed to it to one of its children (other than the child that exposed it).
Related links Information related to offer
-
Out-of-tree
Relating to or describing an action that can be done outside of a Fuchsia checkout.
Full description
For instance, the IDK allows developing for Fuchsia outside the Fuchsia tree. The SDK tools are available as prebuilts so developers don't need to check out Fuchsia code and build the same tools from source code using Fuchsia's in-tree build system.
Related links Information related to Out-of-tree
Guides related to Out-of-tree
-
Outgoing directory
A file system directory where a component serves protocol handles to capabilities it has exposed.
Full description
A file system directory where a component serves protocol handles to capabilities it has exposed. Other components connect to these exposed capabilities using the handles in this directory.
Related links Information related to Outgoing directory
-
OTA
Over-the-air update.
Full description
Over-the-air updates are changes made to device software (generally the full system, but possibly smaller modules as well) without re-initializing the device's disk via a pave or flash.
Related links Guides related to OTA
-
Package
A unit of software distribution in Fuchsia.
Full description
A unit of software distribution in Fuchsia. It is a collection of files, such as manifests, metadata, zero or more executables (e.g. components), and assets. Individual Fuchsia packages can be identified using fuchsia-pkg URL. Packages can contain other packages (known as Subpackages).
Related links Information related to Package
-
Package URL (Absolute)
Also known as the Fully-Qualified Package URL, a url with the "fuchsia-pkg" scheme(fuchsia-pkg://
representing a fully qualified location for a fuchsia package. For example:/ ) fuchsia-pkg://fuchsia.com/package_name
Related links Information related to Package URL (Absolute)
-
Package URL (Pinned Absolute)
A package URL with a URL parameter "hash" with value that is the merkle hash of the package's meta.far(fuchsia-pkg://
. Pinning a package is the act of uniquely identifying a version of a package, through the hash URL parameter. For example:/ ?hash= ) fuchsia-pkg://fuchsia.com/package_name?hash=716178364a3a0fc8be2850f88a7414f95ed895489bc0f74bc2d60d78d3682c65
Related links Information related to Package URL (Pinned Absolute)
-
Parent component instance
A parent component instance is a component instance that owns other instances called child component instances
Related links Information related to Parent component instance
-
Parent driver
A driver that provides resources from its node to its child nodes.
Related links Information related to Parent driver
-
Paver
A tool in Zircon that installs partition images to internal storage of a device.
Related links Guides related to Paver
-
Physical keyboard
A physical device for text entry.
Full description
A physical device for text entry, which relies on an arrangement of keys.
Related links Information related to Physical keyboard
- physical key
- keycap
- key effect
-
Physical keyboard layout
A positioning of keycaps on a physical keyboard.
Full description
A positioning of keycaps on a physical keyboard.
Related links Information related to Physical keyboard layout
- keycap
- physical keyboard
-
Physical keycode
The numeric code associated with a key, as assigned by Fuchsia.
Full description
The numeric code associated with a key, as assigned by the operating system. In Fuchsia, the physical key codes are unsigned 32-bit integers, derived from the USB HID usage tables. The USB HID usage page number is encoded in the upper 16 bits, and the usage ID within a page is encoded in the lower 16 bits. An encoding of a physical key code used in Fuchsia: see input.Key.
Related links Information related to Physical keycode
- Physical key
- Scan code
-
Physical pixels
Display's physical pixel count.
Full description
Display's physical pixel count. i.e. if there are 4K and FHD variants of the same size display, 4K has 3840x2160 physical pixels and FHD has 1920x1080 physical pixels. However, they may have the same amount of logical pixels so the layout of the content looks the same.
Related links Information related to Physical pixels
-
PID
A process KOID. A KOID that uniquely identifies a process object.
Related links Information related to PID
-
Platform
The platform is the common foundation for products built using Fuchsia.
Full description
Products built using Fuchsia share a common foundation, which is the underlying Fuchsia platform. The platform consists of (a) the core system, including the Zircon kernel, component framework, driver framework, and software delivery subsystem, (b) services that let components share hardware resources, including the connectivity, graphics, media, and local storage subsystems, and (c) widely used components, including the web runtime, POSIX compatibility layers, and diagnostics. Not every product uses every aspect of the platform. For example, products without displays do not use the graphics subsystem. The platform has a versioned, stable binary interface, which developers can target using the Fuchsia SDK.
Related links Information related to Platform
-
Platform device
A node added by the board driver to the platform bus.
Related links Guides related to Platform device
-
Platform bus
The first driver loaded in Fuchsia. The platform bus is the root driver and contains all the resources and privileges necessary to interact with hardware.
Related links Guides related to Platform bus
-
Platform source tree
The open source code hosted on fuchsia.googlesource.com, which comprises the source code for Fuchsia.
Full description
A given Fuchsia system can include additional software from outside the platform source tree by adding the appropriate Fuchsia package.
-
Product
A specification for an assembled system.
Full description
For instance, the Fuchsia platform defines products such as `bringup` and `core` in terms of build-time configuration values and a set of packages to assemble into a system image.
Related links Information related to Product
Guides related to Product
-
Product Bundle
The set of artifacts representing a Fuchsia product which are needed to emulate, flash, boot, or update the product on a Fuchsia target.
Full description
A Product Bundle contains all the images required for an A/B/R Fuchsia target. Artifacts include, but are not limited to, the product image and packages associated with it.
Related links Information related to Product Bundle
Guides related to Product Bundle
-
Product Owner
Whoever defines a product, and is responsible for its provenance and releases.
Related links Information related to Product Owner
-
Process
A kernel object that represents an instance of a program as a set of instructions that are executed by one or more threads together with a collection of capabilities.
Full description
Every process is contained in a job.
Related links Information related to Process
-
Protocol
In FIDL, a protocol groups methods and events to describe how one process interacts with another.
Full description
In the component runtime, protocols are routed to and used by other components as protocol capabilities.
Related links Information related to Protocol
Guides related to Protocol
-
Protocol capability
A capability that permits communicating with a protocol over a channel using a specified FIDL protocol.
Full description
The server end of the channel is held by the component instance that provides the capability. The client end of the channel is given to the component instance that uses the capability.
Related links Information related to Protocol capability
Guides related to Protocol capability
-
Realm
A subtree of component instances in the component instance tree. Acts as a container for component instances and capabilities in the subtree.
Related links Information related to Realm
-
Resource
Resources are contained in nodes and are used by drivers for communication. There are multiple types of resources, including but not limited to: IPC, kernel, memory map, and I/O.
-
Roller
A roller is an infrastructure job that watches for updates to a repository's pinned dependencies and automatically creates and submits a commit that updates the pinned version (a "roll") when it detects that a new version of a dependency is available.
Full description
The Fuchsia project uses rollers to update pinned versions of repositories and CIPD packages. Rollers can be configured to trigger automatically on new commits to a repository, run as a cron job that periodically polls for changes, or only be triggered manually.
-
Root job
The root of the job tree and the first job in the system.
Full description
The root job is created by the kernel to allow [userboot](/docs/glossary#userboot) to begin execution.
Related links Information related to Root job
-
Runner
A component that provides a runtime environment for other components, e.g. the ELF runner, the GTest runner.
Full description
Every component needs a runner in order to launch. Components express their dependency on a runner in the component's declaration. When the component framework starts a component, it first determines the capabilities that the component should receive, then asks the component's runner to launch the component. The runner is responsible for creating any necessary processes, loading executable code, initializing language runtimes, handing control to the component's entry points, and terminating thecomponent when requested by the component framework.
Related links Information related to Runner
-
Scan code
A sequence of numeric values associated with a key.
Full description
A sequence of numeric values associated with a key, as assigned by the hardware controller of the physical keyboard. While standardized scan codes exist, keyboards are varied enough that operating systems usually have to map all scan code sequences into a single space of physical key codes.
Related links Information related to Scan code
- key
- physical keyboard
-
Scenic
Scenic is Fuchsia's system compositor, which composes graphical objects from multiple components into a shared scene graph.
Full description
Scenic includes views, input, compositor, and GPU services.
Related links Information related to Scenic
-
SDK Atom
A subset of files in the SDK.
Full description
An *SDK Atom* is a collection of files that can be included in an SDK. Fuchsia represents SDK Atoms using the
sdk_atom
template in GN.
-
Sequential device driver
A hardware driver that will only service a single request at a time. The core driver synchronizes and serializes all requests.
-
Service
In FIDL, a service groups protocols to describe how one process interacts with another.
Full description
A service is used and routed to other components as a service capability.
Related links Information related to Service
Guides related to Service
-
Service capability
A capability that permits communicating with a service over a channel using a specified FIDL service.
Full description
The server end of the channel is held by the component instance that provides the capability. The client end of the channel is given to the component instance that uses the capability.
Related links Information related to Service capability
Guides related to Service capability
-
Session component
A session component is a component that encapsulates a product's user experience and runs as a child of the platform `session_manager` component.
Full description
A "session component" is a component. Each Fuchsia product encapsulates its user experience within a session component (and its descendent components). The term "user experience" is used broadly: it encompasses traditional graphical experiences with touch/mouse/keyboard interaction, as well as simpler experiences with a single RGB LED and several hardware buttons, or those with only network I/O. Simple products may specify a session component with no children, while complex products have many children of the session component, such as delegating graphical presentation responsibility to an accompanying window manager.
Related links Information related to Session component
Guides related to Session component
-
Session launcher
A FIDL protocol, exposed by the session manager, used to start or restart sessions.
Full description
It is available to developer tools such as
session_control
to control session components at runtime.
Related links Information related to Session launcher
-
Session manager
The platform component that manages the lifecycle of the session component.
Full description
The session manager defines the set of system capabilities provided to sessions at runtime.
Related links Information related to Session manager
-
Software Assembly
The process of gathering compiled artifacts, configuration metadata, and other information required to create a complete Product Bundle.
Full description
The Software Assembly process is carried out by an ffx plugin which gathers various targets declared in the Assembly Config, Legacy AIB, and Platform AIBs. The result of Software Assembly is a Product Bundle.
Related links Information related to Software Assembly
-
Starnix
A runner that allows for running unmodified Linux binaries on Fuchsia.
Full description
A runner that allows for running unmodified Linux binaries on Fuchsia. Linux binaries are not run inside a virtual machine. Instead, starnix creates a compatible runtime environment by implementing the Linux UAPI.
Related links Information related to Starnix
-
Storage capability
A storage capability is a capability that allocates per-component isolated storage for a designated purpose within a filesystem directory.
Full description
Multiple component instances may be given the same storage capability, but underlying directories that are isolated from each other will be allocated for each individual use. This is different from directory capabilities, where a specific filesystem directory is routed to a specific component instance. Isolation is achieved because Fuchsia does not support dotdot. There are three types of storage capabilities:
- Data: A directory is added to the namespace of the component instance that uses the capability. Acts as a data directory.
- Cache: Same as data, but acts as a cache directory.
- Meta: A directory is allocated to be used by component manager, where it will store metadata to enable features like persistent component collections.
Related links Information related to Storage capability
-
Sub-realm
A sub-realm is the realm corresponding to a child component instance.
Related links Information related to Sub-realm
-
Subpackage
A Fuchsia package contained (by reference) in another package.
Full description
A Fuchsia package can declare dependencies on one or more packages, by containment. The containing package is sometimes referred to as the superpackage and the contained packages are its subpackages. Subpackages are declared by reference, but the existence of the superpackage implies the existence of its subpackages, regardless of the medium (including a Fuchsia runtime, in a package repository, or in a package archive format, for example). Packages and Components can reference contained packages and subpackaged components, respectively, by relative subpackage URLs.
Related links Information related to Subpackage
Guides related to Subpackage
-
Subpackage URL (Relative)
A partial Fuchsia Package URL, starting from the URI path.
Full description
A relative subpackage URL requires a "resolution context", which simply means a known starting package (or "superpackage"). The path (a single path segment with no slashes: `/`) refers to a subpackage, declared and named by its superpackage; for example:
my-package#meta/comp.cm
, representing a component within a subpackage, with the locally-scoped name "my-package".
Related links Information related to Subpackage URL (Relative)
-
Synchronized dispatcher
An async dispatcher where posted tasks are run in order, and each task will observe the side-effects from previous tasks.
Related links Information related to Synchronized dispatcher
-
Text Edit API
An API that allows editing a UI text field.
Full description
E.g. fuchsia.ui.text. This API allows the platform to access and edit the contents of a text field implemented by a UI Framework. This type of editing is a requirement for most text manipulation, in particular when the text is interpreted as human language rather than discrete button events. This API is required for accented characters (anything using a dead key) and most CJK languages.
Related links Information related to Text Edit API
- Key Event API
-
Thread
A kernel object that represents a time-shared CPU execution context. Each thread is contained in process.
Related links Information related to Thread
-
Transform
A hierarchical piece of a Flatland graph.
Full description
A hierarchical piece of a Flatland graph. Transform is the fundamental object used to organize a Flatland graph. Transforms can have children Transforms and can attach a Content.
-
Toolchains
Tools used by developers to compile sources into binaries. Fuchsia supports Clang for C/C++.
-
TOT
Top-Of-Tree: The source tree (or build artifact thereof) based on the most recent commit to the main development branch of the source code.
Full description
Top-Of-Tree (or Tip-of-Tree, both are used interchangeably) refers to various artifacts, depending on context. The common denominator is that the artifact of interest is not relating to a stabilizing branch like releases/f18. Frequent examples:
- A Fuchsia git checkout sync'ed to JIRI_HEAD.
- The resulting artifacts from a build from a Fuchsia git checkout sync'ed to JIRI_HEAD.
- The resulting artifacts from a component built from the development HEAD of a component, against an unspecified version of the Fuchsia SDK.
-
Universe driver
An ephemeral driver from a specific Fuchsia package set that is registered manually after the system's initial boot.
-
use
A keyword for a component instance to consume a capability that was offered to it.
Full description
A component instance may use the
use
manifest keyword to to consume a capability that was offered to it by its parent.
Related links Information related to use
-
userboot
The first process started by the Zircon kernel.
Full description
It is loaded from the kernel image in the same way as the vDSO, instead of being loaded from a filesystem. Its primary purpose is to load the second process, bootsvc, from the bootfs.
Related links Guides related to userboot
-
View
A region of the Scenic scene graph and the reference frame of a Scenic client.
Full description
The region a Scenic client can draw in, and the coordinate system input events are delivered in.
Views
can be referred to cross-process by their associated ViewRef.
Related links Information related to View
-
Viewport
The parent endpoint of two connected Flatland instances.
Full description
The parent endpoint of two connected Flatland instances. View is the child endpoint. Viewport is type of a Content.
-
ViewportCreationToken
Uniquely identifies the parent connection point of a connection between two Flatland instances.
Full description
Uniquely identifies the parent connection point of a connection between two Flatland instances. There is only one ViewCreationToken associated with a ViewportCreationToken.
-
ViewController
Represents a handle to a remote View that was launched by calling
PresentView()
on aGraphicalPresenter
.Full description
A FIDL protocol. With this handle, the caller (often, the session) can control the View's lifecycle. Closing the
ViewController
should close the presented view, and allow the system to reclaim its resources.
Related links Information related to ViewController
-
ViewCreationToken
Uniquely identifies the child connection point of a connection between two Flatland instances.
Full description
Uniquely identifies the child connection point of a connection between two Flatland instances. There is only one ViewportCreationToken associated with a ViewCreationToken.
-
ViewHolderToken
Uniquely identifies an attachment point for a view in the global scene graph.
Full description
A FIDL struct. Each
ViewHolderToken
has exactly one corresponding ViewToken.
Related links Information related to ViewHolderToken
-
ViewRef
A handle to a kernel object that identifies a unique View across the system.
Full description
A FIDL struct. Two
ViewRef
`s to the same view have the same KOID. During cross-process communications Scenic clients are referred to by ViewRef. This is common for Input, Accessibility and Focus.
Related links Information related to ViewRef
-
ViewSpec
A description of a view to be presented by a
GraphicalPresenter
.Full description
A FIDL table.
Related links Information related to ViewSpec
-
ViewToken
Uniquely identifies a View, which is the root point for a subgraph in the global scene graph.
Full description
A FIDL struct. Each
ViewToken
has exactly one correspondingViewHolderToken
.
Related links Information related to ViewToken
-
Virtual dynamic shared object
The Virtual Dynamic Shared Object (vDSO) is a Virtual Shared Library.
Full description
It is provided by the Zircon kernel and does not appear in the filesystem or a package. It provides the Zircon System Call API and ABI to userspace processes in the form of an ELF library that's always there. In the Fuchsia IDK and Fuchsia driver framework it exists as
libzircon.so
for the purpose of having something to pass to the linker representing the vDSO.
-
Virtual Keyboard
A keyboard represented with software.
Full description
While traditionally a keyboard is a mechanical or electromechanical device, modern keyboards can be visual elements on a screen, or can use voice dictation for example. Also called
on-screen keyboard (OSK) . [wikipedia]
Related links Information related to Virtual Keyboard
- keyboard
- physical keyboard
-
Virtual Memory Address Range
A Virtual Memory Address Range (VMAR) is a Zircon kernel object that controls where and how virtual memory objects may be mapped into the address space of a process.
Related links Guides related to Virtual Memory Address Range
-
Virtual Memory Object
A Virtual Memory Object (VMO) is a Zircon kernel object that represents a collection of pages (or the potential for pages) that may be read, written, mapped into the address space of a process, or shared with another process by passing a handle over a channel.
Related links Information related to Virtual Memory Object
-
Window Manager
A component (or multiple components) that controls the placement and appearance of windows supplied by applications.
Full description
A component (or multiple components) that controls the placement and appearance of windows supplied by applications. On some systems, this system is also responsible for rendering UI (e.g. title bars). Because the Fuchsia platform may be used to implement a variety of products with very different graphical and input capabilities, the distribution of window manager responsibilities on Fuchsia may look very different than other operating systems where the platform is more closely tied to a single user experience. A window manager typically accompanies a Session component to present any graphical interfaces presented by elements launched as a part of the session. A window manager and a session together create a product experience.
Related links Information related to Window Manager
-
Zircon
Zircon is the kernel and lowest level userspace components (driver runtime environment, core drivers, libc, etc) at the core of Fuchsia.
Full description
In a traditional monolithic kernel, many of the userspace components of Zircon would be part of the kernel itself.
Related links Information related to Zircon
-
Zircon Boot Image
A Zircon Boot Image (ZBI) contains everything needed during the boot process before any drivers are working.
Full description
This includes the kernel image and a RAM disk for the boot filesystem.
Related links Information related to Zircon Boot Image
-
Zedboot
A recovery image that is used to install and boot a full Fuchsia system.
Full description
Zedboot is actually an instance of the Zircon kernel with a minimal set of drivers and services running used to bootstrap a complete Fuchsia system on a target device. Upon startup, Zedboot listens on the network for instructions from a bootserver that may instruct Zedboot to install a new OS. Upon completing the installation Zedboot will reboot into the newly installed system.
-
ZX
An abbreviation of Zircon used in Zircon C APIs and ABIs
zx_channel_create()
,zx_handle_t
,ZX_EVENT_SIGNALED
, etc) and libraries (libzx in particular).
-
ZXDB
The native low-level system debugger.
Related links Guides related to ZXDB