permit multiline comments and strings in macros
[bpt/coccinelle.git] / tests / bug_expopt.c
1 static int __init xpram_setup_blkdev(void)
2 {
3 unsigned long offset;
4 int i, rc = -ENOMEM;
5
6 for (i = 0; i < xpram_devs; i++) {
7 struct gendisk *disk = alloc_disk(1);
8 if (!disk)
9 goto out;
10 xpram_disks[i] = disk;
11 }
12
13 /*
14 * Register xpram major.
15 */
16 rc = register_blkdev(XPRAM_MAJOR, XPRAM_NAME);
17 if (rc < 0)
18 goto out;
19
20 devfs_mk_dir("slram");
21
22 /*
23 * Assign the other needed values: make request function, sizes and
24 * hardsect size. All the minor devices feature the same value.
25 */
26 xpram_queue = blk_alloc_queue(GFP_KERNEL);
27 if (!xpram_queue) {
28 rc = -ENOMEM;
29 goto out_unreg;
30 }
31 blk_queue_make_request(xpram_queue, xpram_make_request);
32 blk_queue_hardsect_size(xpram_queue, 4096);
33
34 /*
35 * Setup device structures.
36 */
37 offset = 0;
38 for (i = 0; i < xpram_devs; i++) {
39 struct gendisk *disk = xpram_disks[i];
40
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);
52 add_disk(disk);
53 }
54
55 return 0;
56 out_unreg:
57 devfs_remove("slram");
58 unregister_blkdev(XPRAM_MAJOR, XPRAM_NAME);
59 out:
60 while (i--)
61 put_disk(xpram_disks[i]);
62 return rc;
63 }