blob: 2c332010cb4edf52acef2c936bbfdd349ffc0fb7 [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
25static 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 bytes_req, bytes_alloc, (unsigned long) gfp_flags, node);
37}
38
39static inline void kmemtrace_mark_free(enum kmemtrace_type_id type_id,
40 unsigned long call_site,
41 const void *ptr)
42{
43 trace_mark(kmemtrace_free, "type_id %d call_site %lu ptr %lu",
44 type_id, call_site, (unsigned long) ptr);
45}
46
47#else /* CONFIG_KMEMTRACE */
48
49static inline void kmemtrace_init(void)
50{
51}
52
53static inline void kmemtrace_mark_alloc_node(enum kmemtrace_type_id type_id,
54 unsigned long call_site,
55 const void *ptr,
56 size_t bytes_req,
57 size_t bytes_alloc,
58 gfp_t gfp_flags,
59 int node)
60{
61}
62
63static inline void kmemtrace_mark_free(enum kmemtrace_type_id type_id,
64 unsigned long call_site,
65 const void *ptr)
66{
67}
68
69#endif /* CONFIG_KMEMTRACE */
70
71static inline void kmemtrace_mark_alloc(enum kmemtrace_type_id type_id,
72 unsigned long call_site,
73 const void *ptr,
74 size_t bytes_req,
75 size_t bytes_alloc,
76 gfp_t gfp_flags)
77{
78 kmemtrace_mark_alloc_node(type_id, call_site, ptr,
79 bytes_req, bytes_alloc, gfp_flags, -1);
80}
81
82#endif /* __KERNEL__ */
83
84#endif /* _LINUX_KMEMTRACE_H */
85