您的位置:首页 > 其它

mpt2sas-19.00.00.00_rhel6.5驱动笔记系列1-函数初始化

2014-09-01 13:18 513 查看
再次说明,下面有加入一些网上达人的观点和自己的想法,作成笔记供自己记录

1.Fusion MPT简介:

Fusion-MPT为LSI Logic开发,可以实现scsi和Fiber Channel的解决方案。这种架构具有高IO特性,降低产品的验证时间和推广时间。

Fusion-MPT在硬件层上构建独有的Fimrware层,不同的Firmware为上层SCSI 和 FC驱动层提供支持,Firmware将驱动与硬件隔离,对上层程序提供统一的MPI(Message Passing Interface)接口,使同一驱动可以在不同的硬件上起作用。

驱动对上层程序提供函数接口,上层通过调用驱动,经过MPI访问固件。MPI提供了一个消息传输框架,定义了主机和LSi Fusion-MPT芯片通信接口。

2.驱动分析:

驱动mpt2sas-19.00.00.00_rhel6.5 C文件包括,mpt2sas_base.c ,mpt2sas_config.c ,mpt2sas_ctl.c ,mpt2sas_scsih.c ,mpt2sas_transport.c,mpt2sas_trigger_diag.c 文件

2.1模块初始化

模块初始化mpt2sas_scsih.c 中,加载驱动通过module_init(_scsih_init)调用_scsih_init函数。_scsih_init函数为main entry point for this driver.如果返回0则表示驱动加载正常,其它表示错误。

在_scsih_init函数中通过printk(KERN_INFO "%s version %s loaded\n", MPT2SAS_DRIVER_NAME,MPT2SAS_DRIVER_VERSION); 将驱动的NAME和版本号打印出来。

然后继续做了以下工作:

2.1 .1设置scsi_transport_template模版

mpt2sas_transport_template = sas_attach_transport(&mpt2sas_transport_functions);

调用sas_attach_transport完成模板的初始化。

调用raid_class_attach完成mpt2sas_raid_template

2.1.2 初始化部分函数

调用mpt2sas_base_initialize_callback_handler初始化mpt_callbacks[MPT_MAX_CALLBACKS]成员为NULL

反复调用mpt2sas_base_register_callback_handler初始化部分函数,并将函数指针存在mpt_callbacks[]数组中。

2.1.3 注册设备

调用 mpt2sas_ctl_init完成mpt2sas作为一个miscellaneous注册,在/dev下生成对应的设备

调用pci_register_driver将mpt2sas作为一个PCIE设备注册
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: