--- drivers/char/raw.c-orig Sun Sep 23 05:35:43 2001 +++ drivers/char/raw.c Fri Dec 7 19:45:30 2001 @@ -15,6 +15,7 @@ #include #include #include +#include #include #define dprintk(x...) @@ -51,10 +52,26 @@ static int __init raw_init(void) { int i; - register_chrdev(RAW_MAJOR, "raw", &raw_fops); + devfs_handle_t devfs_handle; + char name_buf[8]; + + if (devfs_register_chrdev(RAW_MAJOR, "raw", &raw_fops)) + printk("unable to get major %d for raw devs\n", RAW_MAJOR); + + devfs_handle = devfs_mk_dir(NULL, "raw", NULL); + devfs_register (devfs_handle, "rawctl", DEVFS_FL_DEFAULT, + RAW_MAJOR, 0, S_IFCHR | S_IRUGO | S_IWUGO, + &raw_fops, NULL); for (i = 0; i < 256; i++) init_MUTEX(&raw_devices[i].mutex); + + for (i = 1; i < 64; i++) { + sprintf(name_buf, "raw%d", i); + devfs_register (devfs_handle, name_buf, DEVFS_FL_DEFAULT, + RAW_MAJOR, i, S_IFCHR | S_IRUGO | S_IWUGO, + &raw_fops, NULL); + } return 0; }