| { |
| include: [ "sdk/lib/diagnostics/syslog/client.shard.cml" ], |
| program: { |
| binary: "bin/appmgr", |
| |
| // Run appmgr in a job with ZX_POL_AMBIENT_MARK_VMO_EXEC job policy, so that it can in turn |
| // implement the v1 'deprecated-ambient-replace-as-executable' feature. |
| job_policy_ambient_mark_vmo_exec: "true", |
| lifecycle: { stop_event: "notify" }, |
| }, |
| capabilities: [ |
| { |
| protocol: "fuchsia.appmgr.Startup", |
| path: "/appmgr_svc/fuchsia.appmgr.Startup", |
| }, |
| { |
| protocol: [ |
| "fuchsia.pkg.FontResolver", |
| "fuchsia.test.manager.Harness", |
| ], |
| }, |
| { |
| directory: "hub", |
| rights: [ "rw*" ], |
| path: "/hub", |
| }, |
| { |
| directory: "diagnostics", |
| rights: [ "connect" ], |
| path: "/diagnostics", |
| }, |
| |
| // These protocols exposed by appmgr are services from the v1 component |
| // runtime being made available to the v2 component runtime. These all cause |
| // dependency cycles between the two runtimes. Cycles require trickier |
| // runtime logic to ensure correctness, are a general design smell, and may |
| // be disallowed in the future. |
| { |
| protocol: [ |
| "fuchsia.cobalt.LoggerFactory", |
| "fuchsia.exception.Handler", |
| "fuchsia.feedback.CrashReporter", |
| "fuchsia.feedback.CrashReportingProductRegister", |
| "fuchsia.metrics.MetricEventLoggerFactory", |
| "fuchsia.net.NameLookup", |
| "fuchsia.net.stack.Log", |
| "fuchsia.net.stack.Stack", |
| "fuchsia.netstack.Netstack", |
| "fuchsia.overnet.Overnet", |
| "fuchsia.overnet.ServicePublisher", |
| "fuchsia.pkg.PackageResolver", |
| "fuchsia.pkg.RepositoryManager", |
| "fuchsia.pkg.rewrite.Engine", |
| "fuchsia.posix.socket.Provider", |
| "fuchsia.power.manager.DriverManagerRegistration", |
| "fuchsia.process.Resolver", |
| "fuchsia.sys.Environment", |
| "fuchsia.sys.Launcher", |
| "fuchsia.sys.Loader", |
| "fuchsia.tracing.controller.Controller", |
| "fuchsia.tracing.provider.Registry", |
| ], |
| }, |
| |
| // These protocols exposed by appmgr are implemented by appmgr. |
| { |
| protocol: "fuchsia.sys.internal.LogConnector", |
| from: "self", |
| path: "/appmgr_svc/fuchsia.sys.internal.LogConnector", |
| }, |
| { |
| protocol: "fuchsia.sys.internal.ComponentEventProvider", |
| from: "self", |
| path: "/appmgr_svc/fuchsia.sys.internal.ComponentEventProvider", |
| }, |
| ], |
| use: [ |
| { runner: "elf" }, |
| { |
| directory: "blob", |
| rights: [ "rw*" ], |
| path: "/blob", |
| }, |
| { |
| directory: "boot", |
| rights: [ "rx*" ], |
| path: "/boot", |
| }, |
| { |
| directory: "dev", |
| rights: [ "rw*" ], |
| path: "/dev", |
| }, |
| { |
| directory: "durable", |
| rights: [ "rw*" ], |
| path: "/durable", |
| }, |
| { |
| directory: "factory", |
| rights: [ "r*" ], |
| path: "/factory", |
| }, |
| { |
| directory: "minfs", |
| rights: [ "rw*" ], |
| path: "/data", |
| }, |
| { |
| directory: "pkgfs", |
| rights: [ "rx*" ], |
| path: "/pkgfs", |
| }, |
| { |
| directory: "system", |
| rights: [ "rx*" ], |
| path: "/system", |
| }, |
| { |
| directory: "tmp", |
| rights: [ "rw*" ], |
| path: "/tmp", |
| }, |
| { |
| directory: "hub", |
| rights: [ "r*" ], |
| path: "/hub-v2", |
| }, |
| |
| // Services used by appmgr with the svc_for_sys prefix are passed through to |
| // the sys realm |
| |
| // From bootsvc |
| { |
| protocol: "fuchsia.boot.Arguments", |
| path: "/svc_for_sys/fuchsia.boot.Arguments", |
| }, |
| { |
| protocol: "fuchsia.boot.FactoryItems", |
| path: "/svc_for_sys/fuchsia.boot.FactoryItems", |
| }, |
| { |
| protocol: "fuchsia.boot.Items", |
| path: "/svc_for_sys/fuchsia.boot.Items", |
| }, |
| { |
| protocol: "fuchsia.boot.ReadOnlyLog", |
| path: "/svc_for_sys/fuchsia.boot.ReadOnlyLog", |
| }, |
| { |
| protocol: "fuchsia.kernel.RootJob", |
| path: "/svc_for_sys/fuchsia.kernel.RootJob", |
| }, |
| { |
| protocol: "fuchsia.kernel.RootJobForInspect", |
| path: "/svc_for_sys/fuchsia.kernel.RootJobForInspect", |
| }, |
| { |
| protocol: "fuchsia.boot.RootResource", |
| path: "/svc_for_sys/fuchsia.boot.RootResource", |
| }, |
| { |
| protocol: "fuchsia.boot.WriteOnlyLog", |
| path: "/svc_for_sys/fuchsia.boot.WriteOnlyLog", |
| }, |
| { |
| protocol: "fuchsia.kernel.DebugResource", |
| path: "/svc_for_sys/fuchsia.kernel.DebugResource", |
| }, |
| { |
| protocol: "fuchsia.kernel.HypervisorResource", |
| path: "/svc_for_sys/fuchsia.kernel.HypervisorResource", |
| }, |
| { |
| protocol: "fuchsia.kernel.InfoResource", |
| path: "/svc_for_sys/fuchsia.kernel.InfoResource", |
| }, |
| { |
| protocol: "fuchsia.kernel.IoportResource", |
| path: "/svc_for_sys/fuchsia.kernel.IoportResource", |
| }, |
| { |
| protocol: "fuchsia.kernel.IrqResource", |
| path: "/svc_for_sys/fuchsia.kernel.IrqResource", |
| }, |
| { |
| protocol: "fuchsia.kernel.MmioResource", |
| path: "/svc_for_sys/fuchsia.kernel.MmioResource", |
| }, |
| { |
| protocol: "fuchsia.kernel.SmcResource", |
| path: "/svc_for_sys/fuchsia.kernel.SmcResource", |
| }, |
| { |
| protocol: "fuchsia.kernel.Stats", |
| path: "/svc_for_sys/fuchsia.kernel.Stats", |
| }, |
| { |
| protocol: "fuchsia.kernel.VmexResource", |
| path: "/svc_for_sys/fuchsia.kernel.VmexResource", |
| }, |
| { |
| protocol: "fuchsia.tracing.kernel.Controller", |
| path: "/svc_for_sys/fuchsia.tracing.kernel.Controller", |
| }, |
| { |
| protocol: "fuchsia.tracing.kernel.Reader", |
| path: "/svc_for_sys/fuchsia.tracing.kernel.Reader", |
| }, |
| |
| // From ptysvc |
| { |
| protocol: "fuchsia.hardware.pty.Device", |
| path: "/svc_for_sys/fuchsia.hardware.pty.Device", |
| }, |
| |
| // From devcoordinator |
| { |
| protocol: "fuchsia.device.NameProvider", |
| path: "/svc_for_sys/fuchsia.device.NameProvider", |
| }, |
| { |
| protocol: "fuchsia.device.manager.Administrator", |
| path: "/svc_for_sys/fuchsia.device.manager.Administrator", |
| }, |
| { |
| protocol: "fuchsia.device.manager.DebugDumper", |
| path: "/svc_for_sys/fuchsia.device.manager.DebugDumper", |
| }, |
| { |
| protocol: "fuchsia.device.manager.BindDebugger", |
| path: "/svc_for_sys/fuchsia.device.manager.BindDebugger", |
| }, |
| { |
| protocol: "fuchsia.hardware.pci.Bus", |
| path: "/svc_for_sys/fuchsia.hardware.pci.Bus", |
| }, |
| { |
| protocol: "fuchsia.hardware.power.statecontrol.Admin", |
| path: "/svc_for_sys/fuchsia.hardware.power.statecontrol.Admin", |
| }, |
| { |
| protocol: "fuchsia.kernel.Counter", |
| path: "/svc_for_sys/fuchsia.kernel.Counter", |
| }, |
| { |
| protocol: "fuchsia.kernel.DebugBroker", |
| path: "/svc_for_sys/fuchsia.kernel.DebugBroker", |
| }, |
| { |
| protocol: "fuchsia.paver.Paver", |
| path: "/svc_for_sys/fuchsia.paver.Paver", |
| }, |
| { |
| protocol: "fuchsia.scheduler.ProfileProvider", |
| path: "/svc_for_sys/fuchsia.scheduler.ProfileProvider", |
| }, |
| { |
| protocol: "fuchsia.virtualconsole.SessionManager", |
| path: "/svc_for_sys/fuchsia.virtualconsole.SessionManager", |
| }, |
| |
| // From component_manager |
| { |
| protocol: "fuchsia.process.Launcher", |
| path: "/svc_for_sys/fuchsia.process.Launcher", |
| }, |
| { |
| protocol: "fuchsia.time.Maintenance", |
| path: "/svc_for_sys/fuchsia.time.Maintenance", |
| }, |
| |
| // From v2 components |
| { |
| protocol: "fuchsia.fonts.Provider", |
| path: "/svc_for_sys/fuchsia.fonts.Provider", |
| }, |
| { |
| protocol: "fuchsia.update.CommitStatusProvider", |
| path: "/svc_for_sys/fuchsia.update.CommitStatusProvider", |
| }, |
| { |
| protocol: "fuchsia.developer.remotecontrol.RemoteControl", |
| path: "/svc_for_sys/fuchsia.developer.remotecontrol.RemoteControl", |
| }, |
| { |
| protocol: "fuchsia.hardware.serial.NewDeviceProxy", |
| path: "/svc_for_sys/fuchsia.hardware.serial.NewDeviceProxy", |
| }, |
| { |
| protocol: "fuchsia.thermal.test.TemperatureLogger", |
| path: "/svc_for_sys/fuchsia.thermal.test.TemperatureLogger", |
| }, |
| { |
| protocol: "fuchsia.ui.activity.Provider", |
| path: "/svc_for_sys/fuchsia.ui.activity.Provider", |
| }, |
| { |
| protocol: "fuchsia.ui.activity.Tracker", |
| path: "/svc_for_sys/fuchsia.ui.activity.Tracker", |
| }, |
| { |
| protocol: "fuchsia.ui.activity.control.Control", |
| path: "/svc_for_sys/fuchsia.ui.activity.control.Control", |
| }, |
| |
| // From archivist |
| { |
| protocol: "fuchsia.diagnostics.ArchiveAccessor", |
| path: "/svc_for_sys/fuchsia.diagnostics.ArchiveAccessor", |
| }, |
| { |
| protocol: "fuchsia.diagnostics.FeedbackArchiveAccessor", |
| path: "/svc_for_sys/fuchsia.diagnostics.FeedbackArchiveAccessor", |
| }, |
| { |
| protocol: "fuchsia.diagnostics.LegacyMetricsArchiveAccessor", |
| path: "/svc_for_sys/fuchsia.diagnostics.LegacyMetricsArchiveAccessor", |
| }, |
| { |
| protocol: "fuchsia.logger.Log", |
| path: "/svc_for_sys/fuchsia.logger.Log", |
| }, |
| |
| // From sysinfo |
| { |
| protocol: "fuchsia.sysinfo.SysInfo", |
| path: "/svc_for_sys/fuchsia.sysinfo.SysInfo", |
| }, |
| |
| // From test_manager |
| { |
| protocol: "fuchsia.test.manager.Harness", |
| path: "/svc_for_sys/fuchsia.test.manager.Harness", |
| }, |
| |
| // From power_manager |
| { |
| protocol: "fuchsia.thermal.Controller", |
| path: "/svc_for_sys/fuchsia.thermal.Controller", |
| }, |
| { |
| protocol: "fuchsia.hardware.power.statecontrol.RebootMethodsWatcherRegister", |
| path: "/svc_for_sys/fuchsia.hardware.power.statecontrol.RebootMethodsWatcherRegister", |
| }, |
| |
| // These services are used by appmgr directly |
| { |
| protocol: [ |
| "fuchsia.boot.WriteOnlyLog", |
| |
| // For triggering reboot when sysmgr exits |
| "fuchsia.hardware.power.statecontrol.Admin", |
| "fuchsia.process.Launcher", |
| ], |
| }, |
| ], |
| expose: [ |
| { |
| directory: "hub", |
| from: "self", |
| }, |
| |
| // Diagnostics directory used to expose data to Archivist. |
| { |
| directory: "diagnostics", |
| from: "self", |
| to: "framework", |
| }, |
| { |
| protocol: [ |
| "fuchsia.cobalt.LoggerFactory", |
| "fuchsia.exception.Handler", |
| "fuchsia.feedback.CrashReporter", |
| "fuchsia.feedback.CrashReportingProductRegister", |
| "fuchsia.metrics.MetricEventLoggerFactory", |
| "fuchsia.net.NameLookup", |
| "fuchsia.net.stack.Log", |
| "fuchsia.net.stack.Stack", |
| "fuchsia.netstack.Netstack", |
| "fuchsia.overnet.Overnet", |
| "fuchsia.overnet.ServicePublisher", |
| "fuchsia.pkg.FontResolver", |
| "fuchsia.pkg.PackageResolver", |
| "fuchsia.pkg.RepositoryManager", |
| "fuchsia.pkg.rewrite.Engine", |
| "fuchsia.posix.socket.Provider", |
| "fuchsia.power.manager.DriverManagerRegistration", |
| "fuchsia.process.Resolver", |
| "fuchsia.sys.Environment", |
| "fuchsia.sys.Launcher", |
| "fuchsia.sys.Loader", |
| "fuchsia.test.manager.Harness", |
| "fuchsia.tracing.controller.Controller", |
| "fuchsia.tracing.provider.Registry", |
| ], |
| from: "self", |
| }, |
| { |
| protocol: [ |
| "fuchsia.appmgr.Startup", |
| "fuchsia.sys.internal.ComponentEventProvider", |
| "fuchsia.sys.internal.LogConnector", |
| ], |
| from: "self", |
| }, |
| ], |
| } |