linux kernel coding style and checkpatch.pl script
Hi There is checkpatch.pl script where You can check if You wrote code in your kernel module according to linux kernel style. However can I ignore warning message? WARNING: quoted string split across lines #974: FILE: fpgax67-core.c:974: + dev_err(&pdev->dev, "registration not done, driver is already " + "registered\n"); If I don't split line I will have another warning that 80 characters is exceeded. For sure I can ignore warnings about: WARNING: struct should normally be const #998: FILE: fpgax67-core.c :998: +int fpgax67_unregister(struct platform_device *pdev) For sure all errors must be fixed like: const char* tmp -> change to -> const char *tmp; if( => if ( #insert space Generally I don't know how much warnings should I correct. If it is mandatory or only good practise and I can omit some if it doesn't make sense.
On Wed, Mar 25, 2020 at 10:36:08AM +0100, Tomek The Messenger wrote:
Hi There is checkpatch.pl script where You can check if You wrote code in your kernel module according to linux kernel style. However can I ignore warning message? WARNING: quoted string split across lines #974: FILE: fpgax67-core.c:974: + dev_err(&pdev->dev, "registration not done, driver is already " + "registered\n");
If I don't split line I will have another warning that 80 characters is exceeded.
No you should not.
For sure I can ignore warnings about: WARNING: struct should normally be const #998: FILE: fpgax67-core.c :998: +int fpgax67_unregister(struct platform_device *pdev)
No, please do not.
For sure all errors must be fixed like: const char* tmp -> change to -> const char *tmp; if( => if ( #insert space
Yes.
Generally I don't know how much warnings should I correct. If it is mandatory or only good practise and I can omit some if it doesn't make sense.
If you want your code merged properly, and reviewed, just fix them all, should not take more than a few hours. good luck! greg k-h
On Wed, 25 Mar 2020 10:36:08 +0100, Tomek The Messenger said:
There is checkpatch.pl script
To borrow from Pirates of the Carribean, "They're not exactly rules, they're more like... suggestions..." Checkpatch flags *possible* code style problems, but it's not perfect. There's often good reason to ignore them. For example:
However can I ignore warning message? WARNING: quoted string split across lines #974: FILE: fpgax67-core.c:974: + dev_err(&pdev->dev, "registration not done, driver is already " + "registered\n");
If I don't split line I will have another warning that 80 characters is exceeded.
Blech. Ick. <vomiting sounds> Don't split literal strings, it means that grepping the source tree for "already registered" fails. Making grep for a string work is more important than shutting up checkpatch.
For sure I can ignore warnings about: WARNING: struct should normally be const #998: FILE: fpgax67-core.c :998:
This one you actually need to look at what the routine says. The object is *usually* a const - but might not be. Figure out what it actually does. Always keep in mind that it's a perl script, and just doing regex matching. It has no clue what the code actually does. Hopefully you have more understanding of the code than the perl script does...
For sure all errors must be fixed like: const char* tmp -> change to -> const char *tmp; if(� => if (� �#insert space
If this is new code you're writing, you should fix it before you submit the patch adding the code. (Unless of course, checkpatch is wrong about a variable needing to be a const, or similar) If you're doing major changes to existing code anyhow, a cleanup patch first is often appropriate. If you're just fixing checkpatch warnings for the sake of fixing checkpatch warnings, keep in mind that many maintainers won't accept patches that just clean up checkpatch, for several reasons: First, if it's code that's been static for a while (years, sometimes), there's always a danger that a patch breaks something. No reason to touch stable code. If it's code that somebody else is working on, your patch can cause merge errors with the other person's (which is why only the person doing the other work should do cleanup patches - they won't conflict with their own work). Also, it messes up the git history - consider a patch that changes an 'if( foo && !bar) {' to 'if( foo && !baz){' to fix a bug where the wrong variable was being tested. You then submit a patch to fix the space. Now a 'git blame' on the file shows your patch rather than the one that fixes the bug. However, I have it on good authority that Greg KH will cheerfully accept checkpatch fixes for anything under 'drivers/staging', because that code is usually in such bad shape that fixups are needed. :) Personally, I do kernel builds with sparse and extra gcc warnings, and submit patches only after applying some thought and concluding things like "Yes, sparse and/or gcc were correct, the variable *should* be static so it can't be accessed from another module due to a namespace collision". In other words, the patch should *never* be "Fix a checkpatch/sparse/gcc complaint". It should always be "Make an objective improvement to the code that happened to be pointed out by static analysis tools".
Valdis Klētnieks, 26 Mar 2020 07:13 MSK:
To borrow from Pirates of the Carribean, "They're not exactly rules, they're more like... suggestions..."
Don't split literal strings, it means that grepping the source tree for "already registered" fails. Making grep for a string work is more important than shutting up checkpatch.
Sic! Grepping is important. Given that, why are kernel functions coded in a | static int __init loglevel(char *str) | { way, but not old decent | static int __init | loglevel(char *str) | { unix way? -- Regards, Konstantin
On Wed, Mar 25, 2020 at 9:38 AM Tomek The Messenger < tomekthemessenger@gmail.com> wrote:
Hi There is checkpatch.pl script where You can check if You wrote code in your kernel module according to linux kernel style. However can I ignore warning message? WARNING: quoted string split across lines #974: FILE: fpgax67-core.c:974: + dev_err(&pdev->dev, "registration not done, driver is already " + "registered\n");
If I don't split line I will have another warning that 80 characters is exceeded.
you can put the whole string on next line and/or use "\" for splitting long string.
For sure I can ignore warnings about:
WARNING: struct should normally be const #998: FILE: fpgax67-core.c :998: +int fpgax67_unregister(struct platform_device *pdev)
For sure all errors must be fixed like: const char* tmp -> change to -> const char *tmp; if( => if ( #insert space
Generally I don't know how much warnings should I correct. If it is mandatory or only good practise and I can omit some if it doesn't make sense. _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-- Thank you Warm Regards Anuz
participants (5)
-
Anuz Pratap Singh Tomar -
Greg KH -
Konstantin Andreev -
Tomek The Messenger -
Valdis Klētnieks