Messages in this thread | | | Date | Wed, 26 Sep 2007 14:36:57 +0200 (MEST) | From | Mikael Pettersson <> | Subject | Re: [PATCH] Since we have counters in __u64 format we have to print them with %llu macros. |
| |
On Wed, 26 Sep 2007 17:18:06 +0530, Balbir Singh wrote: > Andreas Schwab wrote: > > Maxim Uvarov <muvarov@ru.mvista.com> writes: > > > >> diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c > >> index cbee3a2..73924df 100644 > >> --- a/Documentation/accounting/getdelays.c > >> +++ b/Documentation/accounting/getdelays.c > >> @@ -208,7 +208,7 @@ void print_delayacct(struct taskstats *t) > >> void task_context_switch_counts(struct taskstats *t) > >> { > >> printf("\n\nTask %15s%15s\n" > >> - " %15lu%15lu\n", > >> + " %15llu%15llu\n", > >> "voluntary", "nonvoluntary", > >> t->nvcsw, t->nivcsw); > > > > __u64 is not always long long. > > What is the maximum size of long long across all architectures? > How does one format __u64 for printing?
With %lu you get warnings when u64 is long long (32-bit). With %llu you get warnings when u64 is plain long (most 64-bit).
Hence %llu + long long cast, i.e.: printf("%llu", (unsigned long long)value);
This is ugly but luckily imposes no runtime overheads on current 32- or 64-bit machines.
This could be done more cleanly if the u64 typedef also #define:d a corresponding FMT_U64 format string. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |