mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 09:12:45 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			29 lines
		
	
	
	
		
			726 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			726 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <AK/Types.h>
 | |
| #include "Limits.h"
 | |
| #include "FileDescriptor.h"
 | |
| 
 | |
| class CharacterDevice {
 | |
| public:
 | |
|     virtual ~CharacterDevice();
 | |
| 
 | |
|     RetainPtr<FileDescriptor> open(int options);
 | |
| 
 | |
|     virtual bool hasDataAvailableForRead() const = 0;
 | |
| 
 | |
|     virtual Unix::ssize_t read(byte* buffer, Unix::size_t bufferSize) = 0;
 | |
|     virtual Unix::ssize_t write(const byte* buffer, Unix::size_t bufferSize) = 0;
 | |
| 
 | |
|     unsigned major() const { return m_major; }
 | |
|     unsigned minor() const { return m_minor; }
 | |
| 
 | |
|     virtual bool isTTY() const { return false; }
 | |
| 
 | |
| protected:
 | |
|     CharacterDevice(unsigned major, unsigned minor) : m_major(major), m_minor(minor) { }
 | |
| 
 | |
| private:
 | |
|     unsigned m_major { 0 };
 | |
|     unsigned m_minor{ 0 };
 | |
| };
 | 
