mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 02:32:45 +00:00 
			
		
		
		
	 2a4e410b63
			
		
	
	
		2a4e410b63
		
	
	
	
	
		
			
			This commit moves the allocation of the resources required for SharedInodeVMObject from its constructors to its factory functions. We're making this change to expose the fallibility of the allocation.
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			988 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			988 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <Kernel/Memory/InodeVMObject.h>
 | |
| #include <Kernel/UnixTypes.h>
 | |
| 
 | |
| namespace Kernel::Memory {
 | |
| 
 | |
| class SharedInodeVMObject final : public InodeVMObject {
 | |
|     AK_MAKE_NONMOVABLE(SharedInodeVMObject);
 | |
| 
 | |
| public:
 | |
|     static ErrorOr<NonnullRefPtr<SharedInodeVMObject>> try_create_with_inode(Inode&);
 | |
|     virtual ErrorOr<NonnullRefPtr<VMObject>> try_clone() override;
 | |
| 
 | |
|     ErrorOr<void> sync(off_t offset_in_pages = 0, size_t pages = -1);
 | |
| 
 | |
| private:
 | |
|     virtual bool is_shared_inode() const override { return true; }
 | |
| 
 | |
|     explicit SharedInodeVMObject(Inode&, FixedArray<RefPtr<PhysicalPage>>&&);
 | |
|     explicit SharedInodeVMObject(SharedInodeVMObject const&, FixedArray<RefPtr<PhysicalPage>>&&);
 | |
| 
 | |
|     virtual StringView class_name() const override { return "SharedInodeVMObject"sv; }
 | |
| 
 | |
|     SharedInodeVMObject& operator=(SharedInodeVMObject const&) = delete;
 | |
| };
 | |
| 
 | |
| }
 |