gpt4 book ai didi

c - 是 Linux 的 SD 卡驱动程序的错误吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:23 26 4
gpt4 key购买 nike

我在 Linux 的 SD 卡驱动程序中发现了一些奇怪的东西。驱动程序在文件 drivers/mmc/core/sd.c 中的函数 mmc_read_ssr 中读取卡状态。代码如下:

err = mmc_app_sd_status(card, ssr);
if (err) {
pr_warning("%s: problem reading SD Status "
"register.\n", mmc_hostname(card->host));
err = 0;
goto out;
}

当函数mmc_app_sd_status返回一个错误值时,错误被清除

err = 0;

读取SSR出错为什么要清除错误?

最佳答案

当我查看其他人的代码时,尤其是我认识的非常擅长他们所做的人的代码时,我会采取“假设我错了”的态度。

我不太了解 Linux 中的 SD 驱动程序 - 但根据我在内核开发方面的(有限)经验,您总是在与 CPU 和内存使用、硬件错误、编译器“功能”进行“可读代码”斗争"等

您会注意到它所做的不仅仅是“清除”错误值——它会跳过后面的整个 block 。 (大概是因为它知道它会失败。)

我必须承认它看起来确实像个意外——因为它总是返回零(尽管声明了 return err;)。错误值由调用它的代码检查(在 mmc_sd_setup_card() 内)——如果它始终为零,这也是毫无意义的。

所发生的一切(据我所见)是打印了内核警告。正如我所说,我总是采取“假设我错了”的态度,所以我将假设编写代码的人(或最近出现并修补它)认为“警告”是足以证明抛出一个错误代码。所以他们让它写入内核日志,让“无论发生什么,都会发生”。

推测,也许一些特别陈旧的 SD 硬件行为“错误”并且导致抛出错误,尽管“一切正常”?设备驱动程序通常在整个过程中都有 hack 来处理这种边缘情况。

否则我只建议询问一个人口众多的 Linux 内核开发论坛(IRC 或邮件列表等)。要有礼貌,明确表示你“认为你错了”,如果你得到一个突然或粗鲁的回应,不要感到惊讶!

虽然是个好问题...

关于c - 是 Linux 的 SD 卡驱动程序的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34448778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com