// SPDX-License-Identifier: GPL-2.0 #include #include #include #include #include #define VALUE "tomoron" ssize_t dev_read(struct file *f, char __user *buf, size_t len, loff_t *off); ssize_t dev_write(struct file *f, const char __user *buf, size_t len, loff_t *off); ssize_t dev_read(struct file *f, char __user *buf, size_t len, loff_t *off) { char msg[] = VALUE; pr_info("someone read from the file\n"); return simple_read_from_buffer(buf, len, off, msg, sizeof(msg) - 1); } ssize_t dev_write(struct file *f, const char __user *buf, size_t len, loff_t *off) { char kbuf[64]; if (len > sizeof(kbuf) - 1) return -EINVAL; if (copy_from_user(kbuf, buf, len)) return -EINVAL; kbuf[len] = '\0'; if (strcmp(kbuf, VALUE) == 0) { pr_info("someone wrote the right string\n"); return len; } pr_info("someone wrote the wrong string\n"); return -EINVAL; }