do_dump_sa
- module - ucli
This commit is contained in:
@@ -45,6 +45,23 @@ typedef struct {
|
||||
int id;
|
||||
} ioctl_id;
|
||||
|
||||
// dump log from buffer
|
||||
static int dump_log(ioctl_dump_param *dump_param, unsigned long ioctl_param,
|
||||
struct diag_variant_buffer *buffer) {
|
||||
int ret = 0;
|
||||
ret = copy_from_user(dump_param, (ioctl_dump_param *)ioctl_param,
|
||||
sizeof(ioctl_dump_param));
|
||||
printk(KERN_INFO "dump_param: %p %lx %p\n", dump_param->user_ptr_len,
|
||||
dump_param->user_buf_len, dump_param->user_buf);
|
||||
if (!ret) {
|
||||
ret = copy_to_user_variant_buffer(buffer, dump_param->user_ptr_len,
|
||||
dump_param->user_buf,
|
||||
dump_param->user_buf_len);
|
||||
printk(KERN_INFO "ret %d, %lx\n", ret, dump_param->user_buf_len);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
static long device_ioctl(struct file *file, unsigned int ioctl_num,
|
||||
unsigned long ioctl_param) {
|
||||
int ret = 0;
|
||||
@@ -74,17 +91,10 @@ static long device_ioctl(struct file *file, unsigned int ioctl_num,
|
||||
break;
|
||||
case IOCTL_DUMP_LOG:
|
||||
printk(KERN_INFO "variable_monitor IOCTL_DUMP_LOG\n");
|
||||
ret = copy_from_user(&dump_param, (ioctl_dump_param *)ioctl_param,
|
||||
sizeof(ioctl_dump_param));
|
||||
printk(KERN_INFO "dump_param: %p %lx %p\n", dump_param.user_ptr_len,
|
||||
dump_param.user_buf_len, dump_param.user_buf);
|
||||
if (!ret) {
|
||||
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, %lx\n", ret, dump_param.user_buf_len);
|
||||
ret = dump_log(&dump_param, ioctl_param, &load_monitor_variant_buffer);
|
||||
if (ret) {
|
||||
printk(KERN_INFO "dump_log failed\n");
|
||||
}
|
||||
// printk(KERN_INFO "copy_to_user_variant_buffer \n");
|
||||
break;
|
||||
case IOCTL_PID:
|
||||
printk(KERN_INFO "variable_monitor PID\n");
|
||||
@@ -96,6 +106,13 @@ static long device_ioctl(struct file *file, unsigned int ioctl_num,
|
||||
ret = copy_from_user(&wid, (ioctl_id *)ioctl_param, sizeof(ioctl_id));
|
||||
diag_tgid(wid.id);
|
||||
break;
|
||||
case IOCTL_DUMP_LOG_SA:
|
||||
printk(KERN_INFO "variable_monitor IOCTL_DUMP_LOG_SA\n");
|
||||
ret = dump_log(&dump_param, ioctl_param, &stand_alone_buffer);
|
||||
if (ret) {
|
||||
printk(KERN_INFO "dump_log failed\n");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user