diff --git a/kernel_module/fops.c b/kernel_module/fops.c index 95cd2e1..1f7588a 100644 --- a/kernel_module/fops.c +++ b/kernel_module/fops.c @@ -30,13 +30,18 @@ int fop_open(struct inode *inode, struct file *file) ssize_t fop_read(struct file *file, char __user *buf, size_t len, loff_t *off) { printk(KERN_INFO "read\n"); + printk(KERN_INFO "len = %zu\n", len); + /* TODO. */ + /*copy_to_user(arg, &msg, size);*/ return 0; } ssize_t fop_write(struct file *file, const char __user *buf, size_t len, loff_t *off) { printk(KERN_INFO "write\n"); - return 0; + printk(KERN_INFO "buf = %.*s\n", (int)len, buf); + printk(KERN_INFO "len = %zu\n", len); + return len; } /* diff --git a/rootfs_overlay/fops.sh b/rootfs_overlay/fops.sh index 7a7836d..e394d0e 100755 --- a/rootfs_overlay/fops.sh +++ b/rootfs_overlay/fops.sh @@ -4,9 +4,16 @@ insmod /fops.ko mkdir -p /fops mount -t debugfs none /fops cd /fops/kernel_module_cheat + cat fops # => open # => read +# => len = [0-9]+ +# => close + +printf a >fops +# => open +# => write +# => len = a +# => len = 1 # => close -# TODO. -#echo a >fops