Hendiadyoin1 
								
							 
						 
						
							
							
							
							
								
							
							
								0d934fc991 
								
							 
						 
						
							
							
								
								Kernel::CPU: Move headers into common directory  
							
							... 
							
							
							
							Alot of code is shared between i386/i686/x86 and x86_64
and a lot probably will be used for compatability modes.
So we start by moving the headers into one Directory.
We will probalby be able to move some cpp files aswell. 
							
						 
						
							2021-03-21 09:35:23 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								df65c8f2eb 
								
							 
						 
						
							
							
								
								Kernel: Convert klog() => AK::Format in IOAPIC  
							
							
							
						 
						
							2021-03-12 15:22:34 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								5d180d1f99 
								
							 
						 
						
							
							
								
								Everywhere: Rename ASSERT => VERIFY  
							
							... 
							
							
							
							(...and ASSERT_NOT_REACHED => VERIFY_NOT_REACHED)
Since all of these checks are done in release builds as well,
let's rename them to VERIFY to prevent confusion, as everyone is
used to assertions being compiled out in release.
We can introduce a new ASSERT macro that is specifically for debug
checks, but I'm doing this wholesale conversion first since we've
accumulated thousands of these already, and it's not immediately
obvious which ones are suitable for ASSERT. 
							
						 
						
							2021-02-23 20:56:54 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								2b2828ae52 
								
							 
						 
						
							
							
								
								Kernel: Slap UNMAP_AFTER_INIT on a bunch more functions  
							
							... 
							
							
							
							We're now able to unmap 100 KiB of kernel text after init. :^) 
							
						 
						
							2021-02-19 21:42:18 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									AnotherTest 
								
							 
						 
						
							
							
							
							
								
							
							
								09a43969ba 
								
							 
						 
						
							
							
								
								Everywhere: Replace dbgln<flag>(...) with dbgln_if(flag, ...)  
							
							... 
							
							
							
							Replacement made by `find Kernel Userland -name '*.h' -o -name '*.cpp' | sed -i -Ee 's/dbgln\b<(\w+)>\(/dbgln_if(\1, /g'` 
							
						 
						
							2021-02-08 18:08:55 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									asynts 
								
							 
						 
						
							
							
							
							
								
							
							
								7cf0c7cc0d 
								
							 
						 
						
							
							
								
								Meta: Split debug defines into multiple headers.  
							
							... 
							
							
							
							The following script was used to make these changes:
    #!/bin/bash
    set -e
    tmp=$(mktemp -d)
    echo "tmp=$tmp"
    find Kernel \( -name '*.cpp' -o -name '*.h' \) | sort > $tmp/Kernel.files
    find . \( -path ./Toolchain -prune -o -path ./Build -prune -o -path ./Kernel -prune \) -o \( -name '*.cpp' -o -name '*.h' \) -print | sort > $tmp/EverythingExceptKernel.files
    cat $tmp/Kernel.files | xargs grep -Eho '[A-Z0-9_]+_DEBUG' | sort | uniq > $tmp/Kernel.macros
    cat $tmp/EverythingExceptKernel.files | xargs grep -Eho '[A-Z0-9_]+_DEBUG' | sort | uniq > $tmp/EverythingExceptKernel.macros
    comm -23 $tmp/Kernel.macros $tmp/EverythingExceptKernel.macros > $tmp/Kernel.unique
    comm -1 $tmp/Kernel.macros $tmp/EverythingExceptKernel.macros > $tmp/EverythingExceptKernel.unique
    cat $tmp/Kernel.unique | awk '{ print "#cmakedefine01 "$1 }' > $tmp/Kernel.header
    cat $tmp/EverythingExceptKernel.unique | awk '{ print "#cmakedefine01 "$1 }' > $tmp/EverythingExceptKernel.header
    for macro in $(cat $tmp/Kernel.unique)
    do
        cat $tmp/Kernel.files | xargs grep -l $macro >> $tmp/Kernel.new-includes ||:
    done
    cat $tmp/Kernel.new-includes | sort > $tmp/Kernel.new-includes.sorted
    for macro in $(cat $tmp/EverythingExceptKernel.unique)
    do
        cat $tmp/Kernel.files | xargs grep -l $macro >> $tmp/Kernel.old-includes ||:
    done
    cat $tmp/Kernel.old-includes | sort > $tmp/Kernel.old-includes.sorted
    comm -23 $tmp/Kernel.new-includes.sorted $tmp/Kernel.old-includes.sorted > $tmp/Kernel.includes.new
    comm -13 $tmp/Kernel.new-includes.sorted $tmp/Kernel.old-includes.sorted > $tmp/Kernel.includes.old
    comm -12 $tmp/Kernel.new-includes.sorted $tmp/Kernel.old-includes.sorted > $tmp/Kernel.includes.mixed
    for file in $(cat $tmp/Kernel.includes.new)
    do
        sed -i -E 's/#include <AK\/Debug\.h>/#include <Kernel\/Debug\.h>/' $file
    done
    for file in $(cat $tmp/Kernel.includes.mixed)
    do
        echo "mixed include in $file, requires manual editing."
    done 
							
						 
						
							2021-01-26 21:20:00 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									asynts 
								
							 
						 
						
							
							
							
							
								
							
							
								8465683dcf 
								
							 
						 
						
							
							
								
								Everywhere: Debug macros instead of constexpr.  
							
							... 
							
							
							
							This was done with the following script:
    find . \( -name '*.cpp' -o -name '*.h' -o -name '*.in' \) -not -path './Toolchain/*' -not -path './Build/*' -exec sed -i -E 's/dbgln<debug_([a-z_]+)>/dbgln<\U\1_DEBUG>/' {} \;
    find . \( -name '*.cpp' -o -name '*.h' -o -name '*.in' \) -not -path './Toolchain/*' -not -path './Build/*' -exec sed -i -E 's/if constexpr \(debug_([a-z0-9_]+)/if constexpr \(\U\1_DEBUG/' {} \; 
							
						 
						
							2021-01-25 09:47:36 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									asynts 
								
							 
						 
						
							
							
							
							
								
							
							
								acdcf59a33 
								
							 
						 
						
							
							
								
								Everywhere: Remove unnecessary debug comments.  
							
							... 
							
							
							
							It would be tempting to uncomment these statements, but that won't work
