blob: cd41509a6e08fea96bcd8882751991fb0aa4687e [file] [log] [blame] [view] [edit]
# Isolated Devmgr
This library contains a set of tools to streamline the creation of components
that expose isolated devmgrs.
## Usage
To create your own version of an isolated devmgr, you first need to define a
build rule for it, which will look like:
```gn
import("//src/lib/isolated_devmgr/isolated_devmgr.gni")
isolated_devmgr_component("my-devmgr") {
args = [
"--svc_name=fuchsia.example.MyDevmgr",
"--load_driver=/boot/driver/my_driver1.so",
"--load_driver=/boot/driver/my_driver2.so",
"--wait_for=sys/my_driver"
]
deps = [
"//src/devices/tests/sysdev",
"//path/to/my/driver:my-driver",
]
}
```
The `args` parameter configures its behavior for your own use case. You can see
all the supported arguments [here](./main.cc). The main arguments you typically
will provide are `svc_name` and `load_driver`. `svc_name` configures the name of
the `devfs` namespace that will be exposed to the component's directory request
and `load_driver` (which can be expressed multiple times) lists drivers to load
when it is launched. `device_vid_pid_did` is optional argument which can be used
to create a device.
With this custom isolated devmgr, you can then use it in test cases by either
launching it manually using the fuchsia-url for your package (in this example
`fuchsia-pkg://fuchsia.com/my-package#meta/my-devmgr.cmx`) or you can inject it
as a service and use service injection in your test component's manifest, like
so:
```json
{
"facets": {
"fuchsia.test": {
"injected-services" : {
"fuchsia.example.MyDevmgr": "fuchsia-pkg://fuchsia.com/my-package#meta/my-devmgr.cmx"
}
}
},
"program": {
"binary": "test/my_devmgr_test"
},
"sandbox": {
"services": [
"fuchsia.example.MyDevmgr"
]
}
}
```
In either case you will want to make sure to list the isolated devmgr as a `dep`
for your test component.
## Using inspect with isolated devmgr
The device tree and the diagnostics are hosted in the outgoing directory of the test component.
In order to view the inspect files -
1. Add a breakpoint to the test using [zxdb](https://fuchsia.dev/fuchsia-src/development/debugger/debugger_usage).
2. When breakpoint is hit, open `fx shell` and find the hub path to the test component.
E.g:
```
find /hub -name fs-management-devmgr.cmx
/hub/r/test_env_af569d6f/31969/c/fs-management-devmgr.cmx
```
3. You can view the inspect file using iquery.
E.g:
```
fx iquery show-file /hub/r/test_env_af569d6f/31969/c/fs-management-devmgr.cmx/32468/out/dev/diagnostics/driver_manager/dm.inspect
```