kmemcheck.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #ifndef LINUX_KMEMCHECK_H
  2. #define LINUX_KMEMCHECK_H
  3. #include <linux/mm_types.h>
  4. #include <linux/types.h>
  5. #ifdef CONFIG_KMEMCHECK
  6. extern int kmemcheck_enabled;
  7. /* The slab-related functions. */
  8. void kmemcheck_alloc_shadow(struct page *page, int order, gfp_t flags, int node);
  9. void kmemcheck_free_shadow(struct page *page, int order);
  10. void kmemcheck_slab_alloc(struct kmem_cache *s, gfp_t gfpflags, void *object,
  11. size_t size);
  12. void kmemcheck_slab_free(struct kmem_cache *s, void *object, size_t size);
  13. void kmemcheck_pagealloc_alloc(struct page *p, unsigned int order,
  14. gfp_t gfpflags);
  15. void kmemcheck_show_pages(struct page *p, unsigned int n);
  16. void kmemcheck_hide_pages(struct page *p, unsigned int n);
  17. bool kmemcheck_page_is_tracked(struct page *p);
  18. void kmemcheck_mark_unallocated(void *address, unsigned int n);
  19. void kmemcheck_mark_uninitialized(void *address, unsigned int n);
  20. void kmemcheck_mark_initialized(void *address, unsigned int n);
  21. void kmemcheck_mark_freed(void *address, unsigned int n);
  22. void kmemcheck_mark_unallocated_pages(struct page *p, unsigned int n);
  23. void kmemcheck_mark_uninitialized_pages(struct page *p, unsigned int n);
  24. void kmemcheck_mark_initialized_pages(struct page *p, unsigned int n);
  25. int kmemcheck_show_addr(unsigned long address);
  26. int kmemcheck_hide_addr(unsigned long address);
  27. #else
  28. #define kmemcheck_enabled 0
  29. static inline void
  30. kmemcheck_alloc_shadow(struct page *page, int order, gfp_t flags, int node)
  31. {
  32. }
  33. static inline void
  34. kmemcheck_free_shadow(struct page *page, int order)
  35. {
  36. }
  37. static inline void
  38. kmemcheck_slab_alloc(struct kmem_cache *s, gfp_t gfpflags, void *object,
  39. size_t size)
  40. {
  41. }
  42. static inline void kmemcheck_slab_free(struct kmem_cache *s, void *object,
  43. size_t size)
  44. {
  45. }
  46. static inline void kmemcheck_pagealloc_alloc(struct page *p,
  47. unsigned int order, gfp_t gfpflags)
  48. {
  49. }
  50. static inline bool kmemcheck_page_is_tracked(struct page *p)
  51. {
  52. return false;
  53. }
  54. static inline void kmemcheck_mark_unallocated(void *address, unsigned int n)
  55. {
  56. }
  57. static inline void kmemcheck_mark_uninitialized(void *address, unsigned int n)
  58. {
  59. }
  60. static inline void kmemcheck_mark_initialized(void *address, unsigned int n)
  61. {
  62. }
  63. static inline void kmemcheck_mark_freed(void *address, unsigned int n)
  64. {
  65. }
  66. static inline void kmemcheck_mark_unallocated_pages(struct page *p,
  67. unsigned int n)
  68. {
  69. }
  70. static inline void kmemcheck_mark_uninitialized_pages(struct page *p,
  71. unsigned int n)
  72. {
  73. }
  74. static inline void kmemcheck_mark_initialized_pages(struct page *p,
  75. unsigned int n)
  76. {
  77. }
  78. #endif /* CONFIG_KMEMCHECK */
  79. #endif /* LINUX_KMEMCHECK_H */