Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v6.19-rc8 68 lines 1.4 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef KUBLK_UTILS_H 3#define KUBLK_UTILS_H 4 5#ifndef min 6#define min(a, b) ((a) < (b) ? (a) : (b)) 7#endif 8 9#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) 10 11#ifndef offsetof 12#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER) 13#endif 14 15#ifndef container_of 16#define container_of(ptr, type, member) ({ \ 17 unsigned long __mptr = (unsigned long)(ptr); \ 18 ((type *)(__mptr - offsetof(type, member))); }) 19#endif 20 21#define round_up(val, rnd) \ 22 (((val) + ((rnd) - 1)) & ~((rnd) - 1)) 23 24static inline unsigned int ilog2(unsigned int x) 25{ 26 if (x == 0) 27 return 0; 28 return (sizeof(x) * 8 - 1) - __builtin_clz(x); 29} 30 31#define UBLK_DBG_DEV (1U << 0) 32#define UBLK_DBG_THREAD (1U << 1) 33#define UBLK_DBG_IO_CMD (1U << 2) 34#define UBLK_DBG_IO (1U << 3) 35#define UBLK_DBG_CTRL_CMD (1U << 4) 36#define UBLK_LOG (1U << 5) 37 38extern unsigned int ublk_dbg_mask; 39 40static inline void ublk_err(const char *fmt, ...) 41{ 42 va_list ap; 43 44 va_start(ap, fmt); 45 vfprintf(stderr, fmt, ap); 46} 47 48static inline void ublk_log(const char *fmt, ...) 49{ 50 if (ublk_dbg_mask & UBLK_LOG) { 51 va_list ap; 52 53 va_start(ap, fmt); 54 vfprintf(stdout, fmt, ap); 55 } 56} 57 58static inline void ublk_dbg(int level, const char *fmt, ...) 59{ 60 if (level & ublk_dbg_mask) { 61 va_list ap; 62 63 va_start(ap, fmt); 64 vfprintf(stdout, fmt, ap); 65 } 66} 67 68#endif