#include #include #include #include #include #include #include #include #define PROC_FILE_NAME "writetestfile" char kmod_buffer[10]; ssize_t read_simple(struct file *filp, char *buf, size_t count, loff_t *offp ) { return 0; } ssize_t write_simple(struct file *filp,const char *buf,size_t count,loff_t *offp) { size_t writelen = count < sizeof(kmod_buffer)? count : sizeof(kmod_buffer); memcpy(kmod_buffer, buf, writelen); printk("kmod_buffer contains: %s\n", kmod_buffer); *offp += writelen; return writelen; } struct file_operations proc_fops = { read: read_simple, write: write_simple }; int proc_init (void) { printk("We're in the kernel!\n"); proc_create(PROC_FILE_NAME,0,NULL,&proc_fops); return 0; } void proc_cleanup(void) { remove_proc_entry(PROC_FILE_NAME,NULL); } MODULE_LICENSE("GPL"); module_init(proc_init); module_exit(proc_cleanup);