| // 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. |
| |
| #include "src/storage/minfs/inspector_inode.h" |
| |
| #include <disk_inspector/common_types.h> |
| |
| #include "src/storage/minfs/inspector_private.h" |
| |
| namespace minfs { |
| |
| void InodeObject::GetValue(const void** out_buffer, size_t* out_buffer_size) const { |
| ZX_DEBUG_ASSERT_MSG(false, "Invalid GetValue call for non primitive data type."); |
| } |
| |
| std::unique_ptr<disk_inspector::DiskObject> InodeObject::GetElementAt(uint32_t index) const { |
| switch (index) { |
| case 0: { |
| // uint32_t magic |
| return CreateUint32DiskObj("magic", &(inode_.magic)); |
| } |
| case 1: { |
| // uint32_t size |
| return CreateUint32DiskObj("size", &(inode_.size)); |
| } |
| case 2: { |
| // uint32_t block_count |
| return CreateUint32DiskObj("block_count", &(inode_.block_count)); |
| } |
| case 3: { |
| // uint32_t link_count |
| return CreateUint32DiskObj("link_count", &(inode_.link_count)); |
| } |
| case 4: { |
| // uint64_t create_time |
| return CreateUint64DiskObj("create_time", &(inode_.create_time)); |
| } |
| case 5: { |
| // uint64_t modify_time |
| return CreateUint64DiskObj("modify_time", &(inode_.modify_time)); |
| } |
| case 6: { |
| // uint32_t seq_num |
| return CreateUint32DiskObj("seq_num", &(inode_.seq_num)); |
| } |
| case 7: { |
| // uint32_t gen_num |
| return CreateUint32DiskObj("gen_num", &(inode_.gen_num)); |
| } |
| case 8: { |
| // uint32_t dirent_count |
| return CreateUint32DiskObj("dirent_count", &(inode_.dirent_count)); |
| } |
| case 9: { |
| // ino_t/uint32_t last_inode |
| return CreateUint32DiskObj("last_inode", &(inode_.last_inode)); |
| } |
| case 10: { |
| // ino_t/uint32_t next_inode |
| return CreateUint32DiskObj("next_inode", &(inode_.next_inode)); |
| } |
| case 11: { |
| // uint32_t Array rsvd |
| return CreateUint32ArrayDiskObj("reserved", inode_.rsvd, 3); |
| } |
| case 12: { |
| // blk_t/uint32_t Array dnum |
| return CreateUint32ArrayDiskObj("direct blocks", inode_.dnum, kMinfsDirect); |
| } |
| case 13: { |
| // blk_t/uint32_t Array inum |
| return CreateUint32ArrayDiskObj("indirect blocks", inode_.inum, kMinfsIndirect); |
| } |
| case 14: { |
| // blk_t/uint32_t Array dinum |
| return CreateUint32ArrayDiskObj("double indirect blocks", inode_.dinum, kMinfsDoublyIndirect); |
| } |
| } |
| return nullptr; |
| } |
| |
| } // namespace minfs |