size_t changes and 32/64-bit, kernel uio_resid type changed.

Jordan Gordeev jgordeev at
Wed Aug 19 10:30:27 PDT 2009

Garance A Drosihn wrote:
At 9:49 PM -0700 8/18/09, Matthew Dillon wrote:
    size_t has been changed to unsigned long (and ssize_t to long).  I 
    revert this prior to the release if we hit pkgsrc problems.  The 
    will be kept for 64-bit machines.

    The change on 32 bit machines seems to do a pretty good job 
    compiler warnings on 32-bit machines for code that will break on
    64-bit machines.  Because of this I think it is worth seeing how 
    pkgsrc breaks with the change.  If it breaks too much we will revert
    it on 32 bit machines.
Isn't this explicitly wrong?  Isn't ssize_t defined as holding all
valid values of size_t, *plus* some extra values which can be used
for error indications?
To quote SUSv3:

   "The type ssize_t shall be capable of storing values at least
    in the range [-1, {SSIZE_MAX}]"
So are you defining SSIZE_MAX to be smaller than maximum-long?

You are mistaken.
ssize_t is expected to be the same size as size_t.
SSIZE_MAX in our case will equal LONG_MAX. What do you see as being 
wrong with that?

More information about the Kernel mailing list