Untitled
unknown
plain_text
a year ago
1.5 kB
6
Indexable
#include<linux/module.h> #include<linux/fs.h> #include<linux/cdev.h> #include<linux/device.h> #include<linux/kdev_t.h> #define DEV_MEM_SIZE 512 char device_buffer[DEV_MEM_SIZE]; dev_t device_number; struct cdev pcd_cdev; loff_t pcd_lseek(struct file *filp, loff_t off, int whence){ return 0; } ssize_t pcd_read(struct file *filp, char __user *buff, size_t count, loff_t *f_pos){ return 0; } ssize_t pcd_write(struct file *filp, const char __user *buff, size_t count, loff_t *f_pos){ return 0; } int pcd_open(struct inode *inode, struct file *filp){ return 0; } int pcd_release(struct inode *inode, struct file *filp){ return 0; } struct file_operations pcd_fops = { .open = pcd_open, .write = pcd_write, .release = pcd_release, .read = pcd_read, .llseek = pcd_lseek, }; struct class *pcd_class; struct device *pcd_device; static int __init pcd_driver_init(void){ int ret; ret = alloc_chrdev_region(&device_number,0,1,"pcd_devices"); pr_info("%s Device number <MAJOR>:<MINOR> = %d:%d\n",__func__,MAJOR(device_number), MINOR(device_number)); cdev_init(&pcd_cdev, &pcd_fops); pcd_cdev.owner = THIS_MODULE; cdev_add(&pcd_cdev, device_number, 1); pcd_class= class_create(THIS_MODULE,"pcd_class"); pcd_device = device_create(pcd_class, NULL, device_number,NULL,"pcd"); pr_info("Module init was sucessfull !"); return 0; } static void __exit pcd_driver_cleanup(void){ } MODULE_LICENSE("GPL"); MODULE_AUTHOR("Tra"); MODULE_DESCRIPTION("First driver"); MODULE_VERSION("2:1.0");
Editor is loading...
Leave a Comment