gpt4 book ai didi

c - Linux 中的 IS_ERR() 宏

转载 作者:IT王子 更新时间:2023-10-29 00:12:24 24 4
gpt4 key购买 nike

在了解如何编写设备驱动程序时,我遇到了 IS_ERR() 宏。但我找不到它是如何工作的。我已经包含以下代码:

majorNumber = register_chrdev(0, DEVICE_NAME, &fops);

if (majorNumber<0)
{
printk(KERN_ALERT "Failed to register a major number\n");
return majorNumber;
}
printk(KERN_INFO "Registered correctly with major number %d\n", majorNumber);

// Register the device class
ebbcharClass = class_create(THIS_MODULE, CLASS_NAME);

if (IS_ERR(ebbcharClass))
{
unregister_chrdev(majorNumber, DEVICE_NAME);
printk(KERN_ALERT "Failed to register device class\n");
return PTR_ERR(ebbcharClass);
}

那么 IS_ERR() 宏扩展到什么以及它是如何执行的。

最佳答案

测试提供的指针是否应被视为错误值

它不检查指针是否有效。

在您的代码中,IS_ERR 用于检查 class_create 是否成功创建了 ebbcharClass。如果发生错误,请注销字符驱动程序并发出错误信号。

您可以在 err.h 中找到宏和内联函数

关于c - Linux 中的 IS_ERR() 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30320329/

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