Merge branch 'linus' into tracing/kmemtrace
[deliverable/linux.git] / include / linux / kmemtrace.h
1 /*
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
15 enum 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
23 extern void kmemtrace_init(void);
24
25 static inline void kmemtrace_mark_alloc_node(enum kmemtrace_type_id type_id,
26 unsigned long call_site,
27 const void *ptr,
28 size_t bytes_req,
29 size_t bytes_alloc,
30 gfp_t gfp_flags,
31 int node)
32 {
33 trace_mark(kmemtrace_alloc, "type_id %d call_site %lu ptr %lu "
34 "bytes_req %lu bytes_alloc %lu gfp_flags %lu node %d",
35 type_id, call_site, (unsigned long) ptr,
36 (unsigned long) bytes_req, (unsigned long) bytes_alloc,
37 (unsigned long) gfp_flags, node);
38 }
39
40 static inline void kmemtrace_mark_free(enum kmemtrace_type_id type_id,
41 unsigned long call_site,
42 const void *ptr)
43 {
44 trace_mark(kmemtrace_free, "type_id %d call_site %lu ptr %lu",
45 type_id, call_site, (unsigned long) ptr);
46 }
47
48 #else /* CONFIG_KMEMTRACE */
49
50 static inline void kmemtrace_init(void)
51 {
52 }
53
54 static inline void kmemtrace_mark_alloc_node(enum kmemtrace_type_id type_id,
55 unsigned long call_site,
56 const void *ptr,
57 size_t bytes_req,
58 size_t bytes_alloc,
59 gfp_t gfp_flags,
60 int node)
61 {
62 }
63
64 static inline void kmemtrace_mark_free(enum kmemtrace_type_id type_id,
65 unsigned long call_site,
66 const void *ptr)
67 {
68 }
69
70 #endif /* CONFIG_KMEMTRACE */
71
72 static inline void kmemtrace_mark_alloc(enum kmemtrace_type_id type_id,
73 unsigned long call_site,
74 const void *ptr,
75 size_t bytes_req,
76 size_t bytes_alloc,
77 gfp_t gfp_flags)
78 {
79 kmemtrace_mark_alloc_node(type_id, call_site, ptr,
80 bytes_req, bytes_alloc, gfp_flags, -1);
81 }
82
83 #endif /* __KERNEL__ */
84
85 #endif /* _LINUX_KMEMTRACE_H */
86
This page took 0.03495 seconds and 6 git commands to generate.