static int __init simdisk_setup()

in platforms/iss/simdisk.c [257:290]


static int __init simdisk_setup(struct simdisk *dev, int which,
		struct proc_dir_entry *procdir)
{
	char tmp[2] = { '0' + which, 0 };
	int err = -ENOMEM;

	dev->fd = -1;
	dev->filename = NULL;
	spin_lock_init(&dev->lock);
	dev->users = 0;

	dev->gd = blk_alloc_disk(NUMA_NO_NODE);
	if (!dev->gd)
		goto out;
	dev->gd->major = simdisk_major;
	dev->gd->first_minor = which;
	dev->gd->minors = SIMDISK_MINORS;
	dev->gd->fops = &simdisk_ops;
	dev->gd->private_data = dev;
	snprintf(dev->gd->disk_name, 32, "simdisk%d", which);
	set_capacity(dev->gd, 0);
	err = add_disk(dev->gd);
	if (err)
		goto out_cleanup_disk;

	dev->procfile = proc_create_data(tmp, 0644, procdir, &simdisk_proc_ops, dev);

	return 0;

out_cleanup_disk:
	blk_cleanup_disk(dev->gd);
out:
	return err;
}