1 static int __init
xpram_setup_blkdev(void)
6 for (i
= 0; i
< xpram_devs
; i
++) {
7 struct gendisk
*disk
= alloc_disk(1);
10 xpram_disks
[i
] = disk
;
14 * Register xpram major.
16 rc
= register_blkdev(XPRAM_MAJOR
, XPRAM_NAME
);
20 devfs_mk_dir("slram");
23 * Assign the other needed values: make request function, sizes and
24 * hardsect size. All the minor devices feature the same value.
26 xpram_queue
= blk_alloc_queue(GFP_KERNEL
);
31 blk_queue_make_request(xpram_queue
, xpram_make_request
);
32 blk_queue_hardsect_size(xpram_queue
, 4096);
35 * Setup device structures.
38 for (i
= 0; i
< xpram_devs
; i
++) {
39 struct gendisk
*disk
= xpram_disks
[i
];
41 xpram_devices
[i
].size
= xpram_sizes
[i
] / 4;
42 xpram_devices
[i
].offset
= offset
;
43 offset
+= xpram_devices
[i
].size
;
44 disk
->major
= XPRAM_MAJOR
;
45 disk
->first_minor
= i
;
46 disk
->fops
= &xpram_devops
;
47 disk
->private_data
= &xpram_devices
[i
];
48 disk
->queue
= xpram_queue
;
49 sprintf(disk
->disk_name
, "slram%d", i
);
50 sprintf(disk
->devfs_name
, "slram/%d", i
);
51 set_capacity(disk
, xpram_sizes
[i
] << 1);
57 devfs_remove("slram");
58 unregister_blkdev(XPRAM_MAJOR
, XPRAM_NAME
);
61 put_disk(xpram_disks
[i
]);