8512|4

78

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

Linux下如何检测SATA热插拔? [复制链接]

我们的程序需要时钟保持着对SATA硬盘的检测,当硬盘被拔掉或者插上时,都应该要有提示信息。那么在Linux下面,我需要去读取、检测哪儿才能获取该信息呢?如果有人对USB的热插拔也比较了解的,欢迎过来帮我扫盲!(我大致看了驱动层,整个SATA的中断最后通过task_let调用了ATA的函数,然后我就啥都不知道了,对ATA驱动一点都没有知识)

最新回复

系统里面有一个应用程序,叫做hotplug (在我的系统里,用ps -e看,有个进程叫kacpi_hotplug;系统里有/proc/sys/kernel/hotplug模块) 按照下面链接的文章的说法: http://www.makelinux.net/ldd3/chp-14-sect-7.shtml 当hotplug接受到设备消息后,会调用注册在/etc/hotplug.d/下的一些程序,并将对应的event传给该程序。 监控的设备对象包括 scsi设备(参考14.7.2.6 SCSI)。 14.7.2. The /sbin/hotplug Utility As alluded to earlier in this chapter, whenever a device is added or removed from the system, a "hotplug event" is generated. This means that the kernel calls the user-space program /sbin/hotplug. This program is typically a very small bash script that merely passes execution on to a list of other programs that are placed in the /etc/hotplug.d/ directory tree. For most Linux distributions, this script looks like the following: DIR="/etc/hotplug.d" for I in "${DIR}/$1/"*.hotplug "${DIR}/"default/*.hotplug ; do     if [ -f $I ]; then         test -x $I && $I $1 ;     fi done exit 1 ...... ...... 14.7.2.6 SCSI All SCSI devices create a hotplug event when the SCSI device is created or removed from the kernel. The /sbin/hotplug call has the parameter name and the SUBSYSTEM environment variable set to the value scsi for every SCSI device that is added or removed from the system. There are no additional environment variables added by the SCSI system, but it is mentioned here because there is a SCSI-specific user-space script that can determine what SCSI drivers (disk, tape, generic, etc.) should be loaded for the specified SCSI device. 复制代码   详情 回复 发表于 2010-5-28 15:32
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
OPEN相应的设备文件看能否成功。
 
 

回复

51

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
#1楼的方法其实比较直接,也比较简单。

如果真要第一时间知道对应的硬盘信息,你可能需要看scsi模块的一些接口,因为SATA硬盘最后会生成对应的scsi设备的。scsi模块里可能有一些接口可以告诉你有对应的 SATA硬盘被加载了。
或者,修改SATA硬盘的驱动,自己注册中断接口或者Event来告诉应用程序对应的硬件已经加入系统中。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
学习。。。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
系统里面有一个应用程序,叫做hotplug (在我的系统里,用ps -e看,有个进程叫kacpi_hotplug;系统里有/proc/sys/kernel/hotplug模块)
按照下面链接的文章的说法:
http://www.makelinux.net/ldd3/chp-14-sect-7.shtml

当hotplug接受到设备消息后,会调用注册在/etc/hotplug.d/下的一些程序,并将对应的event传给该程序。
监控的设备对象包括 scsi设备(参考14.7.2.6 SCSI)。


  1. 14.7.2. The /sbin/hotplug Utility

  2. As alluded to earlier in this chapter, whenever a device is added or removed from the system, a "hotplug event" is generated. This means that the kernel calls the user-space program /sbin/hotplug. This program is typically a very small bash script that merely passes execution on to a list of other programs that are placed in the /etc/hotplug.d/ directory tree. For most Linux distributions, this script looks like the following:

  3. DIR="/etc/hotplug.d"
  4. for I in "${DIR}/$1/"*.hotplug "${DIR}/"default/*.hotplug ; do
  5.     if [ -f $I ]; then
  6.         test -x $I && $I $1 ;
  7.     fi
  8. done
  9. exit 1

  10. ......
  11. ......
  12. 14.7.2.6 SCSI

  13. All SCSI devices create a hotplug event when the SCSI device is created or removed from the kernel. The /sbin/hotplug call has the parameter name and the SUBSYSTEM environment variable set to the value scsi for every SCSI device that is added or removed from the system. There are no additional environment variables added by the SCSI system, but it is mentioned here because there is a SCSI-specific user-space script that can determine what SCSI drivers (disk, tape, generic, etc.) should be loaded for the specified SCSI device.

复制代码




 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表