Re: git: da5d0a1dbc28 - main - kboot: Use unsigned long long.
- In reply to: Hans Petter Selasky : "Re: git: da5d0a1dbc28 - main - kboot: Use unsigned long long."
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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