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
debugobjects.h
Go to the documentation of this file.
1
#ifndef _LINUX_DEBUGOBJECTS_H
2
#define _LINUX_DEBUGOBJECTS_H
3
4
#include <linux/list.h>
5
#include <
linux/spinlock.h
>
6
7
enum
debug_obj_state
{
8
ODEBUG_STATE_NONE
,
9
ODEBUG_STATE_INIT
,
10
ODEBUG_STATE_INACTIVE
,
11
ODEBUG_STATE_ACTIVE
,
12
ODEBUG_STATE_DESTROYED
,
13
ODEBUG_STATE_NOTAVAILABLE
,
14
ODEBUG_STATE_MAX
,
15
};
16
17
struct
debug_obj_descr
;
18
27
struct
debug_obj
{
28
struct
hlist_node
node
;
29
enum
debug_obj_state
state
;
30
unsigned
int
astate
;
31
void
*
object
;
32
struct
debug_obj_descr
*
descr
;
33
};
34
52
struct
debug_obj_descr
{
53
const
char
*
name
;
54
void
*(*debug_hint) (
void
*
addr
);
55
int
(*
fixup_init
) (
void
*
addr
,
enum
debug_obj_state
state
);
56
int
(*
fixup_activate
) (
void
*
addr
,
enum
debug_obj_state
state
);
57
int
(*
fixup_destroy
) (
void
*
addr
,
enum
debug_obj_state
state
);
58
int
(*
fixup_free
) (
void
*
addr
,
enum
debug_obj_state
state
);
59
int
(*
fixup_assert_init
)(
void
*
addr
,
enum
debug_obj_state
state
);
60
};
61
62
#ifdef CONFIG_DEBUG_OBJECTS
63
extern
void
debug_object_init
(
void
*
addr
,
struct
debug_obj_descr
*
descr
);
64
extern
void
65
debug_object_init_on_stack
(
void
*
addr
,
struct
debug_obj_descr
*
descr
);
66
extern
void
debug_object_activate
(
void
*
addr
,
struct
debug_obj_descr
*
descr
);
67
extern
void
debug_object_deactivate
(
void
*
addr
,
struct
debug_obj_descr
*
descr
);
68
extern
void
debug_object_destroy
(
void
*
addr
,
struct
debug_obj_descr
*
descr
);
69
extern
void
debug_object_free
(
void
*
addr
,
struct
debug_obj_descr
*
descr
);
70
extern
void
debug_object_assert_init
(
void
*
addr
,
struct
debug_obj_descr
*
descr
);
71
72
/*
73
* Active state:
74
* - Set at 0 upon initialization.
75
* - Must return to 0 before deactivation.
76
*/
77
extern
void
78
debug_object_active_state
(
void
*
addr
,
struct
debug_obj_descr
*
descr
,
79
unsigned
int
expect,
unsigned
int
next
);
80
81
extern
void
debug_objects_early_init
(
void
);
82
extern
void
debug_objects_mem_init
(
void
);
83
#else
84
static
inline
void
85
debug_object_init
(
void
*
addr
,
struct
debug_obj_descr
*
descr
) { }
86
static
inline
void
87
debug_object_init_on_stack
(
void
*
addr
,
struct
debug_obj_descr
*
descr
) { }
88
static
inline
void
89
debug_object_activate
(
void
*
addr
,
struct
debug_obj_descr
*
descr
) { }
90
static
inline
void
91
debug_object_deactivate
(
void
*
addr
,
struct
debug_obj_descr
*
descr
) { }
92
static
inline
void
93
debug_object_destroy
(
void
*
addr
,
struct
debug_obj_descr
*
descr
) { }
94
static
inline
void
95
debug_object_free
(
void
*
addr
,
struct
debug_obj_descr
*
descr
) { }
96
static
inline
void
97
debug_object_assert_init
(
void
*
addr
,
struct
debug_obj_descr
*
descr
) { }
98
99
static
inline
void
debug_objects_early_init
(
void
) { }
100
static
inline
void
debug_objects_mem_init
(
void
) { }
101
#endif
102
103
#ifdef CONFIG_DEBUG_OBJECTS_FREE
104
extern
void
debug_check_no_obj_freed(
const
void
*
address
,
unsigned
long
size
);
105
#else
106
static
inline
void
107
debug_check_no_obj_freed(
const
void
*
address
,
unsigned
long
size
) { }
108
#endif
109
110
#endif
Generated on Thu Jan 10 2013 14:51:18 for Linux Kernel by
1.8.2