mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-23 10:15:57 +01:00
Create debugfs files directly on debugfs root instead of a subdirectory
This commit is contained in:
@@ -24,7 +24,7 @@ which reduces namespace pollution.
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
static struct dentry *dir;
|
||||
static struct dentry *debugfs_file;
|
||||
|
||||
static ssize_t read(struct file *filp, char __user *buf, size_t len, loff_t *off)
|
||||
{
|
||||
@@ -72,14 +72,13 @@ static const struct file_operations fops_ioctl = {
|
||||
|
||||
static int myinit(void)
|
||||
{
|
||||
dir = debugfs_create_dir("lkmc_anonymous_inode", 0);
|
||||
debugfs_create_file("f", 0, dir, NULL, &fops_ioctl);
|
||||
debugfs_file = debugfs_create_file("lkmc_anonymous_inode", 0, NULL, NULL, &fops_ioctl);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void myexit(void)
|
||||
{
|
||||
debugfs_remove_recursive(dir);
|
||||
debugfs_remove(debugfs_file);
|
||||
}
|
||||
|
||||
module_init(myinit)
|
||||
|
||||
@@ -28,7 +28,7 @@ Here we use debugfs.
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
static struct dentry *dir;
|
||||
static struct dentry *debugfs_file;
|
||||
static char data[] = {'a', 'b', 'c', 'd'};
|
||||
|
||||
static int open(struct inode *inode, struct file *filp)
|
||||
@@ -143,14 +143,13 @@ static const struct file_operations fops = {
|
||||
|
||||
static int myinit(void)
|
||||
{
|
||||
dir = debugfs_create_dir("lkmc_fops", 0);
|
||||
debugfs_create_file("f", S_IRUSR | S_IWUSR, dir, NULL, &fops);
|
||||
debugfs_file = debugfs_create_file("lkmc_fops", S_IRUSR | S_IWUSR, NULL, NULL, &fops);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void myexit(void)
|
||||
{
|
||||
debugfs_remove_recursive(dir);
|
||||
debugfs_remove_recursive(debugfs_file);
|
||||
}
|
||||
|
||||
module_init(myinit)
|
||||
|
||||
@@ -28,7 +28,7 @@ Documentation/ioctl/ioctl-number.txt has some info:
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
static struct dentry *dir;
|
||||
static struct dentry *debugfs_file;
|
||||
|
||||
static long unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long argp)
|
||||
{
|
||||
@@ -76,17 +76,16 @@ static const struct file_operations fops = {
|
||||
|
||||
static int myinit(void)
|
||||
{
|
||||
dir = debugfs_create_dir("lkmc_ioctl", 0);
|
||||
/* ioctl permissions are not automatically restricted by rwx as for read / write,
|
||||
* but we could of course implement that ourselves:
|
||||
* https://stackoverflow.com/questions/29891803/user-permission-check-on-ioctl-command */
|
||||
debugfs_create_file("f", 0, dir, NULL, &fops);
|
||||
debugfs_file = debugfs_create_file("lkmc_ioctl", 0, NULL, NULL, &fops);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void myexit(void)
|
||||
{
|
||||
debugfs_remove_recursive(dir);
|
||||
debugfs_remove(debugfs_file);
|
||||
}
|
||||
|
||||
module_init(myinit)
|
||||
|
||||
@@ -24,7 +24,7 @@ MODULE_LICENSE("GPL");
|
||||
|
||||
static char readbuf[1024];
|
||||
static size_t readbuflen;
|
||||
static struct dentry *dir;
|
||||
static struct dentry *debugfs_file;
|
||||
static struct task_struct *kthread;
|
||||
static wait_queue_head_t waitqueue;
|
||||
|
||||
@@ -74,8 +74,8 @@ static const struct file_operations fops = {
|
||||
|
||||
static int myinit(void)
|
||||
{
|
||||
dir = debugfs_create_dir("lkmc_poll", 0);
|
||||
debugfs_create_file("f", S_IRUSR | S_IWUSR, dir, NULL, &fops);
|
||||
debugfs_file = debugfs_create_file(
|
||||
"lkmc_poll", S_IRUSR | S_IWUSR, NULL, NULL, &fops);
|
||||
init_waitqueue_head(&waitqueue);
|
||||
kthread = kthread_create(kthread_func, NULL, "mykthread");
|
||||
wake_up_process(kthread);
|
||||
@@ -85,7 +85,7 @@ static int myinit(void)
|
||||
static void myexit(void)
|
||||
{
|
||||
kthread_stop(kthread);
|
||||
debugfs_remove_recursive(dir);
|
||||
debugfs_remove(debugfs_file);
|
||||
}
|
||||
|
||||
module_init(myinit)
|
||||
|
||||
@@ -44,11 +44,7 @@ static int myinit(void)
|
||||
{
|
||||
debugfs_file = debugfs_create_file(
|
||||
"lkmc_seq_file_single", S_IRUSR, NULL, NULL, &fops);
|
||||
if (debugfs_file) {
|
||||
return 0;
|
||||
} else {
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void myexit(void)
|
||||
|
||||
Reference in New Issue
Block a user