| // Copyright 2022 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. |
| { |
| capabilities: [ |
| { |
| directory: "dev", |
| |
| // TODO(https://fxbug.dev/42165885): make this read-only when /dev/null |
| // and /dev/zero are no longer implemented by this component. |
| rights: [ "rw*" ], |
| path: "/dev", |
| }, |
| { |
| protocol: [ |
| "fuchsia.device.fs.lifecycle.Lifecycle", |
| "fuchsia.device.fs.with.pkg.lifecycle.Lifecycle", |
| "fuchsia.device.manager.Administrator", |
| "fuchsia.driver.development.Manager", |
| "fuchsia.driver.framework.CompositeNodeManager", |
| ], |
| }, |
| { service: "fuchsia.driver.compat.Service" }, |
| |
| // Component runner for drivers |
| { |
| runner: "driver", |
| path: "/svc/fuchsia.component.runner.ComponentRunner", |
| }, |
| { |
| runner: "driver-host2", |
| path: "/svc/fuchsia.component.runner.DriverHostRunner", |
| }, |
| ], |
| use: [ |
| { |
| protocol: [ |
| "fuchsia.boot.Items", |
| "fuchsia.component.resolution.Resolver-base", |
| "fuchsia.component.resolution.Resolver-boot", |
| "fuchsia.device.manager.SystemStateTransition", |
| "fuchsia.driver.index.DevelopmentManager", |
| "fuchsia.driver.index.DriverIndex", |
| "fuchsia.scheduler.RoleManager", |
| "power-manager-outlives-driver-manager", |
| ], |
| }, |
| { |
| // This is only used when the kernel commandline flag devmgr.enable-ephemeral |
| // is set, which enables loading drivers ephemerally. This is intended for |
| // eng builds only. |
| protocol: [ "fuchsia.component.resolution.Resolver-full" ], |
| availability: "optional", |
| }, |
| { |
| protocol: [ "fuchsia.tracing.provider.Registry" ], |
| |
| // 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. |
| availability: "optional", |
| }, |
| { |
| // The Realm protocol is required to start components. |
| protocol: "fuchsia.component.Realm", |
| }, |
| { |
| config: "fuchsia.driver.DelayFallbackUntilBaseDriversIndexed", |
| key: "delay_fallback_until_base_drivers_indexed", |
| availability: "optional", |
| type: "bool", |
| }, |
| { |
| config: "fuchsia.driver.manager.DriverHostCrashPolicy", |
| key: "driver_host_crash_policy", |
| availability: "optional", |
| type: "string", |
| max_size: 20, |
| }, |
| { |
| config: "fuchsia.driver.manager.RootDriver", |
| key: "root_driver", |
| availability: "optional", |
| type: "string", |
| max_size: 100, |
| }, |
| { |
| config: "fuchsia.driver.manager.EnableTestShutdownDelays", |
| key: "enable_test_shutdown_delays", |
| availability: "optional", |
| type: "bool", |
| }, |
| ], |
| expose: [ |
| { |
| directory: "dev", |
| from: "self", |
| }, |
| { |
| protocol: [ |
| "fuchsia.device.fs.lifecycle.Lifecycle", |
| "fuchsia.device.fs.with.pkg.lifecycle.Lifecycle", |
| "fuchsia.device.manager.Administrator", |
| "fuchsia.driver.development.Manager", |
| "fuchsia.driver.framework.CompositeNodeManager", |
| ], |
| from: "self", |
| }, |
| { |
| runner: "driver", |
| from: "self", |
| }, |
| { |
| runner: "driver-host2", |
| from: "self", |
| }, |
| { |
| service: "fuchsia.driver.compat.Service", |
| from: "self", |
| }, |
| ], |
| config: { |
| // Whether to set the root driver host as critical or not. |
| set_root_driver_host_critical: { type: "bool" }, |
| |
| // Whether or not fallback drivers should wait until base drivers have been indexed |
| // before bound. |
| delay_fallback_until_base_drivers_indexed: { type: "bool" }, |
| |
| // If this option is set, the system invokes kernel fallback to reboot or poweroff |
| // the device when the operation did not finish in 10 seconds. |
| suspend_timeout_fallback: { type: "bool" }, |
| |
| // If true, set the verbosity level to log all logs. |
| verbose: { type: "bool" }, |
| |
| // Sets the policy for what action to take when a driver host crash is observed by |
| // the driver manager. |
| // |
| // Valid options include: |
| // |
| // * `restart-driver-host` : Restarts the driver host (up to 3 times). |
| // * `reboot-system` : Reboots the system. |
| // * `do-nothing` : Take no action on observed crash. |
| driver_host_crash_policy: { |
| type: "string", |
| max_size: 20, |
| }, |
| |
| // URL for the root driver to load. |
| root_driver: { |
| type: "string", |
| max_size: 100, |
| }, |
| enable_test_shutdown_delays: { type: "bool" }, |
| }, |
| } |