mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 18:22:45 +00:00 
			
		
		
		
	Kernel: Get rid of Kernel/types.h, separate LinearAddress/PhysicalAddress.
This commit is contained in:
		
							parent
							
								
									6306cf5c27
								
							
						
					
					
						commit
						a58d7fd8bb
					
				
					 27 changed files with 119 additions and 121 deletions
				
			
		|  | @ -1,6 +1,6 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| 
 | 
 | ||||||
| namespace CMOS { | namespace CMOS { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
| #include <AK/Types.h> | #include <AK/Types.h> | ||||||
| #include <AK/AKString.h> | #include <AK/AKString.h> | ||||||
| #include <SharedGraphics/Size.h> | #include <SharedGraphics/Size.h> | ||||||
| #include <Kernel/types.h> | #include <Kernel/PhysicalAddress.h> | ||||||
| #include <Kernel/Devices/BlockDevice.h> | #include <Kernel/Devices/BlockDevice.h> | ||||||
| 
 | 
 | ||||||
| class BXVGADevice final : public BlockDevice { | class BXVGADevice final : public BlockDevice { | ||||||
|  |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <Kernel/Devices/Device.h> | #include <Kernel/Devices/Device.h> | ||||||
|  | #include <Kernel/LinearAddress.h> | ||||||
| 
 | 
 | ||||||
| class BlockDevice : public Device { | class BlockDevice : public Device { | ||||||
| public: | public: | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| #include "IDEDiskDevice.h" | #include "IDEDiskDevice.h" | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| #include "Process.h" | #include "Process.h" | ||||||
| #include "StdLib.h" | #include "StdLib.h" | ||||||
| #include "IO.h" | #include "IO.h" | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| #include "i386.h" | #include "i386.h" | ||||||
| #include "IO.h" | #include "IO.h" | ||||||
| #include "PIC.h" | #include "PIC.h" | ||||||
|  |  | ||||||
|  | @ -4,7 +4,6 @@ | ||||||
| #include <AK/HashMap.h> | #include <AK/HashMap.h> | ||||||
| #include <AK/AKString.h> | #include <AK/AKString.h> | ||||||
| #include <Kernel/ELF/exec_elf.h> | #include <Kernel/ELF/exec_elf.h> | ||||||
| #include <Kernel/types.h> |  | ||||||
| 
 | 
 | ||||||
| class ELFImage { | class ELFImage { | ||||||
| public: | public: | ||||||
|  |  | ||||||
|  | @ -2,7 +2,8 @@ | ||||||
| 
 | 
 | ||||||
| #include <Kernel/FileSystem/VirtualFileSystem.h> | #include <Kernel/FileSystem/VirtualFileSystem.h> | ||||||
| #include <Kernel/FileSystem/InodeMetadata.h> | #include <Kernel/FileSystem/InodeMetadata.h> | ||||||
| #include "FIFO.h" | #include <Kernel/LinearAddress.h> | ||||||
|  | #include <Kernel/FIFO.h> | ||||||
| #include <AK/ByteBuffer.h> | #include <AK/ByteBuffer.h> | ||||||
| #include <AK/CircularQueue.h> | #include <AK/CircularQueue.h> | ||||||
| #include <AK/Retainable.h> | #include <AK/Retainable.h> | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| 
 | 
 | ||||||
| namespace IO { | namespace IO { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										36
									
								
								Kernel/LinearAddress.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								Kernel/LinearAddress.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,36 @@ | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | #include <AK/Types.h> | ||||||
|  | 
 | ||||||
|  | class LinearAddress { | ||||||
|  | public: | ||||||
|  |     LinearAddress() { } | ||||||
|  |     explicit LinearAddress(dword address) : m_address(address) { } | ||||||
|  | 
 | ||||||
|  |     bool is_null() const { return m_address == 0; } | ||||||
|  | 
 | ||||||
|  |     LinearAddress offset(dword o) const { return LinearAddress(m_address + o); } | ||||||
|  |     dword get() const { return m_address; } | ||||||
|  |     void set(dword address) { m_address = address; } | ||||||
|  |     void mask(dword m) { m_address &= m; } | ||||||
|  | 
 | ||||||
|  |     bool operator<=(const LinearAddress& other) const { return m_address <= other.m_address; } | ||||||
|  |     bool operator>=(const LinearAddress& other) const { return m_address >= other.m_address; } | ||||||
|  |     bool operator>(const LinearAddress& other) const { return m_address > other.m_address; } | ||||||
|  |     bool operator<(const LinearAddress& other) const { return m_address < other.m_address; } | ||||||
|  |     bool operator==(const LinearAddress& other) const { return m_address == other.m_address; } | ||||||
|  |     bool operator!=(const LinearAddress& other) const { return m_address != other.m_address; } | ||||||
|  | 
 | ||||||
|  |     byte* as_ptr() { return reinterpret_cast<byte*>(m_address); } | ||||||
|  |     const byte* as_ptr() const { return reinterpret_cast<const byte*>(m_address); } | ||||||
|  | 
 | ||||||
|  |     dword page_base() const { return m_address & 0xfffff000; } | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  |     dword m_address { 0 }; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | inline LinearAddress operator-(const LinearAddress& a, const LinearAddress& b) | ||||||
|  | { | ||||||
|  |     return LinearAddress(a.get() - b.get()); | ||||||
|  | } | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| #include "i386.h" | #include "i386.h" | ||||||
| #include "IO.h" | #include "IO.h" | ||||||
| #include "PIC.h" | #include "PIC.h" | ||||||
|  |  | ||||||
							
								
								
									
										25
									
								
								Kernel/PhysicalAddress.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								Kernel/PhysicalAddress.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | ||||||
|  | #pragma once | ||||||
|  | 
 | ||||||
|  | class PhysicalAddress { | ||||||
|  | public: | ||||||
|  |     PhysicalAddress() { } | ||||||
|  |     explicit PhysicalAddress(dword address) : m_address(address) { } | ||||||
|  | 
 | ||||||
|  |     PhysicalAddress offset(dword o) const { return PhysicalAddress(m_address + o); } | ||||||
|  |     dword get() const { return m_address; } | ||||||
|  |     void set(dword address) { m_address = address; } | ||||||
|  |     void mask(dword m) { m_address &= m; } | ||||||
|  | 
 | ||||||
|  |     bool is_null() const { return m_address == 0; } | ||||||
|  | 
 | ||||||
|  |     byte* as_ptr() { return reinterpret_cast<byte*>(m_address); } | ||||||
|  |     const byte* as_ptr() const { return reinterpret_cast<const byte*>(m_address); } | ||||||
|  | 
 | ||||||
|  |     dword page_base() const { return m_address & 0xfffff000; } | ||||||
|  | 
 | ||||||
|  |     bool operator==(const PhysicalAddress& other) const { return m_address == other.m_address; } | ||||||
|  | 
 | ||||||
|  | private: | ||||||
|  |     dword m_address { 0 }; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| #include "Process.h" | #include "Process.h" | ||||||
| #include "kmalloc.h" | #include "kmalloc.h" | ||||||
| #include "StdLib.h" | #include "StdLib.h" | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| #include <Kernel/TTY/TTY.h> | #include <Kernel/TTY/TTY.h> | ||||||
| #include "Syscall.h" | #include "Syscall.h" | ||||||
| #include <Kernel/FileSystem/VirtualFileSystem.h> | #include <Kernel/FileSystem/VirtualFileSystem.h> | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include "types.h" | #include <Kernel/UnixTypes.h> | ||||||
| 
 | 
 | ||||||
| namespace RTC { | namespace RTC { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| #include "Assertions.h" | #include "Assertions.h" | ||||||
| #include "kmalloc.h" | #include "kmalloc.h" | ||||||
| #include <AK/StdLibExtras.h> | #include <AK/StdLibExtras.h> | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <Kernel/types.h> | #include <AK/Types.h> | ||||||
| 
 | 
 | ||||||
| extern "C" { | extern "C" { | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,6 +3,8 @@ | ||||||
| #include <Kernel/i386.h> | #include <Kernel/i386.h> | ||||||
| #include <Kernel/TSS.h> | #include <Kernel/TSS.h> | ||||||
| #include <Kernel/KResult.h> | #include <Kernel/KResult.h> | ||||||
|  | #include <Kernel/LinearAddress.h> | ||||||
|  | #include <Kernel/UnixTypes.h> | ||||||
| #include <AK/AKString.h> | #include <AK/AKString.h> | ||||||
| #include <AK/InlineLinkedList.h> | #include <AK/InlineLinkedList.h> | ||||||
| #include <AK/RetainPtr.h> | #include <AK/RetainPtr.h> | ||||||
|  |  | ||||||
|  | @ -1,5 +1,7 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include <AK/Types.h> | ||||||
|  | 
 | ||||||
| #define WNOHANG 1 | #define WNOHANG 1 | ||||||
| 
 | 
 | ||||||
| #define R_OK 4 | #define R_OK 4 | ||||||
|  | @ -222,6 +224,7 @@ typedef dword uid_t; | ||||||
| typedef dword gid_t; | typedef dword gid_t; | ||||||
| typedef dword clock_t; | typedef dword clock_t; | ||||||
| typedef dword socklen_t; | typedef dword socklen_t; | ||||||
|  | typedef int pid_t; | ||||||
| 
 | 
 | ||||||
| struct tms { | struct tms { | ||||||
|     clock_t tms_utime; |     clock_t tms_utime; | ||||||
|  | @ -359,3 +362,32 @@ struct sockaddr_in { | ||||||
|     struct in_addr sin_addr; |     struct in_addr sin_addr; | ||||||
|     char sin_zero[8]; |     char sin_zero[8]; | ||||||
| }; | }; | ||||||
|  | 
 | ||||||
|  | typedef dword __u32; | ||||||
|  | typedef word __u16; | ||||||
|  | typedef byte __u8; | ||||||
|  | typedef int __s32; | ||||||
|  | typedef short __s16; | ||||||
|  | 
 | ||||||
|  | typedef dword useconds_t; | ||||||
|  | typedef signed_dword suseconds_t; | ||||||
|  | 
 | ||||||
|  | struct timeval { | ||||||
|  |     time_t tv_sec; | ||||||
|  |     suseconds_t tv_usec; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | #define UTSNAME_ENTRY_LEN 65 | ||||||
|  | 
 | ||||||
|  | struct utsname { | ||||||
|  |     char sysname[UTSNAME_ENTRY_LEN]; | ||||||
|  |     char nodename[UTSNAME_ENTRY_LEN]; | ||||||
|  |     char release[UTSNAME_ENTRY_LEN]; | ||||||
|  |     char version[UTSNAME_ENTRY_LEN]; | ||||||
|  |     char machine[UTSNAME_ENTRY_LEN]; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct [[gnu::packed]] FarPtr { | ||||||
|  |     dword offset { 0 }; | ||||||
|  |     word selector { 0 }; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| #include "i386.h" | #include "i386.h" | ||||||
| #include <AK/Bitmap.h> | #include <AK/Bitmap.h> | ||||||
| #include <AK/ByteBuffer.h> | #include <AK/ByteBuffer.h> | ||||||
|  | @ -11,6 +11,7 @@ | ||||||
| #include <AK/AKString.h> | #include <AK/AKString.h> | ||||||
| #include <AK/Badge.h> | #include <AK/Badge.h> | ||||||
| #include <AK/Weakable.h> | #include <AK/Weakable.h> | ||||||
|  | #include <Kernel/LinearAddress.h> | ||||||
| #include <Kernel/VM/PhysicalPage.h> | #include <Kernel/VM/PhysicalPage.h> | ||||||
| #include <Kernel/VM/Region.h> | #include <Kernel/VM/Region.h> | ||||||
| #include <Kernel/VM/VMObject.h> | #include <Kernel/VM/VMObject.h> | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include <Kernel/Assertions.h> | #include <Kernel/Assertions.h> | ||||||
| #include <Kernel/types.h> | #include <Kernel/PhysicalAddress.h> | ||||||
| #include <AK/Retained.h> | #include <AK/Retained.h> | ||||||
| 
 | 
 | ||||||
| class PhysicalPage { | class PhysicalPage { | ||||||
|  |  | ||||||
|  | @ -7,6 +7,8 @@ | ||||||
| #include <AK/Vector.h> | #include <AK/Vector.h> | ||||||
| #include <AK/AKString.h> | #include <AK/AKString.h> | ||||||
| #include <Kernel/Lock.h> | #include <Kernel/Lock.h> | ||||||
|  | #include <Kernel/PhysicalAddress.h> | ||||||
|  | #include <Kernel/UnixTypes.h> | ||||||
| 
 | 
 | ||||||
| class Inode; | class Inode; | ||||||
| class PhysicalPage; | class PhysicalPage; | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| #include "kmalloc.h" | #include "kmalloc.h" | ||||||
| #include "i386.h" | #include "i386.h" | ||||||
| #include "Assertions.h" | #include "Assertions.h" | ||||||
|  |  | ||||||
|  | @ -1,7 +1,7 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include "types.h" |  | ||||||
| #include "kprintf.h" | #include "kprintf.h" | ||||||
|  | #include <Kernel/LinearAddress.h> | ||||||
| 
 | 
 | ||||||
| #define PAGE_SIZE 4096 | #define PAGE_SIZE 4096 | ||||||
| #define PAGE_MASK 0xfffff000 | #define PAGE_MASK 0xfffff000 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| #include "kmalloc.h" | #include "kmalloc.h" | ||||||
| #include "i386.h" | #include "i386.h" | ||||||
| #include "i8253.h" | #include "i8253.h" | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
|  * just to get going. Don't ever let anyone see this shit. :^) |  * just to get going. Don't ever let anyone see this shit. :^) | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include <Kernel/types.h> | #include <AK/Types.h> | ||||||
| #include <Kernel/kmalloc.h> | #include <Kernel/kmalloc.h> | ||||||
| #include <Kernel/StdLib.h> | #include <Kernel/StdLib.h> | ||||||
| #include <Kernel/i386.h> | #include <Kernel/i386.h> | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include "types.h" | #include <AK/Types.h> | ||||||
| 
 | 
 | ||||||
| struct system_t | struct system_t | ||||||
| { | { | ||||||
|  |  | ||||||
							
								
								
									
										101
									
								
								Kernel/types.h
									
										
									
									
									
								
							
							
						
						
									
										101
									
								
								Kernel/types.h
									
										
									
									
									
								
							|  | @ -1,101 +0,0 @@ | ||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include <AK/Types.h> |  | ||||||
| 
 |  | ||||||
| typedef dword __u32; |  | ||||||
| typedef word __u16; |  | ||||||
| typedef byte __u8; |  | ||||||
| typedef int __s32; |  | ||||||
| typedef short __s16; |  | ||||||
| 
 |  | ||||||
| typedef dword uid_t; |  | ||||||
| typedef dword gid_t; |  | ||||||
| typedef signed_word pid_t; |  | ||||||
| typedef dword time_t; |  | ||||||
| typedef dword useconds_t; |  | ||||||
| typedef signed_dword suseconds_t; |  | ||||||
| 
 |  | ||||||
| struct timeval { |  | ||||||
|     time_t tv_sec; |  | ||||||
|     suseconds_t tv_usec; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| #define UTSNAME_ENTRY_LEN 65 |  | ||||||
| 
 |  | ||||||
| struct utsname { |  | ||||||
|     char sysname[UTSNAME_ENTRY_LEN]; |  | ||||||
|     char nodename[UTSNAME_ENTRY_LEN]; |  | ||||||
|     char release[UTSNAME_ENTRY_LEN]; |  | ||||||
|     char version[UTSNAME_ENTRY_LEN]; |  | ||||||
|     char machine[UTSNAME_ENTRY_LEN]; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| typedef dword ino_t; |  | ||||||
| typedef signed_dword off_t; |  | ||||||
| 
 |  | ||||||
| typedef dword dev_t; |  | ||||||
| typedef word mode_t; |  | ||||||
| typedef dword nlink_t; |  | ||||||
| typedef dword blksize_t; |  | ||||||
| typedef dword blkcnt_t; |  | ||||||
| 
 |  | ||||||
| struct [[gnu::packed]] FarPtr { |  | ||||||
|     dword offset { 0 }; |  | ||||||
|     word selector { 0 }; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| class PhysicalAddress { |  | ||||||
| public: |  | ||||||
|     PhysicalAddress() { } |  | ||||||
|     explicit PhysicalAddress(dword address) : m_address(address) { } |  | ||||||
| 
 |  | ||||||
|     PhysicalAddress offset(dword o) const { return PhysicalAddress(m_address + o); } |  | ||||||
|     dword get() const { return m_address; } |  | ||||||
|     void set(dword address) { m_address = address; } |  | ||||||
|     void mask(dword m) { m_address &= m; } |  | ||||||
| 
 |  | ||||||
|     bool is_null() const { return m_address == 0; } |  | ||||||
| 
 |  | ||||||
|     byte* as_ptr() { return reinterpret_cast<byte*>(m_address); } |  | ||||||
|     const byte* as_ptr() const { return reinterpret_cast<const byte*>(m_address); } |  | ||||||
| 
 |  | ||||||
|     dword page_base() const { return m_address & 0xfffff000; } |  | ||||||
| 
 |  | ||||||
|     bool operator==(const PhysicalAddress& other) const { return m_address == other.m_address; } |  | ||||||
| 
 |  | ||||||
| private: |  | ||||||
|     dword m_address { 0 }; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| class LinearAddress { |  | ||||||
| public: |  | ||||||
|     LinearAddress() { } |  | ||||||
|     explicit LinearAddress(dword address) : m_address(address) { } |  | ||||||
| 
 |  | ||||||
|     bool is_null() const { return m_address == 0; } |  | ||||||
| 
 |  | ||||||
|     LinearAddress offset(dword o) const { return LinearAddress(m_address + o); } |  | ||||||
|     dword get() const { return m_address; } |  | ||||||
|     void set(dword address) { m_address = address; } |  | ||||||
|     void mask(dword m) { m_address &= m; } |  | ||||||
| 
 |  | ||||||
|     bool operator<=(const LinearAddress& other) const { return m_address <= other.m_address; } |  | ||||||
|     bool operator>=(const LinearAddress& other) const { return m_address >= other.m_address; } |  | ||||||
|     bool operator>(const LinearAddress& other) const { return m_address > other.m_address; } |  | ||||||
|     bool operator<(const LinearAddress& other) const { return m_address < other.m_address; } |  | ||||||
|     bool operator==(const LinearAddress& other) const { return m_address == other.m_address; } |  | ||||||
|     bool operator!=(const LinearAddress& other) const { return m_address != other.m_address; } |  | ||||||
| 
 |  | ||||||
|     byte* as_ptr() { return reinterpret_cast<byte*>(m_address); } |  | ||||||
|     const byte* as_ptr() const { return reinterpret_cast<const byte*>(m_address); } |  | ||||||
| 
 |  | ||||||
|     dword page_base() const { return m_address & 0xfffff000; } |  | ||||||
| 
 |  | ||||||
| private: |  | ||||||
|     dword m_address { 0 }; |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| inline LinearAddress operator-(const LinearAddress& a, const LinearAddress& b) |  | ||||||
| { |  | ||||||
|     return LinearAddress(a.get() - b.get()); |  | ||||||
| } |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling