Linux那些事儿之我是SCSI硬盘(1)简简单单初始化 – fudan

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 {

1839 int majors = 0, i, err;

1840

1841 SCSI_LOG_HLQUEUE(3, printk("init_sd: sd driver entry point/n"));

1842

1843 for (i = 0; i < SD_MAJORS; i++)

1844 if (register_blkdev(sd_major(i), "sd") == 0)

1845 majors++;

1846

1847 if (!majors)

1848 return -ENODEV;

1849

1850 err = class_register(&sd_disk_class);

1851 if (err)

1852 goto err_out;

1853

1854 err = scsi_register_driver(&sd_template.gendrv);

1855 if (err)

1856 goto err_out_class;

1857

1858 return 0;

1859

1860 err_out_class:

1861 class_unregister(&sd_disk_class);

1862 err_out:

1863 for (i = 0; i < SD_MAJORS; i++)

1864 unregister_blkdev(sd_major(i), "sd");

1865 return 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 {

1875 int i;

1876

1877 SCSI_LOG_HLQUEUE(3, printk("exit_sd: exiting sd driver/n"));

1878

1879 scsi_unregister_driver(&sd_template.gendrv);

1880 class_unregister(&sd_disk_class);

1881

1882 for (i = 0; i < SD_MAJORS; i++)

1883 unregister_blkdev(sd_major(i), "sd");

1884 }

与一个赏心悦目的人错肩,真真实实的活着,也就够了。

Linux那些事儿之我是SCSI硬盘(1)简简单单初始化 – fudan

相关文章:

你感兴趣的文章:

标签云: