您所在位置: 网站首页 / Linux内核SCSI子系统驱动架构.doc / 文档详情
Linux内核SCSI子系统驱动架构.doc 立即下载
2025-01-03
约1.7万字
约13页
0
67KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

Linux内核SCSI子系统驱动架构.doc

Linux内核SCSI子系统驱动架构.doc

预览

免费试读已结束,剩余 8 页请下载文档后查看

10 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGE\*MERGEFORMAT13

SCSI子系统驱动架构
2013-2-2

代码布局:
一、读写数据流:
drivers/scsi/scsi_lib.c
scsi_execute_req===>scsi_execute===>blk_execute_rq===>blk_execute_rq_nowait

错误恢复:
drivers/scsi/scsi_error.c
内核线程scsi_error_handler===>



二、初始化:(本文!)
--------------------------------------------------------------------------------------------------------------------
scsi高层(scsi磁盘)驱动:
1代码分布

2核心调用:
drivers/scsi/sd.c(这里以scsidisk设备为例)
同步执行部分:sd_probe
异步执行部分:sd_probe_async===>sd_revalidate_disk===>sd_spinup_disk
--------------------------------------------------------------------------------------------------------------------
scsi子系统核心初始化:
1代码分布

2核心调用:
scsi_init_queue();
scsi_init_procfs();
scsi_init_devinfo();
scsi_init_hosts();
scsi_init_sysctl();
scsi_sysfs_register();
	scsi_netlink_init();

--------------------------------------------------------------------------------------------------------------------
scsi适配器驱动:
1代码分布

2核心调用:
drivers/scsi/hosts.c

1)、structScsi_Host*scsi_host_alloc(structscsi_host_template*sht,intprivsize)
	
2)、scsi_add_host(structScsi_Host*host,structdevice*dev)
===>scsi_add_host_with_dma(host,dev,dev)
intscsi_add_host_with_dma(structScsi_Host*shost,structdevice*dev,structdevice*dma_dev)

、scsi_scan_host===>do_scsi_scan_host===>scsi_scan_host_selected===>scsi_scan_channel
===>__scsi_scan_target===>scsi_probe_and_add_lun===>scsi_probe_lun
scsi_add_lun









代码骨架:
----------------------------------------------------------------------------------------------------------------------
scsi子系统核心初始化:
drivers/scsi/scsi.c:
staticstructclassshost_class={
	.name		="scsi_host",
	.dev_release	=scsi_host_cls_release,
};
staticstructclasssdev_class={
	.name		="scsi_device",
	.dev_release	=scsi_device_cls_release,
};
structbus_typescsi_bus_type={
.name		="scsi",
.match		=scsi_bus_match,
	.uevent		=scsi_bus_uevent,
};

subsys_initcall(init_scsi)===>
staticint__initinit_scsi(void)
{
	scsi_init_queue();
	scsi_init_procfs();
	scsi_init_devinfo();//
	scsi_init_hosts();//
	scs
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

Linux内核SCSI子系统驱动架构

文档大小:67KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用