Add checkpatch.pl
[akaros.git] / kern / include / kdebug.h
index 478e2f8..23a8c1f 100644 (file)
@@ -2,6 +2,7 @@
 #define ROS_KERN_KDEBUG_H
 
 #include <ros/common.h>
+#include <ros/trapframe.h>
 #include <arch/kdebug.h>
 
 struct symtab_entry {
@@ -9,21 +10,13 @@ struct symtab_entry {
        uintptr_t addr;
 };
 
-// Debug information about a particular instruction pointer
-typedef struct eipdebuginfo {
-       const char *eip_file;           // Source code filename for EIP
-       int eip_line;                           // Source code linenumber for EIP
-
-       const char *eip_fn_name;        // Name of function containing EIP
-                                                               //  - Note: not null terminated!
-       int eip_fn_namelen;                     // Length of function name
-       uintptr_t eip_fn_addr;          // Address of start of function
-       int eip_fn_narg;                        // Number of function arguments
-} eipdebuginfo_t;
-
-int debuginfo_eip(uintptr_t eip, eipdebuginfo_t *NONNULL info);
-void *debug_get_fn_addr(char *fn_name);
 void backtrace(void);
+void backtrace_frame(uintptr_t pc, uintptr_t fp);
+size_t backtrace_list(uintptr_t pc, uintptr_t fp, uintptr_t *pcs,
+                      size_t nr_slots);
+void backtrace_kframe(struct hw_trapframe *hw_tf);
+/* for includes */ struct proc;
+void backtrace_user_ctx(struct proc *p, struct user_context *ctx);
 
 /* Arch dependent, listed here for ease-of-use */
 static inline uintptr_t get_caller_pc(void);
@@ -35,4 +28,24 @@ char *get_fn_name(uintptr_t pc);
 /* Returns the address of sym, or 0 if it does not exist */
 uintptr_t get_symbol_addr(char *sym);
 
+/* For a poor-mans function tracer (can add these with spatch) */
+void __print_func_entry(const char *func, const char *file);
+void __print_func_exit(const char *func, const char *file);
+#define print_func_entry() __print_func_entry(__FUNCTION__, __FILE__)
+#define print_func_exit() __print_func_exit(__FUNCTION__, __FILE__)
+void hexdump(void *v, int length);
+void pahexdump(uintptr_t pa, int length);
+int printdump(char *buf, int buflen, uint8_t *data);
+
+extern bool printx_on;
+void set_printx(int mode);
+#define printx(args...) if (printx_on) printk(args)
+#define trace_printx(args...) if (printx_on) trace_printk(args)
+
+#include <oprofile.h>
+#define TRACEME() oprofile_add_backtrace(read_pc(), read_bp())
+
+void debug_addr_proc(struct proc *p, unsigned long addr);
+void debug_addr_pid(int pid, unsigned long addr);
+
 #endif /* ROS_KERN_KDEBUG_H */