blob: ad8b7857855adebdac58e643428ead90c5e422c0 [file] [log] [blame]
Eduard - Gabriel Munteanub9ce08c2008-08-10 20:14:03 +03001/*
2 * Copyright (C) 2008 Eduard - Gabriel Munteanu
3 *
4 * This file is released under GPL version 2.
5 */
6
7#ifndef _LINUX_KMEMTRACE_H
8#define _LINUX_KMEMTRACE_H
9
10#ifdef __KERNEL__
11
12#include <linux/types.h>
13#include <linux/marker.h>
14
15enum kmemtrace_type_id {
16 KMEMTRACE_TYPE_KMALLOC = 0, /* kmalloc() or kfree(). */
17 KMEMTRACE_TYPE_CACHE, /* kmem_cache_*(). */
18 KMEMTRACE_TYPE_PAGES, /* __get_free_pages() and friends. */
19};
20
21#ifdef CONFIG_KMEMTRACE
22
23extern void kmemtrace_init(void);
24
Frederic Weisbecker36994e52008-12-29 13:42:23 -080025extern void kmemtrace_mark_alloc_node(enum kmemtrace_type_id type_id,
Eduard - Gabriel Munteanub9ce08c2008-08-10 20:14:03 +030026 unsigned long call_site,
27 const void *ptr,
28 size_t bytes_req,
29 size_t bytes_alloc,
30 gfp_t gfp_flags,
Frederic Weisbecker36994e52008-12-29 13:42:23 -080031 int node);
Eduard - Gabriel Munteanub9ce08c2008-08-10 20:14:03 +030032
Frederic Weisbecker36994e52008-12-29 13:42:23 -080033extern void kmemtrace_mark_free(enum kmemtrace_type_id type_id,
Eduard - Gabriel Munteanub9ce08c2008-08-10 20:14:03 +030034 unsigned long call_site,
Frederic Weisbecker36994e52008-12-29 13:42:23 -080035 const void *ptr);
Eduard - Gabriel Munteanub9ce08c2008-08-10 20:14:03 +030036
37#else /* CONFIG_KMEMTRACE */
38
39static inline void kmemtrace_init(void)
40{
41}
42
43static inline void kmemtrace_mark_alloc_node(enum kmemtrace_type_id type_id,
44 unsigned long call_site,
45 const void *ptr,
46 size_t bytes_req,
47 size_t bytes_alloc,
48 gfp_t gfp_flags,
49 int node)
50{
51}
52
53static inline void kmemtrace_mark_free(enum kmemtrace_type_id type_id,
54 unsigned long call_site,
55 const void *ptr)
56{
57}
58
59#endif /* CONFIG_KMEMTRACE */
60
61static inline void kmemtrace_mark_alloc(enum kmemtrace_type_id type_id,
62 unsigned long call_site,
63 const void *ptr,
64 size_t bytes_req,
65 size_t bytes_alloc,
66 gfp_t gfp_flags)
67{
68 kmemtrace_mark_alloc_node(type_id, call_site, ptr,
69 bytes_req, bytes_alloc, gfp_flags, -1);
70}
71
72#endif /* __KERNEL__ */
73
74#endif /* _LINUX_KMEMTRACE_H */
75