/* xd_init: register the block device number and set up pointer tables */ int __init xd_init(void) { init_timer (&xd_watchdog_int); xd_watchdog_int.function = xd_watchdog; if (!xd_dma_buffer) xd_dma_buffer = (char *)xd_dma_mem_alloc(xd_maxsectors * 0x200); if (!xd_dma_buffer) { printk(KERN_ERR "xd: Out of memory.\n"); return -ENOMEM; } if (devfs_register_blkdev(MAJOR_NR,"xd",&xd_fops)) { printk(KERN_ERR "xd: Unable to get major number %d\n",MAJOR_NR); return -1; } devfs_handle = devfs_mk_dir (NULL, xd_gendisk.major_name, NULL); blk_init_queue(BLK_DEFAULT_QUEUE(MAJOR_NR), DEVICE_REQUEST); read_ahead[MAJOR_NR] = 8; /* 8 sector (4kB) read ahead */ add_gendisk(&xd_gendisk); xd_geninit(); return 0; }
int pd_init (void) { int i; request_queue_t * q; if (disable) return -1; if (devfs_register_blkdev(MAJOR_NR,name,&pd_fops)) { printk("%s: unable to get major number %d\n", name,major); return -1; } q = BLK_DEFAULT_QUEUE(MAJOR_NR); blk_init_queue(q, DEVICE_REQUEST); read_ahead[MAJOR_NR] = 8; /* 8 sector (4kB) read ahead */ pd_gendisk.major = major; pd_gendisk.major_name = name; add_gendisk(&pd_gendisk); for(i=0;i<PD_DEVS;i++) pd_blocksizes[i] = 1024; blksize_size[MAJOR_NR] = pd_blocksizes; for(i=0;i<PD_DEVS;i++) pd_maxsectors[i] = cluster; max_sectors[MAJOR_NR] = pd_maxsectors; printk("%s: %s version %s, major %d, cluster %d, nice %d\n", name,name,PD_VERSION,major,cluster,nice); pd_init_units(); pd_valid = 0; pd_gendisk.nr_real = pd_detect(); pd_valid = 1; #ifdef MODULE if (!pd_gendisk.nr_real) { cleanup_module(); return -1; } #endif return 0; }