blob: de707edb10a4f26d82fc19f486f0948c300cc303 [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Realm that acts as a container for general system components.
{
children: [
{
name: "device_settings",
url: "fuchsia-pkg://fuchsia.com/device_settings_manager#meta/device_settings_manager.cm",
},
{
name: "dash-launcher",
url: "fuchsia-pkg://fuchsia.com/dash-launcher#meta/dash_launcher.cm",
environment: "#full-resolver-env",
},
{
name: "session-manager",
url: "fuchsia-pkg://fuchsia.com/session_manager#meta/session_manager.cm",
environment: "#session-env",
},
{
name: "system-update-committer",
url: "fuchsia-pkg://fuchsia.com/system-update-committer#meta/system-update-committer.cm",
startup: "eager",
on_terminate: "reboot",
},
{
name: "exceptions",
url: "fuchsia-pkg://fuchsia.com/forensics#meta/exceptions.cm",
},
{
name: "feedback",
url: "fuchsia-pkg://fuchsia.com/forensics#meta/feedback.cm",
startup: "eager",
},
{
name: "mdns",
url: "fuchsia-pkg://fuchsia.com/mdns#meta/mdns.cm",
// TODO(https://fxbug.dev/93539): consider removing eager startup in non-eng builds.
startup: "eager",
},
{
name: "bluetooth-core",
url: "fuchsia-pkg://fuchsia.com/bt-init#meta/bt-init.cm",
},
{
name: "sysmem_connector",
url: "fuchsia-pkg://fuchsia.com/sysmem_connector#meta/sysmem_connector.cm",
// Until there is something analogous to on_terminate: "reboot" for drivers, we need
// sysmem_connector to terminate and trigger a reboot on behalf of sysmem if the sysmem
// driver terminates.
//
// TODO(fxbug.dev/96061): Once we have something like on_terminate: "reboot" for drivers
// we can remove both "eager" and "reboot" here.
startup: "eager",
on_terminate: "reboot",
},
{
name: "text_manager",
url: "fuchsia-pkg://fuchsia.com/text_manager#meta/text_manager.cm",
},
{
name: "cobalt_system_metrics",
url: "fuchsia-pkg://fuchsia.com/cobalt_system_metrics#meta/cobalt_system_metrics.cm",
startup: "eager",
},
{
name: "linux_runner",
url: "fuchsia-pkg://fuchsia.com/linux_runner#meta/linux_runner.cm",
environment: "#full-resolver-env",
},
// Children below this line may be present on some but not all product configurations.
// Children above this line are expected to be present on all configs that include
// core.cml.
//
// TODO(fxbug.dev/81003): If any of the components below are product-specific, move them
// to core realm shards.
{
name: "activity",
url: "fuchsia-pkg://fuchsia.com/activity#meta/activity.cm",
},
{
name: "brightness_manager",
url: "fuchsia-pkg://fuchsia.com/brightness_manager#meta/brightness_manager.cm",
environment: "#full-resolver-env",
},
{
name: "cobalt",
url: "fuchsia-pkg://fuchsia.com/cobalt#meta/cobalt.cm",
},
{
name: "detect",
url: "fuchsia-pkg://fuchsia.com/triage-detect#meta/triage-detect.cm",
},
{
name: "diagnostics-persistence",
url: "fuchsia-pkg://fuchsia.com/diagnostics-persistence#meta/diagnostics-persistence.cm",
},
{
name: "diagnostics-kcounter",
url: "fuchsia-pkg://fuchsia.com/diagnostics-kcounter#meta/diagnostics-kcounter.cm",
},
{
name: "log-stats",
url: "fuchsia-pkg://fuchsia.com/log-stats#meta/log-stats.cm",
},
{
name: "sampler",
url: "fuchsia-pkg://fuchsia.com/sampler#meta/sampler.cm",
},
{
name: "starnix_manager",
url: "fuchsia-pkg://fuchsia.com/starnix#meta/starnix_manager.cm",
environment: "#full-resolver-env",
},
{
name: "stash",
url: "fuchsia-pkg://fuchsia.com/stash#meta/stash.cm",
},
{
name: "stash2",
url: "fuchsia-pkg://fuchsia.com/stash#meta/stash2.cm",
},
{
name: "stash_secure",
url: "fuchsia-pkg://fuchsia.com/stash#meta/stash_secure.cm",
},
{
name: "regulatory_region",
url: "fuchsia-pkg://fuchsia.com/regulatory_region#meta/regulatory_region.cm",
},
{
name: "font_provider",
url: "fuchsia-pkg://fuchsia.com/fonts#meta/fonts.cm",
},
{
name: "overnetstack",
url: "fuchsia-pkg://fuchsia.com/overnetstack#meta/overnetstack.cm",
environment: "#full-resolver-env",
},
{
name: "remote-control",
url: "fuchsia-pkg://fuchsia.com/remote-control#meta/remote-control.cm",
},
{
name: "remote-diagnostics-bridge",
url: "fuchsia-pkg://fuchsia.com/remote-diagnostics-bridge#meta/remote-diagnostics-bridge.cm",
},
{
name: "debug_serial",
url: "fuchsia-pkg://fuchsia.com/debug-serial#meta/debug-serial.cm",
},
{
name: "system-metrics-logger",
url: "fuchsia-pkg://fuchsia.com/system-metrics-logger#meta/system-metrics-logger-component.cm",
environment: "#full-resolver-env",
},
{
name: "temperature-logger",
url: "fuchsia-pkg://fuchsia.com/temperature-logger#meta/temperature-logger.cm",
environment: "#full-resolver-env",
},
{
name: "metrics-logger",
url: "fuchsia-pkg://fuchsia.com/metrics-logger#meta/metrics-logger.cm",
environment: "#full-resolver-env",
},
{
name: "pkg-resolver",
url: "fuchsia-pkg://fuchsia.com/pkg-resolver#meta/pkg-resolver.cm",
},
{
name: "vulkan_loader",
url: "fuchsia-pkg://fuchsia.com/vulkan_loader#meta/vulkan_loader.cm",
environment: "#full-resolver-env",
},
{
name: "ssh-key-manager",
url: "fuchsia-pkg://fuchsia.com/ssh-key-manager#meta/ssh-key-manager.cm",
},
{
name: "universe-resolver",
url: "fuchsia-pkg://fuchsia.com/universe-resolver#meta/universe-resolver.cm",
},
{
name: "network",
url: "fuchsia-pkg://fuchsia.com/network#meta/network.cm",
startup: "eager",
},
{
name: "hwinfo",
url: "fuchsia-pkg://fuchsia.com/hwinfo#meta/hwinfo.cm",
},
{
name: "agis",
url: "fuchsia-pkg://fuchsia.com/agis#meta/agis.cm",
environment: "#full-resolver-env",
},
], // children
capabilities: [
// Note: `data`, `cache`, and `temp` storage capabilities are defined in a shard and
// included as part of the build process. See restricted-storage.core_shard.cml or
// unrestricted-storage.core_shard.cml
],
offer: [
{
protocol: "fuchsia.component.resolution.Resolver",
from: "parent",
to: [ "#universe-resolver" ],
},
{
protocol: [ "fuchsia.kernel.DebugResource" ],
from: "parent",
to: "#debug_serial",
},
{
protocol: [
"fuchsia.ui.activity.control.Control",
"fuchsia.ui.activity.Provider",
"fuchsia.ui.activity.Tracker",
],
from: "#activity",
to: [
"#cobalt",
"#cobalt_system_metrics",
],
},
{
directory: "dev",
from: "parent",
as: "dev-sysmem",
to: "#sysmem_connector",
subdir: "class/sysmem",
},
{
protocol: [ "fuchsia.pkg.FontResolver" ],
from: "#pkg-resolver",
to: "#font_provider",
},
{
protocol: [ "fuchsia.device.NameProvider" ],
from: "parent",
to: [
"#bluetooth-core",
"#mdns",
"#network",
],
},
{
protocol: [ "fuchsia.scheduler.ProfileProvider" ],
from: "parent",
to: [ "#network" ],
},
{
protocol: [ "fuchsia.net.http.Loader" ],
from: "#network",
to: [
"#cobalt",
"#feedback",
],
},
{
protocol: [ "fuchsia.net.interfaces.State" ],
from: "#network",
to: [
"#exceptions",
"#feedback",
"#mdns",
"#remote-control",
],
},
{
protocol: [
"fuchsia.net.name.Lookup",
"fuchsia.posix.socket.Provider",
],
from: "#network",
to: [
"#cobalt",
"#feedback",
"#mdns",
"#pkg-resolver",
"#session-manager",
],
},
{
protocol: [ "fuchsia.posix.socket.Provider" ],
from: "#network",
to: [ "#agis" ],
},
{
protocol: "fuchsia.stash.SecureStore",
from: "#stash_secure",
to: [
"#bluetooth-core",
"#network",
],
},
{
directory: "config-data",
from: "parent",
to: [ "#network" ],
},
{
directory: "dev",
from: "parent",
as: "dev-class-ethernet",
to: [ "#network" ],
subdir: "class/ethernet",
},
{
directory: "dev",
from: "parent",
as: "dev-class-network",
to: [ "#network" ],
subdir: "class/network",
},
{
storage: "cache",
from: "self",
to: [ "#network" ],
},
{
storage: "data",
from: "self",
to: [ "#network" ],
},
{
protocol: "fuchsia.pkg.PackageResolver",
from: "#pkg-resolver",
to: "#universe-resolver",
},
{
protocol: [
"fuchsia.boot.Arguments",
"fuchsia.pkg.PackageCache",
],
from: "parent",
to: "#pkg-resolver",
},
{
storage: "data",
from: "self",
to: "#pkg-resolver",
},
{
directory: "config-data",
from: "parent",
to: "#pkg-resolver",
subdir: "pkg-resolver",
},
{
directory: "config-data",
from: "parent",
to: [
"#exceptions",
"#feedback",
],
subdir: "forensics",
},
{
protocol: [
"fuchsia.diagnostics.ArchiveAccessor",
"fuchsia.logger.Log",
],
from: "parent",
to: [
"#log-stats",
"#sampler",
],
},
{
protocol: [ "fuchsia.hardware.power.statecontrol.RebootMethodsWatcherRegister" ],
from: "parent",
to: [
"#feedback",
"#sampler",
],
},
{
protocol: [ "fuchsia.diagnostics.FeedbackArchiveAccessor" ],
from: "parent",
to: [
"#detect",
"#diagnostics-persistence",
"#feedback",
],
},
{
protocol: [ "fuchsia.logger.LogSink" ],
from: "parent",
to: [
"#activity",
"#agis",
"#bluetooth-core",
"#brightness_manager",
"#cobalt",
"#cobalt_system_metrics",
"#dash-launcher",
"#debug_serial",
"#detect",
"#device_settings",
"#diagnostics-kcounter",
"#diagnostics-persistence",
"#exceptions",
"#feedback",
"#font_provider",
"#hwinfo",
"#linux_runner",
"#log-stats",
"#mdns",
"#metrics-logger",
"#network",
"#overnetstack",
"#pkg-resolver",
"#regulatory_region",
"#remote-control",
"#sampler",
"#session-manager",
"#ssh-key-manager",
"#starnix_manager",
"#stash",
"#stash2",
"#stash_secure",
"#sysmem_connector",
"#system-metrics-logger",
"#system-update-committer",
"#temperature-logger",
"#text_manager",
"#universe-resolver",
"#vulkan_loader",
],
},
{
protocol: "fuchsia.hardware.pty.Device",
from: "parent",
to: "#dash-launcher",
},
{
protocol: [ "fuchsia.kernel.Counter" ],
from: "parent",
to: "#diagnostics-kcounter",
},
{
protocol: [
"fuchsia.hardware.power.statecontrol.Admin",
"fuchsia.paver.Paver",
"fuchsia.update.verify.BlobfsVerifier",
],
from: "parent",
to: "#system-update-committer",
},
{
protocol: [ "fuchsia.kernel.VmexResource" ],
from: "parent",
to: [ "#starnix_manager" ],
},
{
protocol: [ "fuchsia.ui.input3.Keyboard" ],
from: "#text_manager",
to: "#starnix_manager",
},
{
protocol: [ "fuchsia.sysmem.Allocator" ],
from: "#sysmem_connector",
to: [
"#session-manager",
"#starnix_manager",
],
},
{
directory: "config-data",
from: "parent",
to: "#hwinfo",
subdir: "hwinfo",
},
{
protocol: [
"fuchsia.overnet.Overnet",
"fuchsia.overnet.ServicePublisher",
],
from: "#overnetstack",
to: "#remote-control",
},
{
protocol: [ "fuchsia.posix.socket.Provider" ],
from: "#network",
to: "#remote-control",
},
{
protocol: [
"fuchsia.process.Launcher",
"fuchsia.sys2.CrashIntrospect",
],
from: "parent",
to: "#exceptions",
},
{
protocol: [
"fuchsia.device.manager.Administrator",
"fuchsia.device.NameProvider",
],
from: "parent",
to: "#remote-control",
},
{
directory: "config-data",
from: "parent",
to: [ "#remote-control" ],
subdir: "remote-control",
},
{
protocol: [
"fuchsia.diagnostics.ArchiveAccessor",
"fuchsia.logger.LogSink",
],
from: "parent",
to: "#remote-diagnostics-bridge",
},
{
directory: "config-data",
from: "parent",
to: "#font_provider",
subdir: "fonts",
},
{
directory: "config-data",
from: "parent",
to: "#sampler",
subdir: "sampler",
},
{
directory: "config-data",
from: "parent",
to: "#diagnostics-persistence",
subdir: "diagnostics-persistence",
},
{
protocol: "fuchsia.developer.remotecontrol.RemoteDiagnosticsBridge",
from: "#remote-diagnostics-bridge",
to: "#remote-control",
},
{
protocol: "fuchsia.feedback.CrashReporter",
from: "#feedback",
to: [
"#detect",
"#exceptions",
],
},
{
protocol: "fuchsia.feedback.CrashReportingProductRegister",
from: "#feedback",
to: "#detect",
},
{
protocol: "fuchsia.fonts.Provider",
from: "#font_provider",
to: [ "#session-manager" ],
},
{
protocol: "fuchsia.kernel.Stats",
from: "parent",
to: [
"#cobalt_system_metrics",
"#system-metrics-logger",
],
},
{
protocol: "fuchsia.process.Launcher",
from: "parent",
to: [
"#dash-launcher",
"#session-manager",
],
},
{
protocol: "fuchsia.sys2.RealmQuery.root",
from: "parent",
as: "fuchsia.sys2.RealmQuery",
to: "#dash-launcher",
},
{
storage: "data",
from: "self",
to: "#brightness_manager",
},
{
directory: "dev",
from: "parent",
as: "dev-backlight",
to: "#brightness_manager",
subdir: "class/backlight",
},
{
directory: "dev",
from: "parent",
as: "dev-input-report",
to: [
"#brightness_manager",
"#session-manager",
],
subdir: "class/input-report",
},
{
directory: "dev",
from: "parent",
to: "#sysmem_connector",
subdir: "class/sysmem",
},
{
directory: "dev",
from: "parent",
as: "dev-temperature",
to: "#temperature-logger",
subdir: "class/temperature",
},
{
directory: "dev",
from: "parent",
as: "dev-thermal",
to: "#temperature-logger",
subdir: "class/thermal",
},
{
directory: "dev",
from: "parent",
as: "dev-temperature",
to: "#metrics-logger",
subdir: "class/temperature",
},
{
directory: "dev",
from: "parent",
as: "dev-thermal",
to: "#metrics-logger",
subdir: "class/thermal",
},
{
directory: "dev",
from: "parent",
as: "dev-power-sensor",
to: "#metrics-logger",
subdir: "class/power-sensor",
},
{
directory: "dev",
from: "parent",
as: "dev-thermal",
to: "#cobalt_system_metrics",
subdir: "class/thermal",
},
{
directory: "dev",
from: "parent",
as: "dev-misc",
to: [ "#cobalt_system_metrics" ],
subdir: "misc",
},
{
directory: "root-ssl-certificates",
from: "parent",
to: [
"#cobalt",
"#network",
"#pkg-resolver",
"#session-manager",
],
},
{
directory: "config-data",
from: "parent",
to: "#temperature-logger",
subdir: "temperature-logger",
},
{
directory: "config-data",
from: "parent",
to: "#metrics-logger",
subdir: "metrics-logger",
},
{
directory: "config-data",
from: "parent",
to: "#detect",
subdir: "triage-detect",
},
{
directory: "config-data",
from: "parent",
to: "#log-stats",
subdir: "log-stats",
},
{
directory: "config-data",
from: "parent",
to: "#system-update-committer",
subdir: "system-update-committer",
},
{
directory: "config-data",
from: "parent",
to: "#cobalt",
subdir: "cobalt",
},
{
directory: "config-data",
from: "parent",
to: "#cobalt_system_metrics",
subdir: "cobalt_system_metrics",
},
{
protocol: [
"fuchsia.device.Controller",
"fuchsia.hardware.temperature.Device",
],
from: "parent",
to: "#temperature-logger",
},
{
protocol: [ "fuchsia.kernel.Stats" ],
from: "parent",
to: "#metrics-logger",
},
{
directory: "minfs",
from: "parent",
as: "ssh",
to: "#ssh-key-manager",
subdir: "ssh",
},
// Note: this is the v2 root hub. The hub in the `expose` section below
// is the v1 root hub.
{
directory: "hub",
from: "parent",
to: "#remote-control",
},
// Note: These protocols are scoped to the root of the component topoology,
// hence the `.root` suffix
{
protocol: [
"fuchsia.sys2.LifecycleController.root",
"fuchsia.sys2.RealmExplorer.root",
"fuchsia.sys2.RealmQuery.root",
"fuchsia.sys2.RouteValidator.root",
],
from: "parent",
to: "#remote-control",
},
{
storage: [
"cache",
"data",
"tmp",
],
from: "self",
to: "#session-manager",
},
{
directory: "config-data",
from: "parent",
to: "#session-manager",
},
{
protocol: "fuchsia.hardware.power.statecontrol.Admin",
from: "parent",
to: "#session-manager",
},
{
protocol: [
"fuchsia.ui.input.ImeService",
"fuchsia.ui.input3.Keyboard",
"fuchsia.ui.input3.KeyEventInjector",
"fuchsia.ui.keyboard.focus.Controller",
],
from: "#text_manager",
to: "#session-manager",
},
{
storage: "data",
from: "self",
to: [
"#stash",
"#stash2",
"#stash_secure",
],
},
{
storage: [ "tmp" ],
from: "self",
to: "#exceptions",
},
{
storage: [ "cache" ],
from: "self",
to: "#regulatory_region",
},
{
storage: "cache",
from: "self",
to: "#diagnostics-persistence",
},
{
protocol: [ "fuchsia.vulkan.loader.Loader" ],
from: "#vulkan_loader",
to: [
"#agis",
"#session-manager",
"#starnix_manager",
],
},
{
directory: "dev",
from: "parent",
as: "dev-gpu",
to: [
"#starnix_manager",
"#vulkan_loader",
],
subdir: "class/gpu",
},
{
directory: "dev",
from: "parent",
as: "dev-gpu-dependency-injection",
to: "#vulkan_loader",
subdir: "class/gpu-dependency-injection",
},
{
directory: "dev",
from: "parent",
as: "dev-goldfish-pipe",
to: "#vulkan_loader",
subdir: "class/goldfish-pipe",
},
{
directory: "dev",
from: "parent",
as: "dev-goldfish-control",
to: "#vulkan_loader",
subdir: "class/goldfish-control",
},
{
directory: "dev",
from: "parent",
as: "dev-goldfish-address-space",
to: "#vulkan_loader",
subdir: "class/goldfish-address-space",
},
{
directory: "dev",
from: "parent",
as: "dev-goldfish-sync",
to: "#vulkan_loader",
subdir: "class/goldfish-sync",
},
{
directory: "dev",
from: "parent",
to: "#bluetooth-core",
},
{
protocol: "fuchsia.cobalt.LoggerFactory",
from: "#cobalt",
to: [
"#cobalt_system_metrics",
"#pkg-resolver",
"#sampler",
// TODO(fxbug.dev/96053): remove once basemgr has migrated to
// Cobalt 1.1.
"#session-manager",
"#sysmem_connector",
],
},
{
protocol: "fuchsia.metrics.MetricEventLoggerFactory",
from: "#cobalt",
to: [
"#feedback",
"#log-stats",
"#sampler",
"#session-manager",
],
},
{
protocol: [
"fuchsia.scheduler.ProfileProvider",
"fuchsia.sysinfo.SysInfo",
],
from: "parent",
to: [
"#cobalt",
"#cobalt_system_metrics",
],
},
{
storage: "data",
from: "self",
to: [
"#cobalt",
"#cobalt_system_metrics",
],
},
{
protocol: [
"fuchsia.boot.ReadOnlyLog",
"fuchsia.boot.WriteOnlyLog",
"fuchsia.process.Launcher",
"fuchsia.sysinfo.SysInfo",
],
from: "parent",
to: [ "#feedback" ],
},
{
protocol: [
"fuchsia.hwinfo.Board",
"fuchsia.hwinfo.Product",
],
from: "#hwinfo",
to: "#feedback",
},
{
storage: [
"cache",
"data",
"tmp",
],
from: "self",
to: "#feedback",
},
{
directory: "build-info",
from: "parent",
to: "#feedback",
},
{
directory: "boot",
from: "parent",
to: "#feedback",
},
{
directory: "config-data",
from: "parent",
to: "#mdns",
subdir: "mdns",
},
{
protocol: [ "fuchsia.tracing.provider.Registry" ],
from: "#trace_manager",
to: [
"#agis",
"#cobalt_system_metrics",
"#feedback",
"#linux_runner",
"#metrics-logger",
"#session-manager",
"#starnix_manager",
"#sysmem_connector",
"#system-metrics-logger",
"#temperature-logger",
],
// Trace manager may be excluded from builds where tracing is not
// expected to be used for observability, such as in the bringup
// product and non-eng builds of any product.
source_availability: "unknown",
},
{
storage: "data",
from: "self",
to: [ "#linux_runner" ],
},
{
directory: "dev",
from: "parent",
to: "#linux_runner",
},
{
protocol: [ "fuchsia.ui.scenic.Scenic" ],
from: "self",
to: [ "#linux_runner" ],
},
],
expose: [
{
protocol: "fuchsia.component.Binder",
from: "framework",
},
{
protocol: [ "fuchsia.sessionmanager.Startup" ],
from: "#session-manager",
},
{
protocol: [ "fuchsia.cobalt.LoggerFactory" ],
from: "#cobalt",
},
{
protocol: [ "fuchsia.component.Binder" ],
from: "#detect",
as: "fuchsia.component.DetectBinder",
},
{
protocol: [ "fuchsia.component.Binder" ],
from: "#diagnostics-kcounter",
as: "fuchsia.component.KcounterBinder",
},
{
protocol: [ "fuchsia.component.Binder" ],
from: "#diagnostics-persistence",
as: "fuchsia.component.PersistenceBinder",
},
{
protocol: [ "fuchsia.component.Binder" ],
from: "#log-stats",
as: "fuchsia.component.LogStatsBinder",
},
{
protocol: [ "fuchsia.component.Binder" ],
from: "#sampler",
as: "fuchsia.component.SamplerBinder",
},
{
protocol: [
"fuchsia.pkg.PackageResolver",
"fuchsia.pkg.RepositoryManager",
"fuchsia.pkg.rewrite.Engine",
],
from: "#pkg-resolver",
},
{
protocol: [ "fuchsia.ui.activity.Provider" ],
from: "#activity",
},
{
protocol: [ "fuchsia.exception.Handler" ],
from: "#exceptions",
},
{
protocol: "fuchsia.update.CommitStatusProvider",
from: "#system-update-committer",
},
],
environments: [
{
name: "universe-resolver-env",
extends: "realm",
resolvers: [
{
resolver: "full-resolver",
from: "#universe-resolver",
scheme: "fuchsia-pkg",
},
],
},
],
}