mirror of
https://github.com/JakeHillion/drgn.git
synced 2024-12-22 17:23:06 +00:00
301cc767ba
Previously, drgn had no way to represent a thread – retrieving a stack trace (the only extant thread-specific operation) was achieved by requiring the user to directly provide a tid. This commit introduces the scaffolding for the design outlined in issue #92, and implements the corresponding methods for userspace core dumps, the live Linux kernel, and Linux kernel core dumps. Future work will build on top of this commit to support live userspace processes. Signed-off-by: Kevin Svetlitski <svetlitski@fb.com>
48 lines
1.4 KiB
C
48 lines
1.4 KiB
C
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#ifndef DRGN_LINUX_KERNEL_H
|
|
#define DRGN_LINUX_KERNEL_H
|
|
|
|
#include "drgn.h"
|
|
|
|
struct drgn_debug_info_load_state;
|
|
struct vmcoreinfo;
|
|
|
|
struct drgn_error *read_memory_via_pgtable(void *buf, uint64_t address,
|
|
size_t count, uint64_t offset,
|
|
void *arg, bool physical);
|
|
|
|
struct drgn_error *parse_vmcoreinfo(const char *desc, size_t descsz,
|
|
struct vmcoreinfo *ret);
|
|
|
|
struct drgn_error *proc_kallsyms_symbol_addr(const char *name,
|
|
unsigned long *ret);
|
|
|
|
struct drgn_error *read_vmcoreinfo_fallback(struct drgn_program *prog);
|
|
|
|
struct drgn_error *linux_kernel_object_find(const char *name, size_t name_len,
|
|
const char *filename,
|
|
enum drgn_find_object_flags flags,
|
|
void *arg, struct drgn_object *ret);
|
|
|
|
struct drgn_error *
|
|
linux_kernel_report_debug_info(struct drgn_debug_info_load_state *load);
|
|
|
|
#define KDUMP_SIGNATURE "KDUMP "
|
|
#define KDUMP_SIG_LEN (sizeof(KDUMP_SIGNATURE) - 1)
|
|
|
|
#ifdef WITH_LIBKDUMPFILE
|
|
struct drgn_error *drgn_program_cache_kdump_notes(struct drgn_program *prog);
|
|
struct drgn_error *drgn_program_set_kdump(struct drgn_program *prog);
|
|
#else
|
|
static inline struct drgn_error *
|
|
drgn_program_set_kdump(struct drgn_program *prog)
|
|
{
|
|
return drgn_error_create(DRGN_ERROR_INVALID_ARGUMENT,
|
|
"drgn was built without libkdumpfile support");
|
|
}
|
|
#endif
|
|
|
|
#endif /* DRGN_LINUX_KERNEL_H */
|