blob: 96919ec1ab20ffd4239ff48aaeb144bcb7dbe364 [file] [log] [blame]
// Copyright 2022 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_STORAGE_LIB_VFS_CPP_INSPECT_NODE_OPERATIONS_H_
#define SRC_STORAGE_LIB_VFS_CPP_INSPECT_NODE_OPERATIONS_H_
#include "src/storage/lib/vfs/cpp/inspect/operation_tracker.h"
namespace fs_inspect {
// Common node operations most filesystems implement.
struct NodeOperations {
internal::OperationTrackerType close;
internal::OperationTrackerType read;
internal::OperationTrackerType write;
internal::OperationTrackerType append;
internal::OperationTrackerType truncate;
internal::OperationTrackerType set_attr;
internal::OperationTrackerType get_attr;
internal::OperationTrackerType sync;
internal::OperationTrackerType read_dir;
internal::OperationTrackerType lookup;
internal::OperationTrackerType create;
internal::OperationTrackerType link;
internal::OperationTrackerType unlink;
#ifdef __Fuchsia__
// **WARNING**: The latency histogram settings must match their metric definitions in Cobalt.
explicit NodeOperations(inspect::Node& node)
: close(node, "close", kNodeOperationHistogramSettings),
read(node, "read", kNodeOperationHistogramSettings),
write(node, "write", kNodeOperationHistogramSettings),
append(node, "append", kNodeOperationHistogramSettings),
truncate(node, "truncate", kNodeOperationHistogramSettings),
set_attr(node, "set_attr", kNodeOperationHistogramSettings),
get_attr(node, "get_attr", kNodeOperationHistogramSettings),
sync(node, "sync", kNodeOperationHistogramSettings),
read_dir(node, "read_dir", kNodeOperationHistogramSettings),
lookup(node, "lookup", kNodeOperationHistogramSettings),
create(node, "create", kNodeOperationHistogramSettings),
link(node, "link", kNodeOperationHistogramSettings),
unlink(node, "unlink", kNodeOperationHistogramSettings) {}
#else
// Stub implementation for host builds.
NodeOperations() = default;
#endif
};
} // namespace fs_inspect
#endif // SRC_STORAGE_LIB_VFS_CPP_INSPECT_NODE_OPERATIONS_H_