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