summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/os/linux/debug_allocator.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/os/linux/debug_allocator.c')
-rw-r--r--drivers/gpu/nvgpu/os/linux/debug_allocator.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/os/linux/debug_allocator.c b/drivers/gpu/nvgpu/os/linux/debug_allocator.c
new file mode 100644
index 00000000..d63a9030
--- /dev/null
+++ b/drivers/gpu/nvgpu/os/linux/debug_allocator.c
@@ -0,0 +1,69 @@
1/*
2 * Copyright (C) 2017 NVIDIA Corporation. All rights reserved.
3 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 */
14
15#include "debug_allocator.h"
16#include "os_linux.h"
17
18#include <linux/debugfs.h>
19#include <linux/seq_file.h>
20
21#include <nvgpu/allocator.h>
22
23static int __alloc_show(struct seq_file *s, void *unused)
24{
25 struct nvgpu_allocator *a = s->private;
26
27 nvgpu_alloc_print_stats(a, s, 1);
28
29 return 0;
30}
31
32static int __alloc_open(struct inode *inode, struct file *file)
33{
34 return single_open(file, __alloc_show, inode->i_private);
35}
36
37static const struct file_operations __alloc_fops = {
38 .open = __alloc_open,
39 .read = seq_read,
40 .llseek = seq_lseek,
41 .release = single_release,
42};
43
44void nvgpu_init_alloc_debug(struct gk20a *g, struct nvgpu_allocator *a)
45{
46 struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g);
47
48 if (!l->debugfs_allocators)
49 return;
50
51 a->debugfs_entry = debugfs_create_file(a->name, S_IRUGO,
52 l->debugfs_allocators,
53 a, &__alloc_fops);
54}
55
56void nvgpu_fini_alloc_debug(struct nvgpu_allocator *a)
57{
58}
59
60void nvgpu_alloc_debugfs_init(struct gk20a *g)
61{
62 struct nvgpu_os_linux *l = nvgpu_os_linux_from_gk20a(g);
63
64 l->debugfs_allocators = debugfs_create_dir("allocators", l->debugfs);
65 if (IS_ERR_OR_NULL(l->debugfs_allocators)) {
66 l->debugfs_allocators = NULL;
67 return;
68 }
69}