X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fchar%2Flp.c;fp=drivers%2Fchar%2Flp.c;h=e572605252935c8562b64dbfcb6ed483fbd10756;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=f875fda3b089d54332341671388716c99ebd05eb;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/drivers/char/lp.c b/drivers/char/lp.c index f875fda3b..e57260525 100644 --- a/drivers/char/lp.c +++ b/drivers/char/lp.c @@ -114,11 +114,13 @@ #include #include +#include #include #include #include #include #include +#include #include #include #include @@ -666,7 +668,7 @@ static int lp_ioctl(struct inode *inode, struct file *file, return retval; } -static const struct file_operations lp_fops = { +static struct file_operations lp_fops = { .owner = THIS_MODULE, .write = lp_write, .ioctl = lp_ioctl, @@ -805,6 +807,8 @@ static int lp_register(int nr, struct parport *port) class_device_create(lp_class, NULL, MKDEV(LP_MAJOR, nr), NULL, "lp%d", nr); + devfs_mk_cdev(MKDEV(LP_MAJOR, nr), S_IFCHR | S_IRUGO | S_IWUGO, + "printers/%d", nr); printk(KERN_INFO "lp%d: using %s (%s).\n", nr, port->name, (port->irq == PARPORT_IRQ_NONE)?"polling":"interrupt-driven"); @@ -903,6 +907,7 @@ static int __init lp_init (void) return -EIO; } + devfs_mk_dir("printers"); lp_class = class_create(THIS_MODULE, "printer"); if (IS_ERR(lp_class)) { err = PTR_ERR(lp_class); @@ -928,6 +933,7 @@ static int __init lp_init (void) out_class: class_destroy(lp_class); out_devfs: + devfs_remove("printers"); unregister_chrdev(LP_MAJOR, "lp"); return err; } @@ -975,8 +981,10 @@ static void lp_cleanup_module (void) if (lp_table[offset].dev == NULL) continue; parport_unregister_device(lp_table[offset].dev); + devfs_remove("printers/%d", offset); class_device_destroy(lp_class, MKDEV(LP_MAJOR, offset)); } + devfs_remove("printers"); class_destroy(lp_class); }