Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
kdb.h
Go to the documentation of this file.
1
#ifndef _KDB_H
2
#define _KDB_H
3
4
/*
5
* Kernel Debugger Architecture Independent Global Headers
6
*
7
* This file is subject to the terms and conditions of the GNU General Public
8
* License. See the file "COPYING" in the main directory of this archive
9
* for more details.
10
*
11
* Copyright (c) 2000-2007 Silicon Graphics, Inc. All Rights Reserved.
12
* Copyright (C) 2000 Stephane Eranian <
[email protected]
>
13
* Copyright (C) 2009 Jason Wessel <
[email protected]
>
14
*/
15
16
typedef
enum
{
17
KDB_REPEAT_NONE
= 0,
/* Do not repeat this command */
18
KDB_REPEAT_NO_ARGS
,
/* Repeat the command without arguments */
19
KDB_REPEAT_WITH_ARGS
,
/* Repeat the command including its arguments */
20
}
kdb_repeat_t
;
21
22
typedef
int
(*
kdb_func_t
)(
int
,
const
char
**);
23
24
#ifdef CONFIG_KGDB_KDB
25
#include <
linux/init.h
>
26
#include <linux/sched.h>
27
#include <
linux/atomic.h
>
28
29
#define KDB_POLL_FUNC_MAX 5
30
extern
int
kdb_poll_idx
;
31
32
/*
33
* kdb_initial_cpu is initialized to -1, and is set to the cpu
34
* number whenever the kernel debugger is entered.
35
*/
36
extern
int
kdb_initial_cpu
;
37
extern
atomic_t
kdb_event
;
38
39
/* Types and messages used for dynamically added kdb shell commands */
40
41
#define KDB_MAXARGS 16
/* Maximum number of arguments to a function */
42
43
/* KDB return codes from a command or internal kdb function */
44
#define KDB_NOTFOUND (-1)
45
#define KDB_ARGCOUNT (-2)
46
#define KDB_BADWIDTH (-3)
47
#define KDB_BADRADIX (-4)
48
#define KDB_NOTENV (-5)
49
#define KDB_NOENVVALUE (-6)
50
#define KDB_NOTIMP (-7)
51
#define KDB_ENVFULL (-8)
52
#define KDB_ENVBUFFULL (-9)
53
#define KDB_TOOMANYBPT (-10)
54
#define KDB_TOOMANYDBREGS (-11)
55
#define KDB_DUPBPT (-12)
56
#define KDB_BPTNOTFOUND (-13)
57
#define KDB_BADMODE (-14)
58
#define KDB_BADINT (-15)
59
#define KDB_INVADDRFMT (-16)
60
#define KDB_BADREG (-17)
61
#define KDB_BADCPUNUM (-18)
62
#define KDB_BADLENGTH (-19)
63
#define KDB_NOBP (-20)
64
#define KDB_BADADDR (-21)
65
66
/*
67
* kdb_diemsg
68
*
69
* Contains a pointer to the last string supplied to the
70
* kernel 'die' panic function.
71
*/
72
extern
const
char
*
kdb_diemsg
;
73
74
#define KDB_FLAG_EARLYKDB (1 << 0)
/* set from boot parameter kdb=early */
75
#define KDB_FLAG_CATASTROPHIC (1 << 1)
/* A catastrophic event has occurred */
76
#define KDB_FLAG_CMD_INTERRUPT (1 << 2)
/* Previous command was interrupted */
77
#define KDB_FLAG_NOIPI (1 << 3)
/* Do not send IPIs */
78
#define KDB_FLAG_NO_CONSOLE (1 << 5)
/* No console is available,
79
* kdb is disabled */
80
#define KDB_FLAG_NO_VT_CONSOLE (1 << 6)
/* No VT console is available, do
81
* not use keyboard */
82
#define KDB_FLAG_NO_I8042 (1 << 7)
/* No i8042 chip is available, do
83
* not use keyboard */
84
85
extern
int
kdb_flags
;
/* Global flags, see kdb_state for per cpu state */
86
87
extern
void
kdb_save_flags
(
void
);
88
extern
void
kdb_restore_flags
(
void
);
89
90
#define KDB_FLAG(flag) (kdb_flags & KDB_FLAG_##flag)
91
#define KDB_FLAG_SET(flag) ((void)(kdb_flags |= KDB_FLAG_##flag))
92
#define KDB_FLAG_CLEAR(flag) ((void)(kdb_flags &= ~KDB_FLAG_##flag))
93
94
/*
95
* External entry point for the kernel debugger. The pt_regs
96
* at the time of entry are supplied along with the reason for
97
* entry to the kernel debugger.
98
*/
99
100
typedef
enum
{
101
KDB_REASON_ENTER = 1,
/* KDB_ENTER() trap/fault - regs valid */
102
KDB_REASON_ENTER_SLAVE,
/* KDB_ENTER_SLAVE() trap/fault - regs valid */
103
KDB_REASON_BREAK,
/* Breakpoint inst. - regs valid */
104
KDB_REASON_DEBUG,
/* Debug Fault - regs valid */
105
KDB_REASON_OOPS,
/* Kernel Oops - regs valid */
106
KDB_REASON_SWITCH,
/* CPU switch - regs valid*/
107
KDB_REASON_KEYBOARD,
/* Keyboard entry - regs valid */
108
KDB_REASON_NMI,
/* Non-maskable interrupt; regs valid */
109
KDB_REASON_RECURSE,
/* Recursive entry to kdb;
110
* regs probably valid */
111
KDB_REASON_SSTEP,
/* Single Step trap. - regs valid */
112
} kdb_reason_t;
113
114
extern
int
kdb_trap_printk
;
115
extern
__printf
(1, 0)
int
vkdb_printf
(
const
char
*
fmt
,
va_list
args);
116
extern
__printf
(1, 2)
int
kdb_printf
(
const
char
*, ...);
117
typedef __printf(1, 2)
int
(*kdb_printf_t)(
const
char
*, ...);
118
119
extern
void
kdb_init
(
int
level
);
120
121
/* Access to kdb specific polling devices */
122
typedef
int
(*get_char_func)(
void
);
123
extern get_char_func
kdb_poll_funcs
[];
124
extern
int
kdb_get_kbd_char
(
void
);
125
126
static
inline
127
int
kdb_process_cpu(
const
struct
task_struct
*
p
)
128
{
129
unsigned
int
cpu
=
task_thread_info
(p)->cpu;
130
if
(cpu >
num_possible_cpus
())
131
cpu = 0;
132
return
cpu
;
133
}
134
135
/* kdb access to register set for stack dumping */
136
extern
struct
pt_regs
*
kdb_current_regs
;
137
#ifdef CONFIG_KALLSYMS
138
extern
const
char
*kdb_walk_kallsyms(loff_t *
pos
);
139
#else
/* ! CONFIG_KALLSYMS */
140
static
inline
const
char
*kdb_walk_kallsyms(loff_t *
pos
)
141
{
142
return
NULL
;
143
}
144
#endif
/* ! CONFIG_KALLSYMS */
145
146
/* Dynamic kdb shell command registration */
147
extern
int
kdb_register
(
char
*,
kdb_func_t
,
char
*,
char
*,
short
);
148
extern
int
kdb_register_repeat
(
char
*,
kdb_func_t
,
char
*,
char
*,
149
short
,
kdb_repeat_t
);
150
extern
int
kdb_unregister
(
char
*);
151
#else
/* ! CONFIG_KGDB_KDB */
152
static
inline
__printf
(1, 2)
int
kdb_printf
(
const
char
*fmt, ...) {
return
0; }
153
static
inline
void
kdb_init
(
int
level) {}
154
static
inline
int
kdb_register
(
char
*
cmd
,
kdb_func_t
func
,
char
*
usage
,
155
char
*help,
short
minlen) {
return
0; }
156
static
inline
int
kdb_register_repeat
(
char
*
cmd
,
kdb_func_t
func
,
char
*
usage
,
157
char
*help,
short
minlen,
158
kdb_repeat_t
repeat) {
return
0; }
159
static
inline
int
kdb_unregister
(
char
*
cmd
) {
return
0; }
160
#endif
/* CONFIG_KGDB_KDB */
161
enum
{
162
KDB_NOT_INITIALIZED
,
163
KDB_INIT_EARLY
,
164
KDB_INIT_FULL
,
165
};
166
167
extern
int
kdbgetintenv
(
const
char
*,
int
*);
168
extern
int
kdb_set
(
int
,
const
char
**);
169
170
#endif
/* !_KDB_H */
Generated on Thu Jan 10 2013 14:51:44 for Linux Kernel by
1.8.2