#include "fopdrv.h" // driver/char/mem.c read_null (/dev/null) ssize_t fop_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) { return 0; } // driver/char/mem.c write_null ssize_t fop_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos) { return count; } int fop_open(struct inode * inode, struct file * file) { printk("%s\n", __PRETTY_FUNCTION__); return 0; // 0 seems to be a safe return value as it's used in driver/char/mem.c. The // manual page for open(2) says that the system call returns a nonnegative // integer representing the file descriptor on success, but it does not // appears to be required. } int fop_release(struct inode * inode, struct file * file) { printk("%s\n", __PRETTY_FUNCTION__); return 0; // same as above, but found in driver/char/lp.c }