mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 17:32:44 +00:00 
			
		
		
		
	 11eee67b85
			
		
	
	
		11eee67b85
		
	
	
	
	
		
			
			Until now, our kernel has reimplemented a number of AK classes to provide automatic internal locking: - RefPtr - NonnullRefPtr - WeakPtr - Weakable This patch renames the Kernel classes so that they can coexist with the original AK classes: - RefPtr => LockRefPtr - NonnullRefPtr => NonnullLockRefPtr - WeakPtr => LockWeakPtr - Weakable => LockWeakable The goal here is to eventually get rid of the Lock* classes in favor of using external locking.
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2022, Liav A. <liavalb@hotmail.co.il>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <Kernel/Devices/DeviceManagement.h>
 | |
| #include <Kernel/Devices/SelfTTYDevice.h>
 | |
| #include <Kernel/Sections.h>
 | |
| #include <Kernel/TTY/TTY.h>
 | |
| 
 | |
| namespace Kernel {
 | |
| 
 | |
| UNMAP_AFTER_INIT NonnullLockRefPtr<SelfTTYDevice> SelfTTYDevice::must_create()
 | |
| {
 | |
|     auto self_tty_device_or_error = DeviceManagement::try_create_device<SelfTTYDevice>();
 | |
|     // FIXME: Find a way to propagate errors
 | |
|     VERIFY(!self_tty_device_or_error.is_error());
 | |
|     return self_tty_device_or_error.release_value();
 | |
| }
 | |
| 
 | |
| ErrorOr<NonnullLockRefPtr<OpenFileDescription>> SelfTTYDevice::open(int options)
 | |
| {
 | |
|     // Note: If for some odd reason we try to open this device (early on boot?)
 | |
|     // while there's no current Process assigned, don't fail and return an error.
 | |
|     if (!Process::has_current())
 | |
|         return Error::from_errno(ESRCH);
 | |
|     auto& current_process = Process::current();
 | |
|     LockRefPtr<TTY> tty = current_process.tty();
 | |
|     if (!tty)
 | |
|         return Error::from_errno(ENXIO);
 | |
|     auto description = TRY(OpenFileDescription::try_create(*tty));
 | |
|     description->set_rw_mode(options);
 | |
|     description->set_file_flags(options);
 | |
|     return description;
 | |
| }
 | |
| 
 | |
| bool SelfTTYDevice::can_read(OpenFileDescription const&, u64) const
 | |
| {
 | |
|     VERIFY_NOT_REACHED();
 | |
| }
 | |
| 
 | |
| bool SelfTTYDevice::can_write(OpenFileDescription const&, u64) const
 | |
| {
 | |
|     VERIFY_NOT_REACHED();
 | |
| }
 | |
| 
 | |
| ErrorOr<size_t> SelfTTYDevice::read(OpenFileDescription&, u64, UserOrKernelBuffer&, size_t)
 | |
| {
 | |
|     VERIFY_NOT_REACHED();
 | |
| }
 | |
| 
 | |
| ErrorOr<size_t> SelfTTYDevice::write(OpenFileDescription&, u64, UserOrKernelBuffer const&, size_t)
 | |
| {
 | |
|     VERIFY_NOT_REACHED();
 | |
| }
 | |
| 
 | |
| UNMAP_AFTER_INIT SelfTTYDevice::SelfTTYDevice()
 | |
|     : CharacterDevice(5, 0)
 | |
| {
 | |
| }
 | |
| 
 | |
| UNMAP_AFTER_INIT SelfTTYDevice::~SelfTTYDevice()
 | |
| {
 | |
| }
 | |
| 
 | |
| }
 |