mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 07:37:35 +00:00
Kernel: Turn Thread::current and Process::current into functions
This allows us to query the current thread and process on a per processor basis
This commit is contained in:
parent
cdc78515b6
commit
16783bd14d
39 changed files with 518 additions and 369 deletions
|
@ -130,8 +130,9 @@ NEVER_INLINE void dump_backtrace_impl(FlatPtr base_pointer, bool use_ksyms)
|
|||
}
|
||||
|
||||
OwnPtr<Process::ELFBundle> elf_bundle;
|
||||
if (Process::current)
|
||||
elf_bundle = Process::current->elf_bundle();
|
||||
auto current_process = Process::current();
|
||||
if (current_process)
|
||||
elf_bundle = current_process->elf_bundle();
|
||||
|
||||
struct RecognizedSymbol {
|
||||
FlatPtr address;
|
||||
|
@ -142,13 +143,13 @@ NEVER_INLINE void dump_backtrace_impl(FlatPtr base_pointer, bool use_ksyms)
|
|||
size_t recognized_symbol_count = 0;
|
||||
if (use_ksyms) {
|
||||
for (FlatPtr* stack_ptr = (FlatPtr*)base_pointer;
|
||||
(Process::current ? Process::current->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1) && recognized_symbol_count < max_recognized_symbol_count; stack_ptr = (FlatPtr*)*stack_ptr) {
|
||||
(current_process ? current_process->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1) && recognized_symbol_count < max_recognized_symbol_count; stack_ptr = (FlatPtr*)*stack_ptr) {
|
||||
FlatPtr retaddr = stack_ptr[1];
|
||||
recognized_symbols[recognized_symbol_count++] = { retaddr, symbolicate_kernel_address(retaddr) };
|
||||
}
|
||||
} else {
|
||||
for (FlatPtr* stack_ptr = (FlatPtr*)base_pointer;
|
||||
(Process::current ? Process::current->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1); stack_ptr = (FlatPtr*)*stack_ptr) {
|
||||
(current_process ? current_process->validate_read_from_kernel(VirtualAddress(stack_ptr), sizeof(void*) * 2) : 1); stack_ptr = (FlatPtr*)*stack_ptr) {
|
||||
FlatPtr retaddr = stack_ptr[1];
|
||||
dbg() << String::format("%x", retaddr) << " (next: " << String::format("%x", (stack_ptr ? (u32*)*stack_ptr : 0)) << ")";
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue