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设备注册
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设备注册
相关文章推荐
- mpt2sas-19.00.00.00_rhel6.5驱动笔记系列3-_scsih_probe
- mpt2sas-19.00.00.00_rhel6.5驱动笔记系列2-设备注册
- effective C++笔记之条款31、32: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针所指对象的引用、尽可能地推迟变量的定义
- 【学习笔记】DM9000裸机驱动(二)之接收发送函数
- Java系列笔记(1) - Java 类加载与初始化
- 驱动笔记 - 混杂设备常用函数
- 驱动笔记 - 字符设备常用函数
- 【应聘笔记系列】堆栈、栈帧与函数调用过程分析
- CentOS6.5 x86_64 配置Broadcom 43XX系列 无线网卡驱动
- contiki-main.c 中的process系列函数学习笔记 <contiki学习笔记之六>
- Java系列笔记(1) - Java 类加载与初始化
- rhel6.5网卡初始化错误解决
- Java系列笔记(1) - Java 类加载与初始化
- 《UNIX环境高级编程》笔记--exec系列函数
- 《UNIX环境高级编程》笔记--wait系列函数
- C++语言笔记系列之六——函数的重载、函数缺省参数
- 【学习笔记】DM9000裸机驱动(二)之接收发送函数
- 《UNIX环境高级编程》笔记--fork系列函数
- C语言笔记系列之八——函数
- Java系列笔记(1) - Java 类加载与初始化