Mentre imparavo a scrivere i driver di dispositivo mi sono imbattuto nella macro IS_ERR(). Ma non ho trovato come funziona. Ho includere il codice qui sotto:IS_ERR() macro in Linux
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);
}
Così che cosa fa l'IS_ERR() macro espandere per e come viene eseguito.
Non è chiaro cosa stai chiedendo. Se desideri solo vedere a cosa valuta la macro, compila con l'opzione '-E' – Eregrith
Ho modificato la mia domanda per dare un chiaro significato a ciò che ho bisogno di sapere. –
Btw, usa le macro 'pr _ *()' per stampare e controlla il [CodingStyle] (https://www.kernel.org/doc/Documentation/CodingStyle) per ogni evenienza. – 0andriy