/* * Greate deal of the code was taken from the kernel UBIFS implementation, and * this file contains some "glue" definitions. */ #ifndef __UBIFS_DEFS_H__ #define __UBIFS_DEFS_H__ #include #include #include #include #include "ubifs.h" /* common.h requires the PROGRAM_NAME macro */ extern struct ubifs_info info_; #define PROGRAM_NAME (info_.program_name) #include "common.h" #define MKFS_PROGRAM_NAME "mkfs.ubifs" enum { MKFS_PROGRAM_TYPE = 0 }; #define dbg_msg(lvl, fmt, ...) do {if (info_.debug_level >= lvl) \ printf("%s: %s: " fmt "\n", PROGRAM_NAME, __FUNCTION__, ##__VA_ARGS__); \ } while(0) #define unlikely(x) (x) /** * fls - find last (most-significant) bit set * @x: the word to search * * This is defined the same way as ffs. * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. */ static inline int fls(int x) { int r = 32; if (!x) return 0; if (!(x & 0xffff0000u)) { x <<= 16; r -= 16; } if (!(x & 0xff000000u)) { x <<= 8; r -= 8; } if (!(x & 0xf0000000u)) { x <<= 4; r -= 4; } if (!(x & 0xc0000000u)) { x <<= 2; r -= 2; } if (!(x & 0x80000000u)) { x <<= 1; r -= 1; } return r; } #define do_div(n,base) ({ \ int __res; \ __res = ((unsigned long) n) % (unsigned) base; \ n = ((unsigned long) n) / (unsigned) base; \ __res; }) #if INT_MAX != 0x7fffffff #error : sizeof(int) must be 4 for this program #endif #if (~0ULL) != 0xffffffffffffffffULL #error : sizeof(long long) must be 8 for this program #endif #endif