首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用libata从用户空间应用程序在HDD上执行ATA命令

使用libata从用户空间应用程序在HDD上执行ATA命令
EN

Stack Overflow用户
提问于 2013-06-28 22:02:46
回答 2查看 6K关注 0票数 1

我想使用libata从用户空间应用程序发送ATA命令(最终,任何受支持的ATA命令)到我的HDD (它是SATA驱动器)(这是可能的,对吧?)。一开始我会很高兴的是准备好ATA命令,识别设备并打印出这些数据。不幸的是,我找不到任何这样的例子。在libata中,恰好在libata-core.c文件(linux-2.6.39/ ata_dev_read_id /ata/)中有一个函数驱动程序1860行,在我的源代码中,它似乎可以做我想做的事情。问题是它作为指向ata_device的一个参数指针,而我不知道如何初始化它。我读了一些libATA开发人员指南(http://www.hep.by/gnu/kernel/libata/index.html),但它并没有让我明白一些事情。我认为示例源代码会对我有更大的帮助。有没有人可以提供这样的例子(核心源代码就足够了,不需要错误检查之类的东西)。实际上,我想要的是一个源代码,它可以做这样的事情,但http://www.tldp.org/HOWTO/SCSI-Generic-HOWTO/pexample.html,而不是使用sg.h ioctl,我想使用libata。我知道我可以使用SCSI命令ATA Pass-Through。或者举个例子,也许有人知道任何使用libATA的开源工具和应用程序,我可以看到它是如何在那里使用的?

EN

回答 2

Stack Overflow用户

发布于 2013-06-28 22:05:09

开源工具SmartMonTools做了很多低级的ATA处理。也许这可以为你指明正确的方向。http://sourceforge.net/apps/trac/smartmontools/wiki

票数 2
EN

Stack Overflow用户

发布于 2016-08-01 21:35:18

LibATA是在内核模式下实现的,用于处理与ATA驱动器相关的不同功能。

如果希望使用libATA功能,则必须编写自己的内核模块,然后将ioctl方法公开给用户空间。

更好的方法是使用ATA Passthrough相关api向ATA驱动器发送命令,Smart Mon工具和hdparam也在使用相同的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17366515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档