bcachefs: prt_bitflags_vector()
similar to prt_bitflags(), but for ulong arrays Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
6b49b0f7e7
commit
560661d4ae
3 changed files with 25 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: LGPL-2.1+
|
||||
/* Copyright (C) 2022 Kent Overstreet */
|
||||
|
||||
#include <linux/bitmap.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/kernel.h>
|
||||
|
@ -423,3 +424,24 @@ void bch2_prt_bitflags(struct printbuf *out,
|
|||
flags ^= BIT_ULL(bit);
|
||||
}
|
||||
}
|
||||
|
||||
void bch2_prt_bitflags_vector(struct printbuf *out,
|
||||
const char * const list[],
|
||||
unsigned long *v, unsigned nr)
|
||||
{
|
||||
bool first = true;
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; i < nr; i++)
|
||||
if (!list[i]) {
|
||||
nr = i - 1;
|
||||
break;
|
||||
}
|
||||
|
||||
for_each_set_bit(i, v, nr) {
|
||||
if (!first)
|
||||
bch2_prt_printf(out, ",");
|
||||
first = false;
|
||||
bch2_prt_printf(out, "%s", list[i]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -124,6 +124,8 @@ void bch2_prt_units_u64(struct printbuf *, u64);
|
|||
void bch2_prt_units_s64(struct printbuf *, s64);
|
||||
void bch2_prt_string_option(struct printbuf *, const char * const[], size_t);
|
||||
void bch2_prt_bitflags(struct printbuf *, const char * const[], u64);
|
||||
void bch2_prt_bitflags_vector(struct printbuf *, const char * const[],
|
||||
unsigned long *, unsigned);
|
||||
|
||||
/* Initializer for a heap allocated printbuf: */
|
||||
#define PRINTBUF ((struct printbuf) { .heap_allocated = true })
|
||||
|
|
|
@ -243,6 +243,7 @@ do { \
|
|||
#define prt_units_s64(...) bch2_prt_units_s64(__VA_ARGS__)
|
||||
#define prt_string_option(...) bch2_prt_string_option(__VA_ARGS__)
|
||||
#define prt_bitflags(...) bch2_prt_bitflags(__VA_ARGS__)
|
||||
#define prt_bitflags_vector(...) bch2_prt_bitflags_vector(__VA_ARGS__)
|
||||
|
||||
void bch2_pr_time_units(struct printbuf *, u64);
|
||||
void bch2_prt_datetime(struct printbuf *, time64_t);
|
||||
|
|
Loading…
Reference in a new issue