* Ingo Molnar <mingo@xxxxxxx> [2009-08-24 09:43]:
* Amerigo Wang <amwang@xxxxxxxxxx> wrote:
The reason that I kept 2ULL<<30 instead of 1ULL<<31 is that '1<<30' is exactly 1G, so 2ULL<<30 can be easily read as 2G. ;)i have no trouble reading 1ULL<<31 as 2G ;-) OTOH, the logic and pattern of the comparisons (especially without the comment) looked odd at first sight, until i noticed this.
Why not just something like
#define KBYTE(x) ((x)*1024ULL)
#define MBYTE(x) ((x)*1024ULL*1024)
#define GBYTE(x) ((x)*1024ULL*1024*1024) #define TBYTE(x) ((x)*1024ULL*1024*1024*1024)
I find GBYTE(2) much easier to read than 1ULL<<31. Honestly, I would
add a comment '/* 2G */' if I would write 1ULL<<31 in own code.
But I'm of course not one of that super kernel hackers. ;-)