with the new changes.
This was done with the following commands:
    find . \( -name '*.cpp' -o -name '*.h' -o -name '*.in' \) -not -path './Toolchain/*' -not -path './Build/*' -exec awk -i inplace '$0 !~ /\/\/#define/ { if (!toggle) { print; } else { toggle = !toggle } } ; $0 ~/\/\/#define/ { toggle = 1 }' {} \;
    find . \( -name '*.cpp' -o -name '*.h' -o -name '*.in' \) -not -path './Toolchain/*' -not -path './Build/*' -exec awk -i inplace '$0 !~ /\/\/ #define/ { if (!toggle) { print; } else { toggle = !toggle } } ; $0 ~/\/\/ #define/ { toggle = 1 }' {} \; 
							
						 
						
							2021-01-25 09:47:36 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									asynts 
								
							 
						 
						
							
							
							
							
								
							
							
								67583bc424 
								
							 
						 
						
							
							
								
								Everywhere: Replace a bundle of dbg with dbgln.  
							
							... 
							
							
							
							These changes are arbitrarily divided into multiple commits to make it
easier to find potentially introduced bugs with git bisect. 
							
						 
						
							2021-01-22 22:14:30 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tom 
								
							 
						 
						
							
							
							
							
								
							
							
								7a4fb5deef 
								
							 
						 
						
							
							
								
								Kernel: Don't remap IOAPIC registers every time we try to read/write  
							
							... 
							
							
							
							Remapping these registers every time we try to read from or write to
them causes a lot of SMP broadcasts and a lot of other overhead.
This improves boot time noticeably. 
							
						 
						
							2020-11-01 10:30:20 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Ben Wiederhake 
								
							 
						 
						
							
							
							
							
								
							
							
								eac3bbdcee 
								
							 
						 
						
							
							
								
								Kernel: Unbreak building with extra debug macros, part 1  
							
							
							
						 
						
							2020-08-30 09:43:49 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Tom 
								
							 
						 
						
							
							
							
							
								
							
							
								0bc92c259d 
								
							 
						 
						
							
							
								
								Kernel: Detect APs and boot them into protected mode  
							
							... 
							
							
							
							This isn't fully working, the APs pretend like they're
fully initialized and are just halted permanently for now. 
							
						 
						
							2020-06-04 18:15:23 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								a75c290e51 
								
							 
						 
						
							
							
								
								Kernel: Use TypedMapping for accessing IOAPIC registers  
							
							
							
						 
						
							2020-05-23 15:57:48 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								d92f62db43 
								
							 
						 
						
							
							
								
								Kernel: Remove ref-counting from interrupt override metadata  
							
							... 
							
							
							
							I don't see a reason for these to be reference-counted, and removing it
