mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Renate Meijer <kleuske@xs4all.nl>
To: Kyle Moffett <mrmacman_g4@mac.com>
Cc: Grzegorz Kulewski <kangur@polcom.net>,
	Adrian Bunk <bunk@stusta.de>,
	Al Viro <viro@parcelfarce.linux.theplanet.co.uk>,
	linux-kernel@vger.kernel.org, Andreas Schwab <schwab@suse.de>,
	Kenneth Johansson <ken@kenjo.org>,
	Stephen Rothwell <sfr@canb.auug.org.au>,
	linux-os@analogic.com, Dag Arne Osvik <da@osvik.no>
Subject: Re: Use of C99 int types
Date: Tue, 5 Apr 2005 11:23:07 +0200	[thread overview]
Message-ID: <d5803044b1c7dcc631eda71863d44fa2@xs4all.nl> (raw)
In-Reply-To: <62f8215dd556d5a50b307f5b6d4f578b@mac.com>


On Apr 4, 2005, at 11:49 PM, Kyle Moffett wrote:

> On Apr 04, 2005, at 17:25, Richard B. Johnson wrote:
>> I don't find stdint.h in the kernel source (up to 2.6.11). Is this
>> going to be a new addition?
>
> Uhh, no.  stdint.h is part of glibc, not the kernel.
>
>> It would be very helpful to start using the uint(8,16,32,64)_t types
>> because they are self-evident, a lot more than size_t or, my favorite
>> wchar_t.
>
> You miss the point of size_t and ssize_t/ptrdiff_t.  They are types
> guaranteed to be at least as big as the pointer size.

IIRC, It is guaranteed that size_t can correctly represent the largest 
object which
can be malloced. This usually coincides with the width of a pointer, 
but not
neccesarily.

> uint8/16/32/64,
> on the other hand, are specific bit-sizes, which may not be as fast or
> correct as a simple size_t.

Using specific widths may yield benefits on one platform, whilst 
proving a real
bottleneck when porting something to another. A potential of problems 
easily
avoided by using plain-vanilla integers.

> Linus has pointed out that while it
> doesn't matter which of __u32, u32, uint32_t, etc you use for kernel
> private interfaces, you *cannot* use anything other than __u32 in the
> parts of headers that userspace will see, because __u32 is defined
> only by the kernel and so there is no risk for conflicts, as opposed
> to uint32_t, which is also defined by libc, resulting in collisions
> in naming.

Strictly speaking, a definition starting with a double underscore is 
reserved for use
by the compiler and associated libs, this such a declaration would 
invade implementation
namespace. The compilers implementation, that is.

In this case, the boundary is a bit vague, i see that, since a lot of 
header definitions also reside
in the /usr/include hierarchy.

I think it would be usefull to at least *agree* on a standard type for 
8/16/32/64-bit integer types. What
I see now as a result of grepping for 'uint32' is a lot more confusing 
than stdint.h

There is u32, __u32, uint32, uint32_t, __uint32_t...

Especially the types with leading underscores look cool, but in reality 
may cause a conflict with compiler
internals and should only be used when defining compiler libraries. The 
'__' have explicitly been put in by
ISO in order to avoid conflicts between user-code and the standard 
libraries, so if non-compiler-library code also starts using '__', just 
coz it looks cool, that cunning plan is undone.

Furthermore, I think it's wise to convince the community that if not 
needed, integers should not be specified
by any specific width.

Regards,

Renate Meijer.


  reply	other threads:[~2005-04-05  9:20 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-03 11:55 Dag Arne Osvik
2005-04-03 12:05 ` Stephen Rothwell
2005-04-03 12:30   ` Dag Arne Osvik
2005-04-03 13:27     ` Andreas Schwab
2005-04-03 22:48       ` Dag Arne Osvik
2005-04-03 23:05         ` Al Viro
2005-04-03 23:17         ` Grzegorz Kulewski
2005-04-03 23:20           ` Dag Arne Osvik
2005-04-04  0:05         ` Adrian Bunk
2005-04-03 18:13     ` Al Viro
2005-04-03 23:03       ` Dag Arne Osvik
2005-04-04  3:08         ` Herbert Xu
2005-04-04  8:42           ` Dag Arne Osvik
2005-04-03 19:23     ` Renate Meijer
2005-04-03 20:25       ` Kenneth Johansson
2005-04-03 22:08         ` Kyle Moffett
2005-04-04 10:05           ` Renate Meijer
2005-04-04 10:50             ` Dag Arne Osvik
2005-04-04 20:30               ` Renate Meijer
2005-04-04 20:57                 ` Al Viro
2005-04-04 21:25                   ` Richard B. Johnson
2005-04-04 21:49                     ` Kyle Moffett
2005-04-05  9:23                       ` Renate Meijer [this message]
2005-04-05 11:27                         ` Kyle Moffett
     [not found]                           ` <09142f748cc6ad2bf4fffab7a5519226@xs4all.nl>
2005-04-05 22:11                             ` Kyle Moffett
     [not found]                               ` <eb65bccddde63541ae4b7b2d6c4c32d3@xs4all.nl>
2005-04-06 21:11                                 ` Kyle Moffett
2005-04-07 11:28                                   ` Renate Meijer
2005-04-05 12:18                       ` Richard B. Johnson
2005-04-05 21:47                         ` Kyle Moffett
2005-04-05  8:49                   ` Renate Meijer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d5803044b1c7dcc631eda71863d44fa2@xs4all.nl \
    --to=kleuske@xs4all.nl \
    --cc=bunk@stusta.de \
    --cc=da@osvik.no \
    --cc=kangur@polcom.net \
    --cc=ken@kenjo.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-os@analogic.com \
    --cc=mrmacman_g4@mac.com \
    --cc=schwab@suse.de \
    --cc=sfr@canb.auug.org.au \
    --cc=viro@parcelfarce.linux.theplanet.co.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome