c - Linux 应用解码 mmc ext csd

标签 c kernel linux-device-driver

目前,我正在使用具有 su 访问权限的用户空间应用程序从 debugfs 文件系统解析 ext_csd,将字符串转换为原始字节数据并将其传递给解码 ext_csd 函数以填充我自己编写的结构。

我想知道是否有更有效的方法来做到这一点,或者更不容易出错?例如有一个 mmc_read_ext_csd()mmc_decode_ext_csd()在内核路径drivers/mmc/core/mmc.c

有什么方法可以从用户应用程序中使用这个驱动函数吗?还是ioctl命令?我似乎找不到任何关于 mmcblk0 的 ioctl 命令的 API 文档,只能在内核源代码 kode/block/ioctl.c 中找到

是否还有一种方法可以从用户应用程序中查看 emmc 是否为大容量卡?

最佳答案

mmc-utils 可以通过 ioctl 发出 ext_csd 读取并输出已解析的文本。 http://git.kernel.org/cgit/linux/kernel/git/cjb/mmc-utils.git/

还有其他类似的可以解析从 debugfs 获得的十六进制字符串。很难说它是否比您自己的代码更可靠。 https://github.com/haoxingz/emmc5_register_reader

我不确定高容量检测。

关于c - Linux 应用解码 mmc ext csd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913768/

相关文章:

Linux内核制作预定义的宏

linux - 如何使 bond0/eth0 接口(interface) UP

c - 使用 fscanf 读取多行 double

c - 我的程序没有将输入数据存储到 C 中的结构中

linux - 带有来自调制解调器的 PCM 接口(interface)的 Alsa

linux - 系统调用如何从用户空间传播到内核空间并返回用户空间?

c - 一个简单的linux设备驱动程序

c - 使用 automake 将不同项目中的一个 header 添加到我的项目中

c-带有自旋锁的内核线程计数器

android - 无法在源构建 Android 模拟器中挂载 userdata.img MTD 图像