module: code clean
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
#include "monitor_kernel.h"
|
||||
|
||||
#include <linux/cdev.h> // for cdev
|
||||
#include <linux/cdev.h> // for cdev
|
||||
#include <linux/device.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h> // for kmalloc
|
||||
#include <linux/slab.h> // for kmalloc
|
||||
|
||||
#define DEVICE_NAME "variable_monitor"
|
||||
|
||||
@@ -25,7 +25,8 @@ static int device_open(struct inode *inode, struct file *file) {
|
||||
current->pid);
|
||||
// save pid
|
||||
data = kmalloc(sizeof(*data), GFP_KERNEL);
|
||||
if (!data) return -ENOMEM;
|
||||
if (!data)
|
||||
return -ENOMEM;
|
||||
data->pid = current->pid;
|
||||
file->private_data = data;
|
||||
return 0;
|
||||
@@ -38,12 +39,12 @@ static int device_release(struct inode *inode, struct file *file) {
|
||||
data->pid);
|
||||
// clear watch with pid
|
||||
clear_watch(data->pid);
|
||||
kfree(data); // free data memory
|
||||
kfree(data); // free data memory
|
||||
return 0;
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
int pid;
|
||||
int pid;
|
||||
} ioctl_pid;
|
||||
|
||||
static long device_ioctl(struct file *file, unsigned int ioctl_num,
|
||||
@@ -51,50 +52,46 @@ static long device_ioctl(struct file *file, unsigned int ioctl_num,
|
||||
int ret = 0;
|
||||
watch_arg warg;
|
||||
ioctl_dump_param dump_param;
|
||||
// ioctl_pid wpid;
|
||||
ioctl_pid wpid;
|
||||
|
||||
printk(KERN_INFO "variable_monitor fun: %s with ioctl_num %d\n", __FUNCTION__,
|
||||
ioctl_num);
|
||||
|
||||
switch (ioctl_num) {
|
||||
case 0:
|
||||
// copy watch_arg
|
||||
if (copy_from_user(&warg, (watch_arg *)ioctl_param, sizeof(warg))) {
|
||||
return -EACCES;
|
||||
}
|
||||
printk(KERN_INFO
|
||||
"Watch_arg: task_id=%d, name=%s, ptr=%p, length_byte=%d, "
|
||||
"time_ns=%ld, threshold=%lld\n",
|
||||
warg.task_id, warg.name, warg.ptr, warg.length_byte, warg.time_ns,
|
||||
warg.threshold);
|
||||
// start watch variable
|
||||
start_watch_variable(warg);
|
||||
break;
|
||||
case 1:
|
||||
printk(KERN_INFO "variable_monitor ioctl_num 1\n");
|
||||
ret = copy_from_user(&dump_param, (ioctl_dump_param *)ioctl_param,
|
||||
sizeof(ioctl_dump_param));
|
||||
printk(KERN_INFO "dump_param: %p %lu %p\n", dump_param.user_ptr_len, dump_param.user_buf_len, dump_param.user_buf);
|
||||
if (!ret) {
|
||||
// printk(KERN_INFO "ret\n");
|
||||
ret = copy_to_user_variant_buffer(
|
||||
&load_monitor_variant_buffer, dump_param.user_ptr_len,
|
||||
dump_param.user_buf, dump_param.user_buf_len);
|
||||
printk(KERN_INFO "ret %d, %lu\n", ret, dump_param.user_buf_len);
|
||||
}
|
||||
printk(KERN_INFO "copy_to_user_variant_buffer \n");
|
||||
break;
|
||||
// case 0:
|
||||
// printk(KERN_INFO "variable_monitor test 2\n");
|
||||
// ret = copy_from_user(&wpid, (ioctl_pid *)ioctl_param, sizeof(ioctl_pid));
|
||||
// diag_test(wpid.pid);
|
||||
// /* code */
|
||||
// break;
|
||||
default:
|
||||
// printk(KERN_INFO "variable_monitor test default\n");
|
||||
// ret = copy_from_user(&wpid, (ioctl_pid *)ioctl_param, sizeof(ioctl_pid));
|
||||
// diag_test(wpid.pid);
|
||||
break;
|
||||
case 0:
|
||||
// copy watch_arg
|
||||
if (copy_from_user(&warg, (watch_arg *)ioctl_param, sizeof(warg))) {
|
||||
return -EACCES;
|
||||
}
|
||||
printk(KERN_INFO "Watch_arg: task_id=%d, name=%s, ptr=%p, length_byte=%d, "
|
||||
"time_ns=%ld, threshold=%lld\n",
|
||||
warg.task_id, warg.name, warg.ptr, warg.length_byte, warg.time_ns,
|
||||
warg.threshold);
|
||||
// start watch variable
|
||||
start_watch_variable(warg);
|
||||
break;
|
||||
case 1:
|
||||
printk(KERN_INFO "variable_monitor ioctl_num 1\n");
|
||||
ret = copy_from_user(&dump_param, (ioctl_dump_param *)ioctl_param,
|
||||
sizeof(ioctl_dump_param));
|
||||
printk(KERN_INFO "dump_param: %p %lu %p\n", dump_param.user_ptr_len,
|
||||
dump_param.user_buf_len, dump_param.user_buf);
|
||||
if (!ret) {
|
||||
// printk(KERN_INFO "ret\n");
|
||||
ret = copy_to_user_variant_buffer(
|
||||
&load_monitor_variant_buffer, dump_param.user_ptr_len,
|
||||
dump_param.user_buf, dump_param.user_buf_len);
|
||||
printk(KERN_INFO "ret %d, %lu\n", ret, dump_param.user_buf_len);
|
||||
}
|
||||
printk(KERN_INFO "copy_to_user_variant_buffer \n");
|
||||
break;
|
||||
case 2:
|
||||
printk(KERN_INFO "variable_monitor ioctl_num 2\n");
|
||||
ret = copy_from_user(&wpid, (ioctl_pid *)ioctl_param, sizeof(ioctl_pid));
|
||||
diag_test(wpid.pid);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user