#include #include #include #include #define TEMPLATE "template" static dev_t template_dev_number; static struct cdev *driver_object; struct class *template_class; static int device_type_nr=1; static struct file_operations fops = { // Hier werden die Adressen der eigentlichen // Treiberfunktionen abgelegt. }; static int __init template_init( void ) { int minor; // ANMELDEN ALS TREIBER if(alloc_chrdev_region(&template_dev_number,0, device_type_nr,TEMPLATE)<0 ) return -EIO; driver_object = cdev_alloc(); // Anmeldeobjekt reservieren if( driver_object==NULL ) goto free_device_number; driver_object->owner = THIS_MODULE; driver_object->ops = &fops; if( cdev_add(driver_object,template_dev_number,1) ) goto free_cdev; // ANLEGEN DER GERAETEDATEIEN template_class = class_create( THIS_MODULE, TEMPLATE ); for( minor=0; minorkobj ); free_device_number: unregister_chrdev_region( template_dev_number, 1 ); return -EIO; } static void __exit template_exit( void ) { int minor; for( minor=0; minor