1153323Srodrigc#ifndef __XFS_SUPPORT_KGDB_H__ 2153323Srodrigc#define __XFS_SUPPORT_KGDB_H__ 3153323Srodrigc 4153323Srodrigc#define KDB_ARGCOUNT EINVAL 5153323Srodrigc 6153323Srodrigcstruct pt_regs 7153323Srodrigc{ 8153323Srodrigc int dummy; 9153323Srodrigc}; 10153323Srodrigc 11153323Srodrigc#define MODULE_AUTHOR(s) static char __module_author[] = s; 12153323Srodrigc#define MODULE_DESCRIPTION(s) static char __module_description[] = s; 13153323Srodrigc#define MODULE_LICENSE(s) static char __module_license[] = s 14153323Srodrigc 15153323Srodrigc 16153323Srodrigctypedef int (*kdb_func_t)(int, const char **, const char **, struct pt_regs *); 17153323Srodrigctypedef register_t kdb_machreg_t; 18153323Srodrigc 19153323Srodrigc/* 20153323Srodrigc * Symbol table format. 21153323Srodrigc */ 22153323Srodrigctypedef struct __ksymtab { 23153323Srodrigc unsigned long value; /* Address of symbol */ 24153323Srodrigc const char *sym_name; /* Full symbol name, including any version */ 25153323Srodrigc unsigned long sym_start; 26153323Srodrigc unsigned long sym_end; 27153323Srodrigc} kdb_symtab_t; 28153323Srodrigc 29153323Srodrigcextern int kdb_register(char *, kdb_func_t, char *, char *, short); 30153323Srodrigcextern int kdb_unregister(char *); 31153323Srodrigc 32153323Srodrigcextern int kdbgetaddrarg(int, const char**, int*, kdb_machreg_t *, 33153323Srodrigc long *, char **, struct pt_regs *); 34153323Srodrigcextern int kdbnearsym(unsigned long, kdb_symtab_t *); 35153323Srodrigcextern void kdb_printf(const char *,...) 36153323Srodrigc __attribute__ ((format (printf, 1, 2))); 37153323Srodrigc 38153323Srodrigcextern int kdb_getarea_size(void *, unsigned long, size_t); 39153323Srodrigcextern int kdb_putarea_size(unsigned long, void *, size_t); 40153323Srodrigc 41153323Srodrigc#define kdb_getarea(x,addr) kdb_getarea_size(&(x), addr, sizeof((x))) 42153323Srodrigc#define kdb_putarea(addr,x) kdb_putarea_size(addr, &(x), sizeof((x))) 43153323Srodrigc 44153323Srodrigc#endif /* __XFS_SUPPORT_KGDB_H__ */ 45