On 12/01/2016 06:50 AM, Andy Shevchenko wrote: >> > +static int size_shift(unsigned long long nr) >> > +{ >> > + if (nr < (1ULL<<10)) >> > + return 0; >> > + if (nr < (1ULL<<20)) >> > + return 10; >> > + if (nr < (1ULL<<30)) >> > + return 20; >> > + if (nr < (1ULL<<40)) >> > + return 30; >> > + if (nr < (1ULL<<50)) >> > + return 40; >> > + if (nr < (1ULL<<60)) >> > + return 50; >> > + return 60; >> > +} >> > + > New copy of string_get_size() ? Not really. That prints to a buffer, so we'll need to allocate stack space for a buffer, which we also have to size properly. We also want to be consistent with other parts of smaps that mean kB==1024 bytes, so we want string_get_size()'s STRING_UNITS_10 strings, but STRING_UNITS_2's divisor. Also, guaranteeing that we have a power-of-2 'block size' lets us cheat and do things much faster than using real division. Not that it matters, but we could do it thousands of times for a large smaps file. Being defined locally, this stuff also gets inlined pretty aggressively. Given all that, I'm not sure I want to modify string_get_size() to do exactly what we need here. -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html