3

I've got such a function:

void cleanup_module(void)
{
    /* 
     * Unregister the device 
     */
    if(unregister_chrdev(Major, DEVICE_NAME)<0) 
        printk(KERN_ALERT "Error in unregister_chrdev:\n");
}

and error:

/home/student/kernel/hello.c: In function ‘cleanup_module’:
/home/student/kernel/hello.c:39:2: error: void value not ignored as it ought to be

This line is the one with if statement. Do you know what I'm doing wrong?

3 Answers 3

4

This means that unregister_chrdev doesn't have a return value (it's void), but you have put it in an if. That is, you are using a void value which should have been ignored. Hence the error message.

Check out this question which asks why the return value was changed to void.

Sign up to request clarification or add additional context in comments.

Comments

2

Based on this unregister_chrdev() used to return an int but its return type was changed to void as the returned value was meaningless. Remove the if entirely from the posted code:

unregister_chrdev(Major, DEVICE_NAME);

Comments

1

The error indicates that the unregister_chrdev() function is a void type function, i.e. it returns nothing. However, you are checking its return value with the < operator.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.