On Thu, Nov 06, 2014 at 06:15:36PM +0000, Dimitris Papastamos wrote:
> On Thu, Nov 06, 2014 at 06:40:15PM +0100, Sylvain BERTRAND wrote:
> > On Thu, Nov 06, 2014 at 05:09:44PM +0000, Dimitris Papastamos wrote:
> > > On Thu, Nov 06, 2014 at 05:56:55PM +0100, Sylvain BERTRAND wrote:
> > > > On Thu, Nov 06, 2014 at 03:40:56PM +0000, Dimitris Papastamos wrote:
> > > > > On Thu, Nov 06, 2014 at 04:38:20PM +0100, Sylvain BERTRAND wrote:
> > > > > > On a personnal level, I port some of my C99 projects back to C89, since it
> > > > > > seems a C89 compiler is easier to write than a C99 compiler, and some part of
> > > > > > my code could go in C89 only project (i.e. the linux kernel).
> > > > >
> > > > > the linux kernel is built with gnu99 iirc.
> > > >
> > > > Documentation/HOWTO:
> > > > "The kernel is written using GNU C and the GNU toolchain. While it
> > > > adheres to the ISO C89 standard, it uses a number of extensions that are
> > > > not featured in the standard. The kernel is a freestanding C
> > > > environment, with no reliance on the standard C library, so some
> > > > portions of the C standard are not supported. Arbitrary long long
> > > > divisions and floating point are not allowed. It can sometimes be
> > > > difficult to understand the assumptions the kernel has on the toolchain
> > > > and the extensions that it uses, and unfortunately there is no
> > > > definitive reference for them. Please check the gcc info pages (`info
> > > > gcc`) for some information on them."
> > >
> > > It uses a *lot* of extensions. If I remember correctly, a significant number
> > > of gcc extensions were initially driven by the needs of linux kernel programmers.
> > >
> > > A C89 only compiler would have no hope to build the kernel in any way
> > > so I do not see how C89 is relevant here anymore.
> >
> > 1 - because it's easier to port to C89/C90 + gnu extensions from C89/C90 than
> > C99 (moving variable declarations back at the beginning of each block is
> > already a pain)
>
> There's many instances in the kernel code where variables are not
> declared at the beginning of the function block.
Linus T. does let closed source modules live (even so the GNU GPLv2 gives legal
power to open the code, or block binary blob distribution, like what happens
with mpeg video or 3D texture compression), moreover the linux kernel is
massive... Then I would not be surprised to see code note following
Documentation/HOWTO or Documentation/codingstyle.
The thing is *I* want *my* code ready to be easier to get into linux and to
follow Documentation/HOWTO and Documentation/codingstyle.
My 2c and you do whatever with it.
cheers,
--
Sylvain BERTRAND
Received on Thu Nov 06 2014 - 22:47:28 CET