1831 /**
1832*init_sd - entry point for this driver (both when built in or when
1833*a module).
1834*
1835*Note: this function registers this driver with the scsi mid-level.
1836**/
1837 static int __init init_sd(void)
1838 {
1839int majors = 0, i, err;
1840
1841SCSI_LOG_HLQUEUE(3, printk("init_sd: sd driver entry point/n"));
1842
1843for (i = 0; i < SD_MAJORS; i++)
1844if (register_blkdev(sd_major(i), "sd") == 0)
1845majors++;
1846
1847if (!majors)
1848return -ENODEV;
1849
1850err = class_register(&sd_disk_class);
1851if (err)
1852goto err_out;
1853
1854err = scsi_register_driver(&sd_template.gendrv);
1855if (err)
1856goto err_out_class;
1857
1858return 0;
1859
1860 err_out_class:
1861class_unregister(&sd_disk_class);
1862 err_out:
1863for (i = 0; i < SD_MAJORS; i++)
1864unregister_blkdev(sd_major(i), "sd");
1865return err;
1866 }
1867
1868 /**
1869*exit_sd - exit point for this driver (when it is a module).
1870*
1871*Note: this function unregisters this driver from the scsi mid-level.
1872**/
1873 static void __exit exit_sd(void)
1874 {
1875int i;
1876
1877SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver/n"));
1878
1879scsi_unregister_driver(&sd_template.gendrv);
1880class_unregister(&sd_disk_class);
1881
1882for (i = 0; i < SD_MAJORS; i++)
1883unregister_blkdev(sd_major(i), "sd");
1884 }