mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
bcachefs: CLASS(darray)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
237a8e16bd
commit
42359f1615
|
|
@ -8,6 +8,7 @@
|
|||
* Inspired by CCAN's darray
|
||||
*/
|
||||
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#define DARRAY_PREALLOCATED(_type, _nr) \
|
||||
|
|
@ -112,6 +113,8 @@ int __bch2_darray_resize_noprof(darray_char *, size_t, size_t, gfp_t);
|
|||
#define darray_for_each_reverse(_d, _i) \
|
||||
for (typeof(&(_d).data[0]) _i = (_d).data + (_d).nr - 1; _i >= (_d).data && (_d).nr; --_i)
|
||||
|
||||
/* Init/exit */
|
||||
|
||||
#define darray_init(_d) \
|
||||
do { \
|
||||
(_d)->nr = 0; \
|
||||
|
|
@ -127,4 +130,29 @@ do { \
|
|||
darray_init(_d); \
|
||||
} while (0)
|
||||
|
||||
#define DEFINE_DARRAY_CLASS(_type) \
|
||||
DEFINE_CLASS(_type, _type, darray_exit(&(_T)), (_type) {}, void)
|
||||
|
||||
#define DEFINE_DARRAY(_type) \
|
||||
typedef DARRAY(_type) darray_##_type; \
|
||||
DEFINE_DARRAY_CLASS(darray_##_type)
|
||||
|
||||
#define DEFINE_DARRAY_NAMED(_name, _type) \
|
||||
typedef DARRAY(_type) _name; \
|
||||
DEFINE_DARRAY_CLASS(_name)
|
||||
|
||||
DEFINE_DARRAY_CLASS(darray_char);
|
||||
DEFINE_DARRAY_CLASS(darray_str)
|
||||
DEFINE_DARRAY_CLASS(darray_const_str)
|
||||
|
||||
DEFINE_DARRAY_CLASS(darray_u8)
|
||||
DEFINE_DARRAY_CLASS(darray_u16)
|
||||
DEFINE_DARRAY_CLASS(darray_u32)
|
||||
DEFINE_DARRAY_CLASS(darray_u64)
|
||||
|
||||
DEFINE_DARRAY_CLASS(darray_s8)
|
||||
DEFINE_DARRAY_CLASS(darray_s16)
|
||||
DEFINE_DARRAY_CLASS(darray_s32)
|
||||
DEFINE_DARRAY_CLASS(darray_s64)
|
||||
|
||||
#endif /* _BCACHEFS_DARRAY_H */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user