Fuchsia
Fundamentals SDK Reference What's new Source
Sign in
  • Contribute to the open source platform
Build Fuchsia Community Governance
Fuchsia
  • Fundamentals
  • SDK
  • Reference
  • What's new
  • Source
    • Build Fuchsia
    • Community
    • Governance
  • Overview
  • Quickstart
  • Overview
  • 1. Download the Fuchsia source code
  • 2. Configure and build Fuchsia
  • 3. Start the Fuchsia emulator
  • 4. Explore Fuchsia
  • Set up devices
  • Fuchsia hardware
    • Overview
    • Install Fuchsia on a Chromebook
    • Install Fuchsia on a NUC
    • Install Fuchsia on a NUC using Zedboot (Legacy)
    • Install Fuchsia on a Khadas VIM3 board
    • Create a bootable Fuchsia image
      • Install Fuchsia from a USB flash drive
      • Use the Fuchsia installer (Legacy)
    • Set up experimental hardware
      • Install Fuchsia on Acer Switch Alpha 12
      • Install Fuchsia on Toulouse
  • Build and run
  • Build
    • Build Workstation
    • fx workflows
    • Build and pave quickstart
    • Retrieve build information
    • Fuchsia emulator
    • Advanced
      • Build Clang toolchain
      • Build Rust for Fuchsia
      • Build Fuchsia with custom Rust
      • Run the Rust test suite
      • Run Clang static analysis
      • Ninja no-op check
      • Hermetic actions check
    • Build system
      • Overview
      • Fuchsia build system
      • Boards and products
        • Overview
        • Bringup Product Definition
      • Build system policies
      • GN
        • Introduction to GN
        • Bundles
        • Variants
        • GN Template Best Practices
      • Build system internals
        • Overview
        • Manifest file formats
        • GN toolchains and the Fuchsia build
          • GN toolchains overview
          • ELF shared library redirection
          • Build variants
  • Run
    • Run an example component
    • Run a test component
  • Write code
  • API development
    • API development overview
    • CLI tool help requirements
    • Command-line tools rubric
    • C library readability rubric
    • Dart API readability rubric
    • Fuchsia device interface rubric
    • API documentation readability rubric
    • FIDL API readability rubric
    • Zircon system interface rubric
    • Developer tool guidelines
    • Go rubric
    • Rust rubric
  • Bluetooth
    • Concepts
      • Bluetooth architecture
      • Bluetooth persistent data schema
  • Boards
    • Adding support for new boards
  • Components
    • Build components
    • Connect components
    • Run components
    • Provide data files to components
    • Structured Configuration
    • Component storage index
    • Migrating legacy components
      • Overview
      • Migrate system components
      • Migrate test components
      • Component sandbox features
      • Diagnostics capabilities
      • Other common situations
  • Drivers
    • Developer guide
      • Getting started
      • Write an ethernet driver
      • Write a ramdisk driver
      • Drivers rubric
    • Driver guides
      • Display drivers
        • Bringing up a new device
        • Preparing for new SoCs
        • Understanding the role of display controllers
      • USB development
        • Getting descriptors and endpoints from usb
        • Concepts
          • USB system overview
          • Lifecycle of a USB request
          • USB mass storage driver
    • Testing
      • Overview
      • Mock DDK
      • Driver Test Realm
    • Diagnostics and tools
      • Inspect
      • Logging
      • Tracing
      • Bind debugger
      • Driver utilities
    • Tutorials
      • Banjo tutorial
      • Bind tutorial
      • FIDL tutorial
    • Best practices
      • Building a Driver
      • Driver stack performance
      • VMO Registration Pattern
    • Concepts
      • Getting started
      • Fuchsia Driver Framework
      • Device driver model
        • Overview
        • Introduction
        • Device model
        • Driver binding
        • Device ops
        • Device lifecycle
        • Power management
        • Device protocol
        • Platform bus
        • FIDL
        • Banjo
        • Composite devices
        • Device firmware
      • Driver architectures
        • Overview
        • Audio drivers
          • Overview
          • Architecture
          • Audio driver streaming interface
          • Audio Signal Processing
          • Digital Audio Interface (DAI)
          • Audio codec
        • Input drivers drivers
          • Fuchsia input drivers
        • SDMMC drivers
          • SDMMC driver architecture
      • Driver development
        • Overview
        • Scripting Layer for Fuchsia (SL4F)
        • Using the C++ DDK template library
        • PCI Base Address Registers (BAR)
        • Interrupts
        • DMA
  • Editors
    • Overview
    • YouCompleteMe integration
    • VS Code
      • Overview
      • Configuring remote workspaces
      • Configuring file reloading
      • Installing extensions
    • VIM
    • Sublime Text
  • ffx
    • Overview
    • Using ffx
    • Developing for ffx
      • Overview
      • Developing an ffx plugin
      • Plugin internals
      • Experimental plugins
    • Commands
      • Config
      • Log
      • Selecting components
    • Architecture
      • CLI
  • FIDL
    • Overview
    • Developer guide
      • Overview
      • Running FIDL
      • Style guide
      • Designing APIs
      • Maxing out pagination
      • Picking between C, LLCPP, and HLCPP bindings
      • Viewing generated bindings code
      • Editor Support
      • Hanging Gets in Rust
    • Compatibility guide
      • Overview
      • Change a bits from flexible to strict
      • Add a bits member
      • Remove a bits member
      • Change a bits from strict to flexible
      • Change an enum from flexible to strict
      • Add an enum member
      • Remove an enum member
      • Change an enum from strict to flexible
      • Add a protocol event
      • Remove a protocol event
      • Add a protocol method
      • Remove a protocol method
      • Add a table member
      • Remove a table member
      • Change a union from flexible to strict
      • Add union member
      • Remove union member
      • Change a union from strict to flexible
    • Tutorials
      • Overview
      • Compiling FIDL
      • HLCPP
        • Overview
        • Getting started
          • Compiling HLCPP
          • Server
          • Async client
          • Sync client
        • Debug output
        • Serving multiple clients
        • Request pipelining
        • Services
        • Testing protocols
      • LLCPP
        • Overview
        • Getting started
          • Compiling LLCPP
          • Server
          • Async client
          • Sync client
        • Responding asynchronously
        • Memory ownership of domain objects
        • Thread safety and memory safety
        • Communicating over the driver transport
        • Request pipelining
        • Services
      • Rust
        • Overview
        • Getting started
          • FIDL Rust Crates
          • Server
          • Async client
          • Sync client
        • Request pipelining
        • Services
      • Dart
        • Overview
        • Getting started
          • FIDL Dart packages
          • Server
          • Client
        • Request pipelining
      • C
  • Graphics
    • Escher (Physically-based renderer) concepts
      • Overview
      • Building
    • Flutter (UI toolkit)
    • Magma (Vulkan driver) concepts
      • Overview
      • Design
      • Test strategy
      • Vulkan
      • Porting
      • Contributing
    • Scenic (Graphics engine) concepts
      • Overview
      • Frame Scheduling
      • Life of a pixel
      • Lifecycle of a scene graph resource
      • Units and metrics
      • Views, bounds, and clipping
      • Scenic Views, view tree, and ViewRefs
      • Scenic Views, view focus, and focus chain
    • Sysmem (Shared memory manager) concepts
      • Overview
      • VMO hierarchy
  • IDK
    • IDK
    • Download the Fuchsia IDK
    • IDK layout
    • IDK standards
    • Using the Core IDK
      • Integrating the IDK into your build environment
      • Understanding IDK metadata
      • "Core" IDK Documentation
      • Bootserver
      • Compilation
      • Debugger
      • Devices
      • Logging
      • Packages
      • SSH
    • GN C++ Frontend SDK
      • Getting started
  • Internationalization
    • Overview
    • ICU
    • ICU data
    • Localizing mods
    • Internationalization preferences
    • Fonts
      • Fonts
      • Build configuration
      • Font provider service
      • Maintenance tasks
    • Localization
      • Localization
      • Message translation
      • Lookup API
      • Locale fallback
      • Localization workflow
      • Packaging
      • Future work
    • Future work
  • Kernel
    • Getting started
    • Kernel in the build
    • Manage memory
      • Memory usage analysis tools
      • Out of memory system
    • Manage threads
      • Thread safety annotations
      • Thread local storage
    • Object usage analysis tools
    • Cross translation unit static analysis in Zircon
    • Time units
    • Notes on kernel development
  • Languages
    • Overview
    • Configure linters and formatter
    • Fuchsia endian policy
    • Support new languages
      • Overview
      • Recommended structure to support Fuchsia
    • C/C++
      • Overview
      • Editor setup
      • Naming conventions
      • C++ style guide
      • Lint
      • Libc support
      • Library restrictions
      • Logging
      • Perftest micro-benchmark library
      • C++ in Zircon
      • Compile time collections
      • fpromise::promise<> guide
      • fbl:: (Fuchsia Base Library) intrusive container guide
        • Introduction to fbl intrusive containers
        • Getting started
        • Controlling container membership
        • Sequenced containers
        • Associative containers
        • Iterators
        • Testing an object for membership in a container
        • Lifecycle checks
        • size()'s order of operation
        • Advanced scenarios
    • Dart
      • Overview
      • Analysis
      • FIDL
      • IDEs
      • Logging
      • Flutter module development
      • Dart style guide
      • Testing
      • Third-party Dart packages
    • Go
      • Overview
      • Logging
      • Readability reviews
    • Python
      • Overview
      • Python style guide
      • Testing
    • Rust
      • Overview
      • Learn Rust
      • Fuchsia Rust crates
      • FIDL Rust crates
      • Rust editor configurations
      • Using cargo on Fuchsia
      • Logging
      • Ergonomic Inspect
      • Testing Rust Code
      • Measuring Rust Binary Bloat
      • External Rust crates
      • Unsafe code in Rust
      • Unstable Rust features
      • Integrating C/C++ using bindgen
  • Media
    • Loudness
  • Modular framework
    • Overview
    • Configuring the Modular framework
  • Networking
    • Concepts
      • Telephony
      • Wireless
  • Sessions
    • Building and running a session
    • Writing a Hello World session
    • Session roles and responsibilities, by example
  • Settings
    • Introduction
    • Policy concepts
    • Using Settings
  • UI-Input
    • Tracing input events
  • Test and debug
  • Test
    • Run Fuchsia tests
    • Run an end-to-end test
    • Create a new end-to-end test
    • Testing Scenic and Escher
    • Questions and answers
    • Zircon testing
      • Zircon testing overview
      • Block device testing
      • NAND testing
    • Compatibility Testing
      • Overview
      • Introduction
      • Contributing
        • Contributing Tests
        • CTS Test Realm
        • Testing Guidelines
        • Diagnosing Test Failures
      • Platform Surface Area (Plasa)
        • Overview
        • Plasa manifest
      • Frequently Asked Questions
    • Component testing
      • Overview
      • Test components
      • Test Runner Framework
      • Integration testing
      • Realm builder
      • Hermetic testing using OpaqueTest
    • Driver testing
      • Testing a USB device
    • Fuzzing
      • Overview
      • Write a Fuzzer
      • Build a Fuzzer
      • Run a Fuzzer
      • Handling Results Found Through Fuzzing
      • Improving Your Fuzzer
        • Overview
        • Additional Topics
    • Host-target interaction tests
    • Testing for flakiness in CQ
    • Flaky test policy
    • Stress tests
    • Rust stress test library
    • Bluetooth
      • Writing unit tests for the C++ bt-host driver
    • Testability rubrics
  • Diagnose
    • Inspect
      • Overview
      • Quickstart
      • Health
      • Rust libraries
      • Inspect codelab
        • Overview
        • Codelab
      • Using Inspect for drivers
    • Log
      • Overview
      • Record
      • Choose severity
      • View
      • Logging and tests
    • Analyze with Triage
    • Diagnostics and Testing Workshop
      • Overview
      • Codelab
    • Error codes
      • Troubleshoot zx_err_peer_closed
  • Benchmark
    • Viewing Zircon microbenchmarks with Catapult
    • Benchmark results schema
  • Debug
    • Debugging workflow
    • Packet capture
    • Just In Time Debugging
    • UI debugging tips
    • Use the native debugger (zxdb)
      • zxdb: The Fuchsia debugger
      • Set up and run the debugger
      • Commands and interaction model
      • Debugging a process, component, or crash dump
      • Controlling thread execution
      • Using breakpoints
      • Evaluating and printing expressions
      • Inspecting memory
      • Working with assembly language
      • Looking at handles
      • Diagnosing symbol problems
      • Working with exceptions
      • Developing and debugging the debugger
    • Debug the kernel
      • Debug the kernal using QEMU
      • JTRACE
      • Kernel debugging tips
    • Advanced
      • ACPI debugging
  • Monitoring
    • fidlcat
      • Overview
      • Guide
  • Trace
    • Overview
    • Tutorial
      • Registering a trace provider
      • Adding tracing in your code
      • Recording a Fuchsia trace
      • Converting and visualizing a trace
    • Advanced
      • Tracing asynchronously
      • Recording a boot trace
      • Recording a kernel trace
      • Recording a CPU performance trace
  • Publish and deploy
  • Prebuilt packages
    • Overview
    • Publish prebuilt packages to CIPD
    • Publish a CIPD symbols package for ELF binaries
    • Make your CIPD package visible to Fuchsia developers
  • Contribute code
  • Contribute source code
    • Contribute source changes
    • Workflow tips and FAQ
    • Upload changes from multiple repositories
    • Make changes across different petals
    • Source code layout
    • Owners
    • Gerrit auto-submit
    • README.fuchsia file syntax
    • Fuchsia archive format (FAR)
  • Fuchsia
  • Source

Using services

Refer to the example code for how to use services in LLCPP. For background and motivation on a FIDL service, refer to RFC-0041.

bug_report code edit

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2021-07-13 UTC.

  • Terms
  • Privacy