/* * IEC binary prefixes definitions * * Copyright (C) 2015 Nikunj A Dadhania, IBM Corporation * Copyright (C) 2018 Philippe Mathieu-Daudé * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef QEMU_UNITS_H #define QEMU_UNITS_H #define KiB (INT64_C(1) << 10) #define MiB (INT64_C(1) << 20) #define GiB (INT64_C(1) << 30) #define TiB (INT64_C(1) << 40) #define PiB (INT64_C(1) << 50) #define EiB (INT64_C(1) << 60) /* * The following lookup table is intended to be used when a literal string of * the number of bytes is required (for example if it needs to be stringified). * It can also be used for generic shortcuts of power-of-two sizes. * This table is generated using the AWK script below: * * BEGIN { * suffix="KMGTPE"; * for(i=10; i<64; i++) { * val=2**i; * s=substr(suffix, int(i/10), 1); * n=2**(i%10); * pad=21-int(log(n)/log(10)); * printf("#define S_%d%siB %*d\n", n, s, pad, val); * } * } */ #define S_1KiB 1024 #define S_2KiB 2048 #define S_4KiB 4096 #define S_8KiB 8192 #define S_16KiB 16384 #define S_32KiB 32768 #define S_64KiB 65536 #define S_128KiB 131072 #define S_256KiB 262144 #define S_512KiB 524288 #define S_1MiB 1048576 #define S_2MiB 2097152 #define S_4MiB 4194304 #define S_8MiB 8388608 #define S_16MiB 16777216 #define S_32MiB 33554432 #define S_64MiB 67108864 #define S_128MiB 134217728 #define S_256MiB 268435456 #define S_512MiB 536870912 #define S_1GiB 1073741824 #define S_2GiB 2147483648 #define S_4GiB 4294967296 #define S_8GiB 8589934592 #define S_16GiB 17179869184 #define S_32GiB 34359738368 #define S_64GiB 68719476736 #define S_128GiB 137438953472 #define S_256GiB 274877906944 #define S_512GiB 549755813888 #define S_1TiB 1099511627776 #define S_2TiB 2199023255552 #define S_4TiB 4398046511104 #define S_8TiB 8796093022208 #define S_16TiB 17592186044416 #define S_32TiB 35184372088832 #define S_64TiB 70368744177664 #define S_128TiB 140737488355328 #define S_256TiB 281474976710656 #define S_512TiB 562949953421312 #define S_1PiB 1125899906842624 #define S_2PiB 2251799813685248 #define S_4PiB 4503599627370496 #define S_8PiB 9007199254740992 #define S_16PiB 18014398509481984 #define S_32PiB 36028797018963968 #define S_64PiB 72057594037927936 #define S_128PiB 144115188075855872 #define S_256PiB 288230376151711744 #define S_512PiB 576460752303423488 #define S_1EiB 1152921504606846976 #define S_2EiB 2305843009213693952 #define S_4EiB 4611686018427387904 #define S_8EiB 9223372036854775808 #endif