From owner-freebsd-hackers@FreeBSD.ORG Sun Nov 2 12:48:20 2014 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9B7EA57B; Sun, 2 Nov 2014 12:48:20 +0000 (UTC) Received: from esa-annu.net.uoguelph.ca (esa-annu.mail.uoguelph.ca [131.104.91.36]) by mx1.freebsd.org (Postfix) with ESMTP id 3D57B103; Sun, 2 Nov 2014 12:48:19 +0000 (UTC) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArkEACYnVlSDaFve/2dsb2JhbABcg2JYBIMCygcKhnlUAoEmAQEBAQF9hAMBAQQBAQEgKyALGxgCAg0ZAikBCSYGCAcEARwEiCANtEyUFgEBAQcBAQEBAQEBARqBLY8SAQEbATMHgneBVAWLdopzhBKENz2GQoRJhU6ECYQWHy8HgQg5gQMBAQE X-IronPort-AV: E=Sophos;i="5.07,295,1413259200"; d="scan'208";a="165325700" Received: from muskoka.cs.uoguelph.ca (HELO zcs3.mail.uoguelph.ca) ([131.104.91.222]) by esa-annu.net.uoguelph.ca with ESMTP; 02 Nov 2014 07:48:11 -0500 Received: from zcs3.mail.uoguelph.ca (localhost.localdomain [127.0.0.1]) by zcs3.mail.uoguelph.ca (Postfix) with ESMTP id 9BB84B40D7; Sun, 2 Nov 2014 07:48:11 -0500 (EST) Date: Sun, 2 Nov 2014 07:48:11 -0500 (EST) From: Rick Macklem To: Ian Lepore Message-ID: <1123726553.4004621.1414932491616.JavaMail.root@uoguelph.ca> In-Reply-To: <1414900709.17308.243.camel@revolution.hippie.lan> Subject: Re: how to kernel printf a int64_t? MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [172.17.91.202] X-Mailer: Zimbra 7.2.6_GA_2926 (ZimbraWebClient - FF3.0 (Win)/7.2.6_GA_2926) Cc: Freebsd hackers list X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Nov 2014 12:48:20 -0000 Ian Lepore wrote: > On Sun, 2014-11-02 at 11:20 +0800, Julian Elischer wrote: > > 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 > > >> 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(=E2=80=9C%jd\n=E2=80=9D, (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 , but including > > > that > > > doesn't help, which isn't surprising since PRIu64 is in a > > > string > > > and won't be recognized as a macro.) > >=20 > > you use it with string concatenation. > > like: > >=20 > > printf (" this is a 64 it unsigned value: %" PRIu64 " and I > > just > > printed it\n", thingy64); > >=20 > > 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" > >=20 > > due to concatenation. (note I didn't actually look what PRIu64 > > evaluates to) > >=20 > >=20 >=20 > Which is exactly the explanation for why "some people seem to have a > problem with doing that." "Some people" would be "anyone who thinks > it > should be possible to read code as well as write it." This may be > more > correct in some pedantic sense, but %j and a cast is more readable. >=20 Yes, thanks. I'll admit to thinking exactly the same thing. I guess I'll use %j. Thanks everyone for your help, rick > -- Ian >=20 > > > > > > 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" > > >> > > > > > > > >=20 > > _______________________________________________ > > 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" > >=20 >=20 >=20 > _______________________________________________ > 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" >=20