]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blame - include/linux/kmemcheck.h
kmemcheck: add opcode self-testing at boot
[mirror_ubuntu-artful-kernel.git] / include / linux / kmemcheck.h
CommitLineData
dfec072e
VN
1#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
2dff4405 10/* The slab-related functions. */
b1eeab67
VN
11void kmemcheck_alloc_shadow(struct page *page, int order, gfp_t flags, int node);
12void kmemcheck_free_shadow(struct page *page, int order);
2dff4405
VN
13void 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
b1eeab67
VN
17void kmemcheck_pagealloc_alloc(struct page *p, unsigned int order,
18 gfp_t gfpflags);
19
2dff4405
VN
20void 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);
b1eeab67 32void kmemcheck_mark_initialized_pages(struct page *p, unsigned int n);
2dff4405 33
dfec072e
VN
34int kmemcheck_show_addr(unsigned long address);
35int kmemcheck_hide_addr(unsigned long address);
36#else
37#define kmemcheck_enabled 0
38
2dff4405 39static inline void
b1eeab67 40kmemcheck_alloc_shadow(struct page *page, int order, gfp_t flags, int node)
2dff4405
VN
41{
42}
43
44static inline void
b1eeab67 45kmemcheck_free_shadow(struct page *page, int order)
2dff4405
VN
46{
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
b1eeab67
VN
60static inline void kmemcheck_pagealloc_alloc(struct page *p,
61 unsigned int order, gfp_t gfpflags)
62{
63}
64
2dff4405
VN
65static inline bool kmemcheck_page_is_tracked(struct page *p)
66{
67 return false;
68}
d7002857
VN
69
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}
b1eeab67
VN
85
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
dfec072e
VN
101#endif /* CONFIG_KMEMCHECK */
102
103#endif /* LINUX_KMEMCHECK_H */