mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 20:32:44 +00:00 
			
		
		
		
	Kernel: Simplify Mount internals
- The host custody never changes after initialization, so there's no need to protect it with a spinlock. - To enforce the fact that some members don't change after initialization, make them const.
This commit is contained in:
		
							parent
							
								
									673592dea8
								
							
						
					
					
						commit
						19084ef743
					
				
					 2 changed files with 27 additions and 31 deletions
				
			
		|  | @ -1,5 +1,5 @@ | |||
| /*
 | ||||
|  * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org> | ||||
|  * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org> | ||||
|  * | ||||
|  * SPDX-License-Identifier: BSD-2-Clause | ||||
|  */ | ||||
|  | @ -11,47 +11,41 @@ | |||
| 
 | ||||
| namespace Kernel { | ||||
| 
 | ||||
| Mount::Mount(NonnullRefPtr<FileSystem> guest_fs, Custody* host_custody, int flags) | ||||
|     : m_guest(guest_fs->root_inode()) | ||||
|     , m_guest_fs(guest_fs) | ||||
|     , m_host_custody(host_custody) | ||||
| Mount::Mount(NonnullRefPtr<FileSystem> guest_fs, RefPtr<Custody> host_custody, int flags) | ||||
|     : m_guest_fs(move(guest_fs)) | ||||
|     , m_guest(m_guest_fs->root_inode()) | ||||
|     , m_host_custody(move(host_custody)) | ||||
|     , m_flags(flags) | ||||
| { | ||||
| } | ||||
| 
 | ||||
| Mount::Mount(Inode& source, Custody& host_custody, int flags) | ||||
|     : m_guest(source) | ||||
|     , m_guest_fs(source.fs()) | ||||
|     , m_host_custody(host_custody) | ||||
| Mount::Mount(NonnullRefPtr<Inode> source, NonnullRefPtr<Custody> host_custody, int flags) | ||||
|     : m_guest_fs(source->fs()) | ||||
|     , m_guest(move(source)) | ||||
|     , m_host_custody(move(host_custody)) | ||||
|     , m_flags(flags) | ||||
| { | ||||
| } | ||||
| 
 | ||||
| ErrorOr<NonnullOwnPtr<KString>> Mount::absolute_path() const | ||||
| { | ||||
|     return m_host_custody.with([&](auto& host_custody) -> ErrorOr<NonnullOwnPtr<KString>> { | ||||
|         if (!host_custody) | ||||
|             return KString::try_create("/"sv); | ||||
|         return host_custody->try_serialize_absolute_path(); | ||||
|     }); | ||||
|     if (!m_host_custody) | ||||
|         return KString::try_create("/"sv); | ||||
|     return m_host_custody->try_serialize_absolute_path(); | ||||
| } | ||||
| 
 | ||||
| RefPtr<Inode> Mount::host() | ||||
| { | ||||
|     return m_host_custody.with([](auto& host_custody) -> RefPtr<Inode> { | ||||
|         if (!host_custody) | ||||
|             return nullptr; | ||||
|         return &host_custody->inode(); | ||||
|     }); | ||||
|     if (!m_host_custody) | ||||
|         return nullptr; | ||||
|     return m_host_custody->inode(); | ||||
| } | ||||
| 
 | ||||
| RefPtr<Inode const> Mount::host() const | ||||
| { | ||||
|     return m_host_custody.with([](auto& host_custody) -> RefPtr<Inode const> { | ||||
|         if (!host_custody) | ||||
|             return nullptr; | ||||
|         return &host_custody->inode(); | ||||
|     }); | ||||
|     if (!m_host_custody) | ||||
|         return nullptr; | ||||
|     return m_host_custody->inode(); | ||||
| } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling