raid卡3108驱动初始化

raid卡3108的驱动在driver/scsi/megaraid.
从makefile 可以看出,要使能3108的驱动的话,只要在config中打开CONFIG_MEGARAID_SAS 就行了

obj-$(CONFIG_MEGARAID_MM)    += megaraid_mm.o
obj-$(CONFIG_MEGARAID_MAILBOX)    += megaraid_mbox.o
obj-$(CONFIG_MEGARAID_SAS)    += megaraid_sas.o
megaraid_sas-objs := megaraid_sas_base.o megaraid_sas_fusion.o \
    megaraid_sas_fp.o

3108的入口函数在megaraid_sas_base.c 中
static int __init megasas_init(void)
{
    int rval;

    /*
     * Booted in kdump kernel, minimize memory footprints by
     * disabling few features
     */
    if (reset_devices) {
        msix_vectors = 1;
        rdpq_enable = 0;
        dual_qdepth_disable = 1;
    }

    /*
     * Announce driver version and other information
     */
//可以通过dmesg | grep -i megasas来查询是否使能3108 raid卡
    pr_info("megasas: %s\n", MEGASAS_VERSION);

    spin_lock_init(&poll_aen_lock);

    support_poll_for_event = 2;
    support_device_change = 1;

    memset(&megasas_mgmt_info, 0, sizeof(megasas_mgmt_info));

    /*
     * Register character device node
     */
//注册一个名为megaraid_sas_ioctl的字符设备,register_chrdev的第一个参数为0表示自动分配设备号
    rval = register_chrdev(0, "megaraid_sas_ioctl", &megasas_mgmt_fops);

    if (rval < 0) {
        printk(KERN_DEBUG "megasas: failed to open device node\n");
        return rval;
    }

    megasas_mgmt_majorno = rval;

    /*
     * Register ourselves as PCI hotplug module
     */
// 3108 是一个pci设备,因此调用pci_register_driver 来注册一个pci driver
    rval = pci_register_driver(&megasas_pci_driver);

    if (rval) {
        printk(KERN_DEBUG "megasas: PCI hotplug registration failed \n");
        goto err_pcidrv;
    }
//通过driver_create_file 来为这个字符设备注册attr。这样就可以在/sys/devices/××/version
    rval = driver_create_file(&megasas_pci_driver.driver,
                  &driver_attr_version);
    if (rval)
        goto err_dcf_attr_ver;

    return rval;
}
这里以/sys/devices/××/version的实现为例,其实现如下:
static ssize_t megasas_sysfs_show_version(struct device_driver *dd, char *buf)
{
    return snprintf(buf, strlen(MEGASAS_VERSION) + 2, "%s\n",
            MEGASAS_VERSION);
}

static DRIVER_ATTR(version, S_IRUGO, megasas_sysfs_show_version, NULL);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值