mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 22:02:44 +00:00 
			
		
		
		
	Kernel/DevFS: Remove redundant DevFS& member from DevFSInode
All Inode subclasses can get to their FileSystem via Inode::fs().
This commit is contained in:
		
							parent
							
								
									bd37840cf5
								
							
						
					
					
						commit
						d3cf4cd8f0
					
				
					 2 changed files with 13 additions and 11 deletions
				
			
		|  | @ -218,12 +218,12 @@ RefPtr<Inode> DevFSDirectoryInode::lookup(StringView) | ||||||
| 
 | 
 | ||||||
| DevFSRootDirectoryInode::DevFSRootDirectoryInode(DevFS& fs) | DevFSRootDirectoryInode::DevFSRootDirectoryInode(DevFS& fs) | ||||||
|     : DevFSDirectoryInode(fs) |     : DevFSDirectoryInode(fs) | ||||||
|     , m_parent_fs(fs) |  | ||||||
| { | { | ||||||
| } | } | ||||||
|  | 
 | ||||||
| KResult DevFSRootDirectoryInode::traverse_as_directory(Function<bool(FileSystem::DirectoryEntryView const&)> callback) const | KResult DevFSRootDirectoryInode::traverse_as_directory(Function<bool(FileSystem::DirectoryEntryView const&)> callback) const | ||||||
| { | { | ||||||
|     MutexLocker locker(m_parent_fs.m_lock); |     MutexLocker locker(fs().m_lock); | ||||||
|     callback({ ".", identifier(), 0 }); |     callback({ ".", identifier(), 0 }); | ||||||
|     callback({ "..", identifier(), 0 }); |     callback({ "..", identifier(), 0 }); | ||||||
| 
 | 
 | ||||||
|  | @ -244,7 +244,7 @@ KResult DevFSRootDirectoryInode::traverse_as_directory(Function<bool(FileSystem: | ||||||
| } | } | ||||||
| RefPtr<Inode> DevFSRootDirectoryInode::lookup(StringView name) | RefPtr<Inode> DevFSRootDirectoryInode::lookup(StringView name) | ||||||
| { | { | ||||||
|     MutexLocker locker(m_parent_fs.m_lock); |     MutexLocker locker(fs().m_lock); | ||||||
|     for (auto& subdirectory : m_subdirectories) { |     for (auto& subdirectory : m_subdirectories) { | ||||||
|         if (subdirectory.name() == name) |         if (subdirectory.name() == name) | ||||||
|             return subdirectory; |             return subdirectory; | ||||||
|  | @ -263,7 +263,7 @@ RefPtr<Inode> DevFSRootDirectoryInode::lookup(StringView name) | ||||||
| } | } | ||||||
| KResultOr<NonnullRefPtr<Inode>> DevFSRootDirectoryInode::create_child(StringView name, mode_t mode, dev_t, uid_t, gid_t) | KResultOr<NonnullRefPtr<Inode>> DevFSRootDirectoryInode::create_child(StringView name, mode_t mode, dev_t, uid_t, gid_t) | ||||||
| { | { | ||||||
|     MutexLocker locker(m_parent_fs.m_lock); |     MutexLocker locker(fs().m_lock); | ||||||
| 
 | 
 | ||||||
|     InodeMetadata metadata; |     InodeMetadata metadata; | ||||||
|     metadata.mode = mode; |     metadata.mode = mode; | ||||||
|  | @ -274,15 +274,15 @@ KResultOr<NonnullRefPtr<Inode>> DevFSRootDirectoryInode::create_child(StringView | ||||||
|         } |         } | ||||||
|         if (name != "pts") |         if (name != "pts") | ||||||
|             return EROFS; |             return EROFS; | ||||||
|         auto new_directory_inode = adopt_ref_if_nonnull(new (nothrow) DevFSPtsDirectoryInode(m_parent_fs)); |         auto new_directory_inode = adopt_ref_if_nonnull(new (nothrow) DevFSPtsDirectoryInode(fs())); | ||||||
|         if (!new_directory_inode) |         if (!new_directory_inode) | ||||||
|             return ENOMEM; |             return ENOMEM; | ||||||
|         if (!m_subdirectories.try_ensure_capacity(m_subdirectories.size() + 1)) |         if (!m_subdirectories.try_ensure_capacity(m_subdirectories.size() + 1)) | ||||||
|             return ENOMEM; |             return ENOMEM; | ||||||
|         if (!m_parent_fs.m_nodes.try_ensure_capacity(m_parent_fs.m_nodes.size() + 1)) |         if (!fs().m_nodes.try_ensure_capacity(fs().m_nodes.size() + 1)) | ||||||
|             return ENOMEM; |             return ENOMEM; | ||||||
|         m_subdirectories.append(*new_directory_inode); |         m_subdirectories.append(*new_directory_inode); | ||||||
|         m_parent_fs.m_nodes.append(*new_directory_inode); |         fs().m_nodes.append(*new_directory_inode); | ||||||
|         return KResult(KSuccess); |         return KResult(KSuccess); | ||||||
|     } |     } | ||||||
|     if (metadata.is_symlink()) { |     if (metadata.is_symlink()) { | ||||||
|  | @ -293,15 +293,15 @@ KResultOr<NonnullRefPtr<Inode>> DevFSRootDirectoryInode::create_child(StringView | ||||||
|         auto name_kstring = KString::try_create(name); |         auto name_kstring = KString::try_create(name); | ||||||
|         if (!name_kstring) |         if (!name_kstring) | ||||||
|             return ENOMEM; |             return ENOMEM; | ||||||
|         auto new_link_inode = adopt_ref_if_nonnull(new (nothrow) DevFSLinkInode(m_parent_fs, name_kstring.release_nonnull())); |         auto new_link_inode = adopt_ref_if_nonnull(new (nothrow) DevFSLinkInode(fs(), name_kstring.release_nonnull())); | ||||||
|         if (!new_link_inode) |         if (!new_link_inode) | ||||||
|             return ENOMEM; |             return ENOMEM; | ||||||
|         if (!m_links.try_ensure_capacity(m_links.size() + 1)) |         if (!m_links.try_ensure_capacity(m_links.size() + 1)) | ||||||
|             return ENOMEM; |             return ENOMEM; | ||||||
|         if (!m_parent_fs.m_nodes.try_ensure_capacity(m_parent_fs.m_nodes.size() + 1)) |         if (!fs().m_nodes.try_ensure_capacity(fs().m_nodes.size() + 1)) | ||||||
|             return ENOMEM; |             return ENOMEM; | ||||||
|         m_links.append(*new_link_inode); |         m_links.append(*new_link_inode); | ||||||
|         m_parent_fs.m_nodes.append(*new_link_inode); |         fs().m_nodes.append(*new_link_inode); | ||||||
|         return new_link_inode.release_nonnull(); |         return new_link_inode.release_nonnull(); | ||||||
|     } |     } | ||||||
|     return EROFS; |     return EROFS; | ||||||
|  |  | ||||||
|  | @ -48,6 +48,9 @@ class DevFSInode : public Inode { | ||||||
| public: | public: | ||||||
|     virtual StringView name() const = 0; |     virtual StringView name() const = 0; | ||||||
| 
 | 
 | ||||||
|  |     DevFS& fs() { return static_cast<DevFS&>(Inode::fs()); } | ||||||
|  |     DevFS const& fs() const { return static_cast<DevFS const&>(Inode::fs()); } | ||||||
|  | 
 | ||||||
| protected: | protected: | ||||||
|     DevFSInode(DevFS&); |     DevFSInode(DevFS&); | ||||||
|     virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; |     virtual KResultOr<size_t> read_bytes(off_t, size_t, UserOrKernelBuffer& buffer, FileDescription*) const override; | ||||||
|  | @ -153,7 +156,6 @@ private: | ||||||
| 
 | 
 | ||||||
|     NonnullRefPtrVector<DevFSDirectoryInode> m_subdirectories; |     NonnullRefPtrVector<DevFSDirectoryInode> m_subdirectories; | ||||||
|     NonnullRefPtrVector<DevFSLinkInode> m_links; |     NonnullRefPtrVector<DevFSLinkInode> m_links; | ||||||
|     DevFS& m_parent_fs; |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling