Go to the documentation of this file.
51 #define BIT(x) (1 << (x))
53 #define ARRAY_SIZE(x) \
54 (sizeof(x) / sizeof((x)[0]))
56 #define DIV_ROUND_UP(x,y) \
57 (((x) + (y) - 1) / (y))
58 #define DIV_ROUND_CLOSEST(x, y) \
59 (((x) + (y) / 2) / (y))
60 #define DIV_ROUND_CLOSEST_ULL(x, y) \
61 DIV_ROUND_CLOSEST(x, y)
64 (((x) < (y)) ? (x) : (y))
65 #define min_t(type, x, y) \
66 (type)min((type)(x), (type)(y))
69 (((x) > (y)) ? (x) : (y))
70 #define max_t(type, x, y) \
71 (type)max((type)(x), (type)(y))
73 #define clamp(val, min_val, max_val) \
74 (max(min((val), (max_val)), (min_val)))
75 #define clamp_t(type, val, min_val, max_val) \
76 (type)clamp((type)(val), (type)(min_val), (type)(max_val))
79 {typeof(x) _tmp_ = (x); (x) = (y); (y) = _tmp_;}
81 #define round_up(x,y) \
84 #define BITS_PER_LONG 32
86 #define GENMASK(h, l) ({ \
87 uint32_t t = (uint32_t)(~0UL); \
88 t = t << (BITS_PER_LONG - (h - l + 1)); \
89 t = t >> (BITS_PER_LONG - (h + 1)); \
93 #define bswap_constant_32(x) \
94 ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \
95 (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
97 #define bswap_constant_16(x) ((((x) & (uint16_t)0xff00) >> 8) | \
98 (((x) & (uint16_t)0x00ff) << 8))
100 #define bit_swap_constant_8(x) \
101 ((((x) & 0x80) >> 7) | \
102 (((x) & 0x40) >> 5) | \
103 (((x) & 0x20) >> 3) | \
104 (((x) & 0x10) >> 1) | \
105 (((x) & 0x08) << 1) | \
106 (((x) & 0x04) << 3) | \
107 (((x) & 0x02) << 5) | \
110 #define U16_MAX ((uint16_t)~0U)
111 #define S16_MAX ((int16_t)(U16_MAX>>1))
113 #define DIV_U64(x, y) (x / y)
115 #define UNUSED_PARAM(x) ((void)x)
117 #define shift_right(x, s) ((x) < 0 ? -(-(x) >> (s)) : (x) >> (s))
128 const int32_t *array,
131 uint32_t
field_prep(uint32_t mask, uint32_t val);
133 uint32_t
field_get(uint32_t mask, uint32_t word);
141 uint32_t given_denominator,
142 uint32_t max_numerator,
143 uint32_t max_denominator,
144 uint32_t *best_numerator,
145 uint32_t *best_denominator);
149 uint64_t
do_div(uint64_t* n,
153 uint64_t *remainder);
155 uint64_t
div_u64_rem(uint64_t dividend, uint32_t divisor, uint32_t *remainder);
156 int64_t
div_s64_rem(int64_t dividend, int32_t divisor, int32_t *remainder);
158 uint64_t
div_u64(uint64_t dividend, uint32_t divisor);
159 int64_t
div_s64(int64_t dividend, int32_t divisor);
int32_t log_base_2(uint32_t x)
uint32_t hweight8(uint32_t word)
uint64_t div64_u64_rem(uint64_t dividend, uint64_t divisor, uint64_t *remainder)
void put_unaligned_be16(uint16_t val, uint8_t *buf)
uint16_t get_unaligned_le16(uint8_t *buf)
void put_unaligned_le16(uint16_t val, uint8_t *buf)
uint32_t find_first_set_bit(uint32_t word)
uint32_t srt_to_uint32(const char *str)
void put_unaligned_be32(uint32_t val, uint8_t *buf)
uint32_t field_get(uint32_t mask, uint32_t word)
uint32_t get_unaligned_le32(uint8_t *buf)
void put_unaligned_le32(uint32_t val, uint8_t *buf)
void put_unaligned_le24(uint32_t val, uint8_t *buf)
uint32_t get_unaligned_le24(uint8_t *buf)
uint16_t get_unaligned_be16(uint8_t *buf)
uint64_t div_u64_rem(uint64_t dividend, uint32_t divisor, uint32_t *remainder)
uint64_t do_div(uint64_t *n, uint64_t base)
void put_unaligned_be24(uint32_t val, uint8_t *buf)
uint32_t get_unaligned_be24(uint8_t *buf)
int32_t str_to_int32(const char *str)
uint32_t field_prep(uint32_t mask, uint32_t val)
uint32_t get_unaligned_be32(uint8_t *buf)
int64_t div_s64(int64_t dividend, int32_t divisor)
uint32_t greatest_common_divisor(uint32_t a, uint32_t b)
uint32_t find_last_set_bit(uint32_t word)
uint64_t div_u64(uint64_t dividend, uint32_t divisor)
int64_t div_s64_rem(int64_t dividend, int32_t divisor, int32_t *remainder)
void rational_best_approximation(uint32_t given_numerator, uint32_t given_denominator, uint32_t max_numerator, uint32_t max_denominator, uint32_t *best_numerator, uint32_t *best_denominator)
uint32_t find_closest(int32_t val, const int32_t *array, uint32_t size)