LinkInode.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
  3. * Copyright (c) 2021, Spencer Dixon <spencercdixon@gmail.com>
  4. * Copyright (c) 2021, Liav A. <liavalb@hotmail.co.il>
  5. *
  6. * SPDX-License-Identifier: BSD-2-Clause
  7. */
  8. #include <Kernel/FileSystem/ProcFS/LinkInode.h>
  9. namespace Kernel {
  10. ErrorOr<NonnullLockRefPtr<ProcFSLinkInode>> ProcFSLinkInode::try_create(ProcFS const& procfs, ProcFSExposedComponent const& component)
  11. {
  12. return adopt_nonnull_lock_ref_or_enomem(new (nothrow) ProcFSLinkInode(procfs, component));
  13. }
  14. ProcFSLinkInode::ProcFSLinkInode(ProcFS const& fs, ProcFSExposedComponent const& component)
  15. : ProcFSGlobalInode(fs, component)
  16. {
  17. }
  18. InodeMetadata ProcFSLinkInode::metadata() const
  19. {
  20. MutexLocker locker(m_inode_lock);
  21. InodeMetadata metadata;
  22. metadata.inode = { fsid(), m_associated_component->component_index() };
  23. metadata.mode = S_IFLNK | m_associated_component->required_mode();
  24. metadata.uid = m_associated_component->owner_user();
  25. metadata.gid = m_associated_component->owner_group();
  26. metadata.size = 0;
  27. metadata.mtime = m_associated_component->modified_time();
  28. return metadata;
  29. }
  30. }