blob: 80df2b57baff6a53b6df40dc1682170dd16e7b7b [file] [log] [blame]
// Copyright 2020 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.
#include "inspect.h"
#include <fs/vmo_file.h>
InspectManager::InspectManager(async_dispatcher_t* dispatcher) {
inspect_vmo_ = inspect_.DuplicateVmo();
diagnostics_dir_ = fbl::MakeRefCounted<fs::PseudoDir>();
driver_manager_dir_ = fbl::MakeRefCounted<fs::PseudoDir>();
diagnostics_dir_->AddEntry("driver_manager", driver_manager_dir_);
uint64_t vmo_size;
ZX_ASSERT(inspect_vmo_.get_size(&vmo_size) == ZX_OK);
auto vmo_file = fbl::MakeRefCounted<fs::VmoFile>(inspect_vmo_, 0, vmo_size);
driver_manager_dir_->AddEntry("dm.inspect", vmo_file);
if (dispatcher) {
zx::channel local;
zx::channel::create(0, &diagnostics_client_, &local);
diagnostics_vfs_ = std::make_unique<fs::SynchronousVfs>(dispatcher);
diagnostics_vfs_->ServeDirectory(diagnostics_dir_, std::move(local));
}
}