Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <linux/kernel.h>
- #include <linux/module.h>
- #include <linux/moduleparam.h>
- #include <linux/init.h>
- #include <linux/fs.h>
- #include <string.h>
- #define DEVICE_NAME "nulll"
- static int capacity = 0;
- static int used = 0;
- module_param(capacity, int, S_IRUGO);
- static int major_number;
- static ssize_t device_write( struct file *, const char *, size_t, loff_t * );
- static struct file_operations fops = {
- .write = device_write
- };
- static int __init test_init (void) {
- major_number = register_chrdev(0, DEVICE_NAME, &fops);
- if (major_number < 0) {
- printk("Register failed with %d\n", major_number);
- return major_number;
- }
- return 0;
- }
- static void __exit test_exit (void) {
- unregister_chrdev( major_number, DEVICE_NAME );
- }
- module_init( test_init );
- module_exit( test_exit );
- static ssize_t device_write (struct file *filp, const char *buff, size_t len, loff_t * off) {
- if (capacity != 0 && (used + len) > capacity) return ENOSPC;
- capacity += len;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement