Re: [PATCH 5/9] bfs: move function prototype to the proper headerfile

From: Adrian Bunk
Date: Fri Jan 25 2008 - 05:44:03 EST


On Thu, Jan 24, 2008 at 11:22:21PM +0000, Tigran Aivazian wrote:
> On Fri, 25 Jan 2008, Dmitri Vorobiev wrote:
>
>> Heikki Orsila ÐÐÑÐÑ:
>>>> +extern void dump_imap(const char *, struct super_block *);
>>>> +
>>>
>>> Functions should not be externed, remove extern keyword.
>>>
>>
>> Care to explain why?
>
> because dump_imap() is just a BFS' internal helper (for debugging
> purposes only btw) to dump the inode map via printk. Why should it be
> moved into the header, i.e. where one expects to see things potentially
> visible by the rest of the kernel?
>...

fs/bfs/bfs.h is not visible to the rest of the kernel, it's the right
place for bfs-internal code.

Whether there's an "extern" written is just a syntax thing with zero
semantical implications. We tend to not write the "extern" in the
kernel, but that's nothing cast in stone.

But prototypes really belong into header files - bugs in this area are
rare, but when they occur they can cause nasty hard-to-debug bugs
(e.g. depending on the calling convention on the architecture calling
the function can turn your stack into garbage), and with the prototypes
in header files gcc can do type checks.

> Kind regards
> Tigran

cu
Adrian

--

"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/