Lines Matching defs:mask

71 static inline void snd_mask_none(struct snd_mask *mask)
73 memset(mask, 0, sizeof(*mask));
76 static inline void snd_mask_any(struct snd_mask *mask)
78 memset(mask, 0xff, SNDRV_MASK_SIZE * sizeof(u_int32_t));
81 static inline int snd_mask_empty(const struct snd_mask *mask)
85 if (mask->bits[i])
90 static inline unsigned int snd_mask_min(const struct snd_mask *mask)
94 if (mask->bits[i])
95 return ffs(mask->bits[i]) - 1 + (i << 5);
100 static inline unsigned int snd_mask_max(const struct snd_mask *mask)
104 if (mask->bits[i])
105 return ld2(mask->bits[i]) + (i << 5);
110 static inline void snd_mask_set(struct snd_mask *mask, unsigned int val)
112 mask->bits[MASK_OFS(val)] |= MASK_BIT(val);
115 static inline void snd_mask_reset(struct snd_mask *mask, unsigned int val)
117 mask->bits[MASK_OFS(val)] &= ~MASK_BIT(val);
120 static inline void snd_mask_set_range(struct snd_mask *mask,
125 mask->bits[MASK_OFS(i)] |= MASK_BIT(i);
128 static inline void snd_mask_reset_range(struct snd_mask *mask,
133 mask->bits[MASK_OFS(i)] &= ~MASK_BIT(i);
136 static inline void snd_mask_leave(struct snd_mask *mask, unsigned int val)
139 v = mask->bits[MASK_OFS(val)] & MASK_BIT(val);
140 snd_mask_none(mask);
141 mask->bits[MASK_OFS(val)] = v;
144 static inline void snd_mask_intersect(struct snd_mask *mask,
149 mask->bits[i] &= v->bits[i];
152 static inline int snd_mask_eq(const struct snd_mask *mask,
155 return ! memcmp(mask, v, SNDRV_MASK_SIZE * sizeof(u_int32_t));
158 static inline void snd_mask_copy(struct snd_mask *mask,
161 *mask = *v;
164 static inline int snd_mask_test(const struct snd_mask *mask, unsigned int val)
166 return mask->bits[MASK_OFS(val)] & MASK_BIT(val);
169 static inline int snd_mask_single(const struct snd_mask *mask)
173 if (! mask->bits[i])
175 if (mask->bits[i] & (mask->bits[i] - 1))
184 static inline int snd_mask_refine(struct snd_mask *mask,
188 snd_mask_copy(&old, mask);
189 snd_mask_intersect(mask, v);
190 if (snd_mask_empty(mask))
192 return !snd_mask_eq(mask, &old);
195 static inline int snd_mask_refine_first(struct snd_mask *mask)
197 if (snd_mask_single(mask))
199 snd_mask_leave(mask, snd_mask_min(mask));
203 static inline int snd_mask_refine_last(struct snd_mask *mask)
205 if (snd_mask_single(mask))
207 snd_mask_leave(mask, snd_mask_max(mask));
211 static inline int snd_mask_refine_min(struct snd_mask *mask, unsigned int val)
213 if (snd_mask_min(mask) >= val)
215 snd_mask_reset_range(mask, 0, val - 1);
216 if (snd_mask_empty(mask))
221 static inline int snd_mask_refine_max(struct snd_mask *mask, unsigned int val)
223 if (snd_mask_max(mask) <= val)
225 snd_mask_reset_range(mask, val + 1, SNDRV_MASK_BITS);
226 if (snd_mask_empty(mask))
231 static inline int snd_mask_refine_set(struct snd_mask *mask, unsigned int val)
234 changed = !snd_mask_single(mask);
235 snd_mask_leave(mask, val);
236 if (snd_mask_empty(mask))
241 static inline int snd_mask_value(const struct snd_mask *mask)
243 return snd_mask_min(mask);