Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 02 Nov 2014 11:20:03 +0800
From:      Julian Elischer <julian@freebsd.org>
To:        Rick Macklem <rmacklem@uoguelph.ca>
Cc:        Freebsd hackers list <freebsd-hackers@freebsd.org>
Subject:   Re: how to kernel printf a int64_t?
Message-ID:  <5455A2E3.40808@freebsd.org>
In-Reply-To: <604180572.3888597.1414894484998.JavaMail.root@uoguelph.ca>
References:  <604180572.3888597.1414894484998.JavaMail.root@uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
On 11/2/14, 10:14 AM, Rick Macklem wrote:
> Julian Elischer wrote:
>> On 10/31/14, 1:09 PM, Tim Kientzle wrote:
>>
>>
>> On Oct 30, 2014, at 2:01 PM, Rick Macklem <rmacklem@uoguelph.ca>
>> wrote:
>>
>> Hi,
>>
>> I feel kinda dumb asking this, but...
>>        int64_t i;
>>
>>        printf("%qd\n", (u_quad_t)i);
>>
>> works but looks dorky, to put it technically;-).
>> Is there a better way to printf() a int64_t in the kernel? I often
>> use the following to print large integers:
>>
>>      printf(ā€œ%jd\nā€, (intmax_t)i); the "cannonical' way is to use
>>      PRIu64 and friends, but some people seem to have a problem with
>>      doing that.
>>
> Ok, so now I need to ask another dumb question.
> How do you do this in the kernel?
> (I can see them defines in <machine/_inttypes.h>, but including that
>   doesn't help, which isn't surprising since PRIu64 is in a string
>   and won't be recognized as a macro.)

you use it with string concatenation.
like:

   printf (" this is a 64 it unsigned value:  %" PRIu64 " and I just 
printed it\n", thingy64);

After substitution the compiler sees
  " this is a 64 it unsigned value: %" "llu" " and I just printed it\n"
which simplifies to:
" this is a 64 it unsigned value: %llu and I just printed it\n"

due to concatenation. (note I didn't actually look what PRIu64 
evaluates to)


>
> Oh, and is intmax_t going to be int64_t on all arches?
>
> Thanks, rick
>
>>
>> Tim
>>
>> _______________________________________________
>> freebsd-hackers@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To
>> unsubscribe, send any mail to
>> "freebsd-hackers-unsubscribe@freebsd.org"
>>
>
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5455A2E3.40808>