blob: 6346659b8bd6a61f638446718c0dfc23be0b2cce (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
/* Copyright 2021 Joshua Bakita
* SPDX-License-Identifier: MIT
*/
/* TODO
* - Add sysfs trigger for a preemption
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/proc_fs.h> // So we can set up entries in /proc
#include "nvdebug.h"
// LIAR. But without this we can't use GPL-only exported symbols like
// platform_bus_type or bus_find_device_by_name...
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Joshua Bakita");
MODULE_DESCRIPTION("A scheduling debugging module for NVIDIA GPUs");
MODULE_SOFTDEP("pre: nvgpu"); // We only support the Jetson boards for now
extern const struct file_operations runlist_file_ops;
int __init nvdebug_init(void) {
struct proc_dir_entry *entry = proc_create("runlist", 0444, NULL, &runlist_file_ops);
if (!entry) {
remove_proc_entry("runlist", NULL);
printk(KERN_ERR "[nvdebug] Unable to initialize procfs entries!\n");
return -ENOMEM;
}
printk(KERN_INFO "[nvdebug] Module version "GIT_HASH" initialized\n");
return 0;
}
static void __exit nvdebug_exit(void) {
remove_proc_entry("runlist", NULL);
printk(KERN_INFO "[nvdebug] Exiting...\n");
}
module_init(nvdebug_init);
module_exit(nvdebug_exit);
|