| // Copyright 2019 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. |
| |
| #pragma once |
| |
| #include <ddk/metadata/test.h> |
| #include <fbl/unique_fd.h> |
| #include <fbl/unique_ptr.h> |
| #include <lib/devmgr-integration-test/fixture.h> |
| |
| namespace driver_integration_test { |
| |
| class IsolatedDevmgr { |
| public: |
| struct Args { |
| // A list of absolute paths (in devmgr's view of the filesystem) to search |
| // for drivers in. The search is non-recursive. If empty, this uses |
| // devmgr's default. |
| fbl::Vector<const char*> driver_search_paths; |
| // A list of absolute paths (in devmgr's view of the filesystem) to load |
| // drivers from. This differs from |driver_search_paths| in that it |
| // specifies specific drivers rather than entire directories. |
| fbl::Vector<const char*> load_drivers; |
| // A list of vid/pid/did triplets to spawn in their own devhosts. |
| fbl::Vector<board_test::DeviceEntry> device_list; |
| }; |
| |
| // Launch a new isolated devmgr. The instance will be destroyed when |
| // |*out|'s dtor runs. |
| static zx_status_t Create(Args args, IsolatedDevmgr* out); |
| |
| // Get a fd to the root of the isolate devmgr's devfs. This fd |
| // may be used with openat() and fdio_watch_directory(). |
| const fbl::unique_fd& devfs_root() const { return devmgr_.devfs_root(); } |
| |
| private: |
| devmgr_integration_test::IsolatedDevmgr devmgr_; |
| }; |
| |
| } // namespace driver_integration_test |