Re: git: da5d0a1dbc28 - main - kboot: Use unsigned long long.

From: Warner Losh <imp_at_bsdimp.com>
Date: Sat, 03 Dec 2022 16:06:41 UTC
On Sat, Dec 3, 2022 at 5:31 AM Hans Petter Selasky <hps@selasky.org> wrote:

> On 12/2/22 20:49, Warner Losh wrote:
> > The branch main has been updated by imp:
> >
> > URL:
> https://cgit.FreeBSD.org/src/commit/?id=da5d0a1dbc2838eae7033254705c684d7a013fce
> >
> > commit da5d0a1dbc2838eae7033254705c684d7a013fce
> > Author:     Warner Losh <imp@FreeBSD.org>
> > AuthorDate: 2022-12-02 19:41:01 +0000
> > Commit:     Warner Losh <imp@FreeBSD.org>
> > CommitDate: 2022-12-02 19:41:01 +0000
> >
> >      kboot: Use unsigned long long.
> >
> >      For the 64-bit platforms, this is a nop. Currently kboot only
> supports
> >      64-bit platforms, though. If we support 32-bit in the future, this
> will
> >      become important.
> >
> >      Noticed by:             rpokala
> >      Sponsored by:           Netflix
> > ---
> >   stand/kboot/util.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/stand/kboot/util.c b/stand/kboot/util.c
> > index 938aad599e19..7d467a29b059 100644
> > --- a/stand/kboot/util.c
> > +++ b/stand/kboot/util.c
> > @@ -35,7 +35,7 @@ file2str(const char *fn, char *buffer, size_t buflen)
> >   bool
> >   file2u64(const char *fn, uint64_t *val)
> >   {
> > -     unsigned long v;
> > +     unsigned long long v;
> >       char buffer[80];
> >
> >       if (!file2str(fn, buffer, sizeof(buffer)))
>
> Why not include stdint.h and use uint64_t ?
>
> Instead of building on the good old assumptions, int is 32-bit and long
> long is 64-bit? It is interesting to observe the sizes of these types in
> 8-bit compilers :-) Not that it makes a big difference for us. Maybe
> _Static_assert(sizeof(long long) == 8, "Please fix this code");
>

The code was wrong because I called strtoull and assigned it to an unsigned
long,
not an unsigned long long. On 64-bit platforms, long and long long are the
same.
Long long being > 8 bytes is fine for this interface: it only returns 64
bits. And
we assume this all over the place.

Warner