mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 04:02:44 +00:00 
			
		
		
		
	 0223faf6f4
			
		
	
	
		0223faf6f4
		
	
	
	
	
		
			
			SonarCloud flagged this "Code Smell", where we are accessing these static methods as if they are instance methods. While it is technically possible, it is very confusing to read when you realize they are static functions.
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include <AK/Assertions.h>
 | |
| #include <Kernel/Arch/x86/CPU.h>
 | |
| #include <Kernel/Panic.h>
 | |
| #include <Kernel/Process.h>
 | |
| 
 | |
| using namespace Kernel;
 | |
| 
 | |
| void __assertion_failed(const char* msg, const char* file, unsigned line, const char* func)
 | |
| {
 | |
|     asm volatile("cli");
 | |
|     critical_dmesgln("ASSERTION FAILED: {}", msg);
 | |
|     critical_dmesgln("{}:{} in {}", file, line, func);
 | |
| 
 | |
|     abort();
 | |
| }
 | |
| 
 | |
| [[noreturn]] void abort()
 | |
| {
 | |
|     // Avoid lock ranking checks on crashing paths, just try to get some debugging messages out.
 | |
|     auto thread = Thread::current();
 | |
|     if (thread)
 | |
|         thread->set_crashing();
 | |
| 
 | |
|     // Switch back to the current process's page tables if there are any.
 | |
|     // Otherwise stack walking will be a disaster.
 | |
|     if (Process::has_current())
 | |
|         Memory::MemoryManager::enter_process_address_space(Process::current());
 | |
| 
 | |
|     PANIC("Aborted");
 | |
| }
 | |
| 
 | |
| [[noreturn]] void _abort()
 | |
| {
 | |
|     asm volatile("ud2");
 | |
|     __builtin_unreachable();
 | |
| }
 |