blob: fde5734074663edfa4c5af7bce9f3a91d5bdb2ff [file] [log] [blame]
// Copyright 2018 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.
#ifndef SRC_SYS_APPMGR_SYSTEM_OBJECTS_DIRECTORY_H_
#define SRC_SYS_APPMGR_SYSTEM_OBJECTS_DIRECTORY_H_
#include <lib/zx/process.h>
#include <lib/zx/thread.h>
#include <fbl/string.h>
#include <fs/lazy_dir.h>
#include "src/lib/fxl/strings/string_view.h"
#include "src/lib/inspect_deprecated/deprecated/exposed_object.h"
namespace component {
class SystemObjectsDirectory : public component::ExposedObject {
public:
explicit SystemObjectsDirectory(zx::process process);
private:
class ThreadsDirectory : public component::ExposedObject {
public:
explicit ThreadsDirectory(std::shared_ptr<zx::process> process);
private:
static constexpr uint64_t kAllId = 1;
std::shared_ptr<zx::process> process_;
fit::deferred_action<fit::closure> cleanup_;
};
class MemoryDirectory : public component::ExposedObject {
public:
explicit MemoryDirectory(std::shared_ptr<zx::process> process);
private:
std::shared_ptr<zx::process> process_;
fit::deferred_action<fit::closure> cleanup_;
};
// TODO(CF-761): Refactor this to use dynamic VMO nodes.
std::shared_ptr<zx::process> process_;
std::unique_ptr<ThreadsDirectory> threads_;
std::unique_ptr<MemoryDirectory> memory_;
};
} // namespace component
#endif // SRC_SYS_APPMGR_SYSTEM_OBJECTS_DIRECTORY_H_