btrfs-progs: move utils code out of header

There are not performance critical static inlines, we can do the normal
declaration/definition split for various helpers.

Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
David Sterba 2017-02-01 16:09:47 +01:00
parent ca92914804
commit a09f0e96e7
2 changed files with 59 additions and 55 deletions

53
utils.c
View File

@ -2266,6 +2266,32 @@ unsigned int get_unit_mode_from_arg(int *argc, char *argv[], int df_mode)
return unit_mode;
}
u64 div_factor(u64 num, int factor)
{
if (factor == 10)
return num;
num *= factor;
num /= 10;
return num;
}
/*
* Get the length of the string converted from a u64 number.
*
* Result is equal to log10(num) + 1, but without the use of math library.
*/
int count_digits(u64 num)
{
int ret = 0;
if (num == 0)
return 1;
while (num > 0) {
ret++;
num /= 10;
}
return ret;
}
int string_is_numerical(const char *str)
{
if (!str)
@ -2397,6 +2423,7 @@ out:
return ret;
}
/* Set the seed manually */
void init_rand_seed(u64 seed)
{
int i;
@ -2446,6 +2473,7 @@ u32 rand_u32(void)
return (u32)jrand48(rand_seed);
}
/* Return random number in range [0, upper) */
unsigned int rand_range(unsigned int upper)
{
__init_seed();
@ -2456,6 +2484,31 @@ unsigned int rand_range(unsigned int upper)
return (unsigned int)(jrand48(rand_seed) % upper);
}
int rand_int(void)
{
return (int)(rand_u32());
}
u64 rand_u64(void)
{
u64 ret = 0;
ret += rand_u32();
ret <<= 32;
ret += rand_u32();
return ret;
}
u16 rand_u16(void)
{
return (u16)(rand_u32());
}
u8 rand_u8(void)
{
return (u8)(rand_u32());
}
void btrfs_config_init(void)
{
}

61
utils.h
View File

@ -138,32 +138,8 @@ int find_next_key(struct btrfs_path *path, struct btrfs_key *key);
const char* btrfs_group_type_str(u64 flag);
const char* btrfs_group_profile_str(u64 flag);
/*
* Get the length of the string converted from a u64 number.
*
* Result is equal to log10(num) + 1, but without the use of math library.
*/
static inline int count_digits(u64 num)
{
int ret = 0;
if (num == 0)
return 1;
while (num > 0) {
ret++;
num /= 10;
}
return ret;
}
static inline u64 div_factor(u64 num, int factor)
{
if (factor == 10)
return num;
num *= factor;
num /= 10;
return num;
}
int count_digits(u64 num);
u64 div_factor(u64 num, int factor);
int btrfs_tree_search2_ioctl_supported(int fd);
@ -292,37 +268,12 @@ static inline int __error_on(int condition, const char *fmt, ...)
}
/* Pseudo random number generator wrappers */
int rand_int(void);
u8 rand_u8(void);
u16 rand_u16(void);
u32 rand_u32(void);
static inline int rand_int(void)
{
return (int)(rand_u32());
}
static inline u64 rand_u64(void)
{
u64 ret = 0;
ret += rand_u32();
ret <<= 32;
ret += rand_u32();
return ret;
}
static inline u16 rand_u16(void)
{
return (u16)(rand_u32());
}
static inline u8 rand_u8(void)
{
return (u8)(rand_u32());
}
/* Return random number in range [0, limit) */
u64 rand_u64(void);
unsigned int rand_range(unsigned int upper);
/* Also allow setting the seed manually */
void init_rand_seed(u64 seed);
#endif