| // 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. |
| { |
| include: [ |
| "inspect/offer.shard.cml", |
| "syslog/offer.shard.cml", |
| ], |
| children: [ |
| { |
| name: "sl4f_bridge_server", |
| url: "fuchsia-pkg://fuchsia.com/sl4f-ffx-proxy-server#meta/sl4f_proxy_server.cm", |
| environment: "#core-env", |
| }, |
| { |
| name: "session-manager", |
| url: "fuchsia-pkg://fuchsia.com/session_manager#meta/session_manager.cm", |
| startup: "eager", |
| environment: "#session-env", |
| }, |
| |
| // TODO(https://fxbug.dev/42074694) Remove comment when this transformation is complete. |
| // This is the future home of system update-related components. |
| { |
| name: "system-update", |
| url: "fuchsia-pkg://fuchsia.com/system-update-realm#meta/system-update-realm.cm", |
| startup: "eager", |
| }, |
| { |
| name: "mdns", |
| url: "fuchsia-pkg://fuchsia.com/mdns#meta/mdns.cm", |
| |
| // TODO(https://fxbug.dev/42175335): consider removing eager startup in non-eng builds. |
| startup: "eager", |
| }, |
| { |
| name: "cobalt_system_metrics", |
| url: "fuchsia-pkg://fuchsia.com/cobalt_system_metrics#meta/cobalt_system_metrics.cm", |
| startup: "eager", |
| }, |
| { |
| name: "timekeeper", |
| url: "fuchsia-pkg://fuchsia.com/timekeeper#meta/timekeeper.cm", |
| startup: "eager", |
| }, |
| |
| // 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(https://fxbug.dev/42161411): 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: "#core-env", |
| }, |
| { |
| name: "cobalt", |
| url: "fuchsia-pkg://fuchsia.com/cobalt#meta/cobalt.cm", |
| }, |
| |
| // TODO(https://fxbug.dev/294908023) move to the relevant core shard |
| { |
| name: "starnix_runner", |
| url: "fuchsia-pkg://fuchsia.com/starnix#meta/starnix_runner.cm", |
| environment: "#core-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: "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: "#core-env", |
| }, |
| { |
| name: "ssh-key-manager", |
| url: "fuchsia-pkg://fuchsia.com/ssh-key-manager#meta/ssh-key-manager.cm", |
| }, |
| { |
| name: "full-resolver", |
| url: "fuchsia-pkg://fuchsia.com/full-resolver#meta/full-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: "#core-env", |
| }, |
| { |
| name: "vsock", |
| url: "fuchsia-pkg://fuchsia.com/vsock_service#meta/vsock_service.cm", |
| environment: "#core-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.metrics.MetricEventLoggerFactory" ], |
| from: "#cobalt", |
| to: "#network", |
| dependency: "weak", |
| }, |
| { |
| from: "parent", |
| to: "#network", |
| config: "fuchsia.http-client.StopOnIdleTimeoutMillis", |
| availability: "same_as_target", |
| }, |
| { |
| protocol: [ "fuchsia.ui.activity.Provider" ], |
| from: "#activity", |
| to: [ "#cobalt_system_metrics" ], |
| }, |
| { |
| protocol: "fuchsia.pkg.FontResolver", |
| from: "void", |
| to: "#font_provider", |
| availability: "optional", |
| }, |
| { |
| protocol: [ "fuchsia.device.NameProvider" ], |
| from: "parent", |
| to: [ |
| "#agis", |
| "#mdns", |
| "#network", |
| ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.scheduler.deprecated.ProfileProvider", |
| "fuchsia.scheduler.RoleManager", |
| ], |
| from: "parent", |
| to: [ "#network" ], |
| }, |
| { |
| protocol: "fuchsia.net.http.Loader", |
| from: "#network", |
| to: "#cobalt", |
| }, |
| { |
| protocol: [ "fuchsia.net.interfaces.State" ], |
| from: "#network", |
| to: [ |
| "#mdns", |
| "#timekeeper", |
| ], |
| }, |
| { |
| protocol: [ "fuchsia.diagnostics.ArchiveAccessor" ], |
| from: "parent", |
| to: [ "#timekeeper" ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.net.name.Lookup", |
| "fuchsia.posix.socket.Provider", |
| ], |
| from: "#network", |
| to: [ |
| "#cobalt", |
| "#mdns", |
| "#pkg-resolver", |
| "#timekeeper", |
| ], |
| }, |
| { |
| protocol: [ "fuchsia.posix.socket.Provider" ], |
| from: "#network", |
| to: [ "#agis" ], |
| }, |
| { |
| protocol: [ "fuchsia.posix.socket.Provider" ], |
| from: "#network", |
| to: [ "#sl4f_bridge_server" ], |
| }, |
| { |
| protocol: "fuchsia.stash.SecureStore", |
| from: "#stash_secure", |
| to: [ "#network" ], |
| }, |
| { |
| directory: "config-data", |
| from: "parent", |
| to: [ "#network" ], |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-class-network", |
| to: [ "#network" ], |
| subdir: "network", |
| }, |
| { |
| storage: "cache", |
| from: "self", |
| to: [ "#network" ], |
| }, |
| { |
| storage: "data", |
| from: "self", |
| to: [ "#network" ], |
| }, |
| { |
| protocol: "fuchsia.pkg.PackageResolver", |
| from: "#pkg-resolver", |
| to: "#full-resolver", |
| }, |
| { |
| protocol: [ "fuchsia.pkg.PackageCache" ], |
| from: "parent", |
| to: "#pkg-resolver", |
| }, |
| { |
| // This capability is only offered to pkg-resolver in test scenarios |
| protocol: "fuchsia.pkg.LocalMirror", |
| from: "void", |
| to: "#pkg-resolver", |
| availability: "optional", |
| }, |
| { |
| storage: "data", |
| from: "self", |
| to: "#pkg-resolver", |
| }, |
| { |
| directory: "config-data", |
| from: "parent", |
| to: "#pkg-resolver", |
| subdir: "pkg-resolver", |
| }, |
| { |
| protocol: [ |
| "fuchsia.hardware.power.statecontrol.Admin", |
| "fuchsia.paver.Paver", |
| "fuchsia.update.verify.BlobfsVerifier", |
| ], |
| from: "parent", |
| to: "#system-update", |
| }, |
| { |
| protocol: [ "fuchsia.update.verify.NetstackVerifier" ], |
| from: "#network", |
| to: "#system-update", |
| }, |
| { |
| protocol: [ |
| "fuchsia.sysmem.Allocator", |
| "fuchsia.sysmem2.Allocator", |
| ], |
| from: "parent", |
| to: [ "#agis" ], |
| }, |
| { |
| protocol: "fuchsia.factory.MiscFactoryStoreProvider", |
| from: "#factory_store_providers", |
| to: "#hwinfo", |
| source_availability: "unknown", |
| }, |
| { |
| directory: "config-data", |
| from: "parent", |
| to: "#hwinfo", |
| subdir: "hwinfo", |
| }, |
| { |
| protocol: [ |
| "fuchsia.hwinfo.Board", |
| "fuchsia.hwinfo.Product", |
| ], |
| from: "#hwinfo", |
| to: "#agis", |
| }, |
| { |
| directory: "config-data", |
| from: "parent", |
| to: "#font_provider", |
| subdir: "fonts", |
| }, |
| { |
| protocol: "fuchsia.kernel.Stats", |
| from: "parent", |
| to: "#cobalt_system_metrics", |
| }, |
| { |
| protocol: [ "fuchsia.ui.display.internal.DisplayPower" ], |
| from: "#ui", |
| to: "#brightness_manager", |
| dependency: "weak", |
| source_availability: "unknown", |
| }, |
| { |
| storage: "data", |
| from: "self", |
| to: "#brightness_manager", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-backlight", |
| to: "#brightness_manager", |
| subdir: "backlight", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-input-report", |
| to: "#brightness_manager", |
| subdir: "input-report", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-thermal", |
| to: "#cobalt_system_metrics", |
| subdir: "thermal", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-vsock", |
| to: "#vsock", |
| subdir: "vsock", |
| }, |
| { |
| directory: "root-ssl-certificates", |
| from: "parent", |
| to: [ |
| "#cobalt", |
| "#network", |
| "#pkg-resolver", |
| "#timekeeper", |
| ], |
| }, |
| { |
| directory: "config-data", |
| from: "parent", |
| as: "system-update-committer-config-data", |
| to: "#system-update", |
| 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", |
| }, |
| { |
| directory: "data", |
| from: "parent", |
| as: "ssh", |
| to: "#ssh-key-manager", |
| subdir: "ssh", |
| }, |
| { |
| storage: "data", |
| from: "self", |
| to: [ |
| "#stash", |
| "#stash2", |
| "#stash_secure", |
| ], |
| }, |
| { |
| storage: [ "cache" ], |
| from: "self", |
| to: "#regulatory_region", |
| }, |
| { |
| protocol: [ "fuchsia.vulkan.loader.Loader" ], |
| from: "#vulkan_loader", |
| to: [ "#agis" ], |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-display-coordinator", |
| to: [ "#agis" ], |
| subdir: "display-coordinator", |
| }, |
| { |
| protocol: "fuchsia.memorypressure.Provider", |
| from: "#memory_monitor", |
| to: "#vulkan_loader", |
| source_availability: "unknown", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-gpu", |
| to: [ "#vulkan_loader" ], |
| subdir: "gpu", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-gpu-dependency-injection", |
| to: "#vulkan_loader", |
| subdir: "gpu-dependency-injection", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-goldfish-pipe", |
| to: "#vulkan_loader", |
| subdir: "goldfish-pipe", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-goldfish-control", |
| to: "#vulkan_loader", |
| subdir: "goldfish-control", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-goldfish-address-space", |
| to: "#vulkan_loader", |
| subdir: "goldfish-address-space", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-goldfish-sync", |
| to: "#vulkan_loader", |
| subdir: "goldfish-sync", |
| }, |
| { |
| directory: "dev-class", |
| from: "parent", |
| as: "dev-rtc", |
| to: "#timekeeper", |
| subdir: "rtc", |
| }, |
| { |
| protocol: "fuchsia.metrics.MetricEventLoggerFactory", |
| from: "#cobalt", |
| to: [ |
| "#cobalt_system_metrics", |
| "#pkg-resolver", |
| "#timekeeper", |
| ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.scheduler.RoleManager", |
| "fuchsia.sysinfo.SysInfo", |
| ], |
| from: "parent", |
| to: "#cobalt", |
| }, |
| { |
| protocol: "fuchsia.sysinfo.SysInfo", |
| from: "parent", |
| to: "#cobalt_system_metrics", |
| }, |
| { |
| protocol: "fuchsia.settings.Privacy", |
| from: "#setui_service", |
| to: "#cobalt", |
| |
| // TODO: break the cycle |
| dependency: "weak", |
| source_availability: "unknown", |
| }, |
| { |
| storage: "data", |
| from: "self", |
| to: [ |
| "#cobalt", |
| "#cobalt_system_metrics", |
| ], |
| }, |
| { |
| directory: "config-data", |
| from: "parent", |
| to: "#mdns", |
| subdir: "mdns", |
| }, |
| { |
| directory: "boot", |
| from: "parent", |
| to: "#mdns", |
| }, |
| { |
| protocol: [ "fuchsia.time.Maintenance" ], |
| from: "parent", |
| to: [ "#timekeeper" ], |
| }, |
| { |
| protocol: [ |
| "fuchsia.power.broker.Topology", |
| "fuchsia.power.system.ActivityGovernor", |
| ], |
| from: "parent", |
| to: [ "#timekeeper" ], |
| |
| // Only used if the structured config option is set |
| // for timekeeper: |
| // `power_topology_integration_enabled: true` |
| // See: |
| // `//src/sys/time/timekeeper/config.shard.cml` |
| availability: "optional", |
| }, |
| { |
| protocol: [ |
| "fuchsia.power.broker.Topology", |
| "fuchsia.power.system.ActivityGovernor", |
| ], |
| from: "parent", |
| to: [ "#session-manager" ], |
| availability: "optional", |
| }, |
| { |
| from: "parent", |
| to: "#session-manager", |
| config: "fuchsia.power.SuspendEnabled", |
| }, |
| { |
| protocol: [ |
| "fuchsia.tracing.perfetto.ProducerConnector", |
| "fuchsia.tracing.provider.Registry", |
| ], |
| from: "#trace_manager", |
| to: "all", |
| |
| // Weak offers to resolve dependency cycles that would be caused by |
| // using #core-env. Regardless of cycles, tracing is an optional |
| // feature and a client should be able to handle trace_manager |
| // being unavailable. |
| dependency: "weak", |
| |
| // 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", |
| }, |
| { |
| protocol: "fuchsia.update.channel.Provider", |
| from: "#system-update", |
| to: "#cobalt", |
| dependency: "weak", |
| availability: "optional", |
| }, |
| ], |
| expose: [ |
| { |
| protocol: [ "fuchsia.dash.Launcher" ], |
| from: "#debug-dash-launcher", |
| source_availability: "unknown", |
| }, |
| { |
| protocol: "fuchsia.component.Binder", |
| from: "framework", |
| }, |
| { |
| protocol: [ "fuchsia.metrics.MetricEventLoggerFactory" ], |
| from: "#cobalt", |
| }, |
| { |
| protocol: [ |
| "fuchsia.pkg.PackageResolver", |
| "fuchsia.pkg.RepositoryManager", |
| "fuchsia.pkg.rewrite.Engine", |
| ], |
| from: "#pkg-resolver", |
| }, |
| { |
| protocol: [ "fuchsia.ui.activity.Provider" ], |
| from: "#activity", |
| }, |
| { |
| protocol: "fuchsia.update.CommitStatusProvider", |
| from: "#system-update", |
| }, |
| { |
| protocol: [ |
| "fuchsia.net.name.Lookup", |
| "fuchsia.posix.socket.Provider", |
| ], |
| from: "#network", |
| }, |
| { |
| protocol: "fuchsia.component.DetectBinder", |
| from: "#diagnostics", |
| availability: "optional", |
| source_availability: "unknown", |
| }, |
| { |
| protocol: [ |
| "fuchsia.virtualization.LinuxManager", |
| "fuchsia.virtualization.TerminaGuestManager", |
| ], |
| from: "#termina-guest-manager", |
| source_availability: "unknown", |
| }, |
| { |
| protocol: [ "fuchsia.virtualization.DebianGuestManager" ], |
| from: "#debian-guest-manager", |
| source_availability: "unknown", |
| }, |
| { |
| protocol: [ "fuchsia.virtualization.ZirconGuestManager" ], |
| from: "#zircon-guest-manager", |
| source_availability: "unknown", |
| }, |
| { |
| protocol: [ |
| "fuchsia.tracing.controller.Controller", |
| "fuchsia.tracing.perfetto.ProducerConnector", |
| "fuchsia.tracing.provider.Registry", |
| ], |
| from: "#trace_manager", |
| source_availability: "unknown", |
| }, |
| |
| // TODO(https://fxbug.dev/324494668): remove this when Netstack2 is gone. |
| { |
| directory: "netstack-diagnostics", |
| from: "#network", |
| availability: "optional", |
| }, |
| ], |
| } |