simplifies a bunch of surrounding data structures. 
							
						 
						
							2020-05-08 21:12:16 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Liav A 
								
							 
						 
						
							
							
							
							
								
							
							
								8d9b6c57b5 
								
							 
						 
						
							
							
								
								Interrupts: Use Optional container in IOAPIC  
							
							... 
							
							
							
							We return the Optional container in find_redirection_entry_by_vector()
method instead of a raw integer. This makes the code more readable and
correct. 
							
						 
						
							2020-03-24 16:15:33 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Liav A 
								
							 
						 
						
							
							
							
							
								
							
							
								0b7fc525e1 
								
							 
						 
						
							
							
								
								Interrupts: Simplify IRQ disabling & enabling in IRQController(s)  
							
							... 
							
							
							
							Instead of blindly setting masks, if we want to disable an IRQ and it's
already masked, we just return. The same happens if we want to enable an
IRQ and it's unmasked. 
							
						 
						
							2020-03-24 16:15:33 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Liav A 
								
							 
						 
						
							
							
							
							
								
							
							
								f86be46c98 
								
							 
						 
						
							
							
								
								Kernel: Abstract IRQ controller handling from Interrupt handlers  
							
							... 
							
							
							
							Now we don't send raw numbers, but we let the IRQController object to
figure out the correct IRQ number.
This helps in a situation when we have 2 or more IOAPICs, so if IOAPIC
1 is assigned for IRQs 0-23 and IOAPIC 2 is assigned for IRQs 24-47,
if an IRQHandler of IRQ 25 invokes disable() for example, it will call
his responsible IRQController (IOAPIC 2), and the IRQController will
subtract the IRQ number with his assigned offset, and the result is that
the second redirection entry in IOAPIC 2 will be masked. 
							
						 
						
							2020-03-24 16:15:33 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Liav A 
								
							 
						 
						
							
							
							
							
								
							
							
								c2c0e9fb04 
								
							 
						 
						
							
							
								
								Kernel: Ensure that we don't use a hard-disabled IRQController  
							
							
							
						 
						
							2020-03-24 16:15:33 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								7d862dd5fc 
								
							 
						 
						
							
							
								
								AK: Reduce header dependency graph of String.h  
							
							... 
							
							
							
							String.h no longer pulls in StringView.h. We do this by moving a bunch
of String functions out-of-line. 
							
						 
						
							2020-03-23 13:48:44 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Liav A 
								
							 
						 
						
							
							
							
							
								
							
							
								30fc78bfaf 
								
							 
						 
						
							
							
								
								Kernel: Acquire ISA interrupt overrides from Interrupt Management  
							
							... 
							
							
							
							Also, InterruptDisabler were added to prevent critical function from
being interrupted. In addition, the interrupt numbers are abstracted
from IDT offsets, thus, allowing to create a better routing scheme
when using IOAPICs for interrupt redirection. 
							
						 
						
							2020-03-06 10:32:32 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Liav A 
								
							 
						 
						
							
							
							
							
								
							
							
								f0ca29eb4b 
								
							 
						 
						
							
							
								
								Kernel: Run clang-format on various files  
							
							
							
						 
						
							2020-03-02 22:23:39 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Liav A 
								
							 
						 
						
							
							
							
							
								
							
							
								0fc60e41dd 
								
							 
						 
						
							
							
								
								Kernel: Use klog() instead of kprintf()  
							
							... 
							
							
							
							Also, duplicate data in dbg() and klog() calls were removed.
In addition, leakage of virtual address to kernel log is prevented.
This is done by replacing kprintf() calls to dbg() calls with the
leaked data instead.
Also, other kprintf() calls were replaced with klog(). 
							
						 
						
							2020-03-02 22:23:39 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Liav A 
								
							 
						 
						
							
							
							
							
								
							
							
								946d9b8c24 
								
							 
						 
						
							
							
								
								IOAPIC: Use dbg() instead of dbgprintf()  
							
							
							
						 
						
							2020-02-27 13:05:12 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Liav A 
								
							 
						 
						
							
							
							
							
								
							
							
								e760ebcacb 
								
							 
						 
						
							
							
								
								Kernel: Add the IOAPIC class  
							
							... 
							
							
							
							This class inherits from IRQController class, and represents
the 82093AA IOAPIC chip. 
							
						 
						
							2020-02-24 11:27:03 +01:00