blob: 093d23969b1b11815a1d15bd3b2d2f2dc19baec7 [file] [log] [blame]
Vegard Nossumdfec0722008-04-04 00:51:41 +02001#ifndef LINUX_KMEMCHECK_H
2#define LINUX_KMEMCHECK_H
3
4#include <linux/mm_types.h>
5#include <linux/types.h>
6
7#ifdef CONFIG_KMEMCHECK
8extern int kmemcheck_enabled;
9
Vegard Nossum2dff4402008-05-31 15:56:17 +020010/* The slab-related functions. */
Vegard Nossumb1eeab62008-11-25 16:55:53 +010011void kmemcheck_alloc_shadow(struct page *page, int order, gfp_t flags, int node);
12void kmemcheck_free_shadow(struct page *page, int order);
Vegard Nossum2dff4402008-05-31 15:56:17 +020013void kmemcheck_slab_alloc(struct kmem_cache *s, gfp_t gfpflags, void *object,
14 size_t size);
15void kmemcheck_slab_free(struct kmem_cache *s, void *object, size_t size);
16
Vegard Nossumb1eeab62008-11-25 16:55:53 +010017void kmemcheck_pagealloc_alloc(struct page *p, unsigned int order,
18 gfp_t gfpflags);
19
Vegard Nossum2dff4402008-05-31 15:56:17 +020020void kmemcheck_show_pages(struct page *p, unsigned int n);
21void kmemcheck_hide_pages(struct page *p, unsigned int n);
22
23bool kmemcheck_page_is_tracked(struct page *p);
24
25void kmemcheck_mark_unallocated(void *address, unsigned int n);
26void kmemcheck_mark_uninitialized(void *address, unsigned int n);
27void kmemcheck_mark_initialized(void *address, unsigned int n);
28void kmemcheck_mark_freed(void *address, unsigned int n);
29
30void kmemcheck_mark_unallocated_pages(struct page *p, unsigned int n);
31void kmemcheck_mark_uninitialized_pages(struct page *p, unsigned int n);
Vegard Nossumb1eeab62008-11-25 16:55:53 +010032void kmemcheck_mark_initialized_pages(struct page *p, unsigned int n);
Vegard Nossum2dff4402008-05-31 15:56:17 +020033
Vegard Nossumdfec0722008-04-04 00:51:41 +020034int kmemcheck_show_addr(unsigned long address);
35int kmemcheck_hide_addr(unsigned long address);
36#else
37#define kmemcheck_enabled 0
38
Vegard Nossum2dff4402008-05-31 15:56:17 +020039static inline void
Vegard Nossumb1eeab62008-11-25 16:55:53 +010040kmemcheck_alloc_shadow(struct page *page, int order, gfp_t flags, int node)
Vegard Nossum2dff4402008-05-31 15:56:17 +020041{
42}
43
44static inline void
Vegard Nossumb1eeab62008-11-25 16:55:53 +010045kmemcheck_free_shadow(struct page *page, int order)
Vegard Nossum2dff4402008-05-31 15:56:17 +020046{
47}
48
49static inline void
50kmemcheck_slab_alloc(struct kmem_cache *s, gfp_t gfpflags, void *object,
51 size_t size)
52{
53}
54
55static inline void kmemcheck_slab_free(struct kmem_cache *s, void *object,
56 size_t size)
57{
58}
59
Vegard Nossumb1eeab62008-11-25 16:55:53 +010060static inline void kmemcheck_pagealloc_alloc(struct page *p,
61 unsigned int order, gfp_t gfpflags)
62{
63}
64
Vegard Nossum2dff4402008-05-31 15:56:17 +020065static inline bool kmemcheck_page_is_tracked(struct page *p)
66{
67 return false;
68}
Vegard Nossumd7002852008-07-20 10:44:54 +020069
70static inline void kmemcheck_mark_unallocated(void *address, unsigned int n)
71{
72}
73
74static inline void kmemcheck_mark_uninitialized(void *address, unsigned int n)
75{
76}
77
78static inline void kmemcheck_mark_initialized(void *address, unsigned int n)
79{
80}
81
82static inline void kmemcheck_mark_freed(void *address, unsigned int n)
83{
84}
Vegard Nossumb1eeab62008-11-25 16:55:53 +010085
86static inline void kmemcheck_mark_unallocated_pages(struct page *p,
87 unsigned int n)
88{
89}
90
91static inline void kmemcheck_mark_uninitialized_pages(struct page *p,
92 unsigned int n)
93{
94}
95
96static inline void kmemcheck_mark_initialized_pages(struct page *p,
97 unsigned int n)
98{
99}
100
Vegard Nossumdfec0722008-04-04 00:51:41 +0200101#endif /* CONFIG_KMEMCHECK */
102
103#endif /* LINUX_KMEMCHECK_H */