kernel: Add core dump facility
* Add function core_dump_write_core_file(). It writes a core file for the current thread's team. The file format is similar to that of other OSs (i.e. ELF with PT_LOAD segments and a PT_NOTE segment), but most of the notes are Haiku specific (infos for team, areas, images, threads). More data will probably need to be added. * Add team flag TEAM_FLAG_DUMP_CORE, thread flag THREAD_FLAGS_TRAP_FOR_CORE_DUMP, and Team property coreDumpCondition, a condition variable available while a core dump is progress. A thread that finds its flag THREAD_FLAGS_TRAP_FOR_CORE_DUMP set before exiting the kernel to userland calls core_dump_trap_thread(), which blocks on the condition variable until the core dump has finished. We need the team's threads to stop so we can get their CPU state (and have a generally unchanging team state while writing the core file). * Add user debugger message B_DEBUG_WRITE_CORE_FILE. It causes core_dump_write_core_file() to be called for the team. * Dumping core as an immediate effect of a terminal signal has not been implemented yet, but that should be fairly straight forward.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2015 Haiku, Inc. All rights reserved.
|
||||
* Copyright 2002-2016 Haiku, Inc. All rights reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Copyright 2001 Travis Geiselbrecht. All rights reserved.
|
||||
@@ -37,6 +37,11 @@ DEFINE_ELF_TYPE(Verdef, elf_verdef);
|
||||
DEFINE_ELF_TYPE(Verdaux, elf_verdaux);
|
||||
DEFINE_ELF_TYPE(Verneed, elf_verneed);
|
||||
DEFINE_ELF_TYPE(Vernaux, elf_vernaux);
|
||||
DEFINE_ELF_TYPE(Nhdr, elf_nhdr);
|
||||
DEFINE_ELF_TYPE(Note_Team, elf_note_team);
|
||||
DEFINE_ELF_TYPE(Note_Area_Entry, elf_note_area_entry);
|
||||
DEFINE_ELF_TYPE(Note_Image_Entry, elf_note_image_entry);
|
||||
DEFINE_ELF_TYPE(Note_Thread_Entry, elf_note_thread_entry);
|
||||
|
||||
#undef DEFINE_ELF_TYPE
|
||||
#undef _ELF_TYPE
|
||||
|
||||
Reference in New Issue
Block a user