码迷,mamicode.com
首页 > 系统相关 > 详细

linux启动之scsi和ata的初始化

时间:2015-02-11 12:44:02      阅读:330      评论:0      收藏:0      [点我收藏+]

标签:内核编译

static int __init init_scsi(void)
{
    int error;

    error = scsi_init_queue();
    if (error)
        return error;
    error = scsi_init_procfs();
    if (error)
        goto cleanup_queue;
    error = scsi_init_devinfo();
    if (error)
        goto cleanup_procfs;
    error = scsi_init_hosts();
    if (error)
        goto cleanup_devlist;
    error = scsi_init_sysctl();
    if (error)
        goto cleanup_hosts;
    error = scsi_sysfs_register();
    if (error)
        goto cleanup_sysctl;

    scsi_netlink_init();

    printk(KERN_NOTICE "SCSI subsystem initialized\n");
    return 0;

cleanup_sysctl:
    scsi_exit_sysctl();
cleanup_hosts:
    scsi_exit_hosts();
cleanup_devlist:
    scsi_exit_devinfo();
cleanup_procfs:
    scsi_exit_procfs();
cleanup_queue:
    scsi_exit_queue();
    printk(KERN_ERR "SCSI subsystem failed to initialize, error = %d\n",
           -error);
    return error;
}


[    0.260628] SCSI subsystem initialized
[    0.260660] libata version 3.00 loaded.


ata/libata-core.c

static int __init ata_init(void)

{
    int rc;

    ata_parse_force_param();

    rc = ata_sff_init();
    if (rc) {
        kfree(ata_force_tbl);
        return rc;
    }

    libata_transport_init();
    ata_scsi_transport_template = ata_attach_transport();
    if (!ata_scsi_transport_template) {
        ata_sff_exit();
        rc = -ENOMEM;
        goto err_out;
    }

    printk(KERN_DEBUG "libata version " DRV_VERSION " loaded.\n");
    return 0;

err_out:
    return rc;
}

linux启动之scsi和ata的初始化

标签:内核编译

原文地址:http://blog.csdn.net/oldlinux/article/details/43732631

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!