Lines Matching refs:iter

276 #define CHASH_ITER_SET(iter, s)					\  argument
277 (iter).mask = 1UL << ((s) & (BITS_PER_LONG - 1)), \
278 (iter).slot = (s)
285 #define CHASH_ITER_INC(iter) do { \ argument
286 (iter).mask = (iter).mask << 1 | \
287 (iter).mask >> (BITS_PER_LONG - 1); \
288 (iter).slot = ((iter).slot + 1) & (iter).table->size_mask; \
291 static inline bool chash_iter_is_valid(const struct chash_iter iter) in chash_iter_is_valid() argument
293 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); in chash_iter_is_valid()
294 return !!(iter.table->valid_bitmap[iter.slot >> _CHASH_LONG_SHIFT] & in chash_iter_is_valid()
295 iter.mask); in chash_iter_is_valid()
297 static inline bool chash_iter_is_empty(const struct chash_iter iter) in chash_iter_is_empty() argument
299 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); in chash_iter_is_empty()
300 return !(iter.table->occup_bitmap[iter.slot >> _CHASH_LONG_SHIFT] & in chash_iter_is_empty()
301 iter.mask); in chash_iter_is_empty()
304 static inline void chash_iter_set_valid(const struct chash_iter iter) in chash_iter_set_valid() argument
306 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); in chash_iter_set_valid()
307 iter.table->valid_bitmap[iter.slot >> _CHASH_LONG_SHIFT] |= iter.mask; in chash_iter_set_valid()
308 iter.table->occup_bitmap[iter.slot >> _CHASH_LONG_SHIFT] |= iter.mask; in chash_iter_set_valid()
310 static inline void chash_iter_set_invalid(const struct chash_iter iter) in chash_iter_set_invalid() argument
312 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); in chash_iter_set_invalid()
313 iter.table->valid_bitmap[iter.slot >> _CHASH_LONG_SHIFT] &= ~iter.mask; in chash_iter_set_invalid()
315 static inline void chash_iter_set_empty(const struct chash_iter iter) in chash_iter_set_empty() argument
317 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); in chash_iter_set_empty()
318 iter.table->occup_bitmap[iter.slot >> _CHASH_LONG_SHIFT] &= ~iter.mask; in chash_iter_set_empty()
321 static inline u32 chash_iter_key32(const struct chash_iter iter) in chash_iter_key32() argument
323 BUG_ON(iter.table->key_size != 4); in chash_iter_key32()
324 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); in chash_iter_key32()
325 return iter.table->keys32[iter.slot]; in chash_iter_key32()
327 static inline u64 chash_iter_key64(const struct chash_iter iter) in chash_iter_key64() argument
329 BUG_ON(iter.table->key_size != 8); in chash_iter_key64()
330 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); in chash_iter_key64()
331 return iter.table->keys64[iter.slot]; in chash_iter_key64()
333 static inline u64 chash_iter_key(const struct chash_iter iter) in chash_iter_key() argument
335 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); in chash_iter_key()
336 return (iter.table->key_size == 4) ? in chash_iter_key()
337 iter.table->keys32[iter.slot] : iter.table->keys64[iter.slot]; in chash_iter_key()
340 static inline u32 chash_iter_hash32(const struct chash_iter iter) in chash_iter_hash32() argument
342 BUG_ON(iter.table->key_size != 4); in chash_iter_hash32()
343 return hash_32(chash_iter_key32(iter), iter.table->bits); in chash_iter_hash32()
346 static inline u32 chash_iter_hash64(const struct chash_iter iter) in chash_iter_hash64() argument
348 BUG_ON(iter.table->key_size != 8); in chash_iter_hash64()
349 return hash_64(chash_iter_key64(iter), iter.table->bits); in chash_iter_hash64()
352 static inline u32 chash_iter_hash(const struct chash_iter iter) in chash_iter_hash() argument
354 return (iter.table->key_size == 4) ? in chash_iter_hash()
355 hash_32(chash_iter_key32(iter), iter.table->bits) : in chash_iter_hash()
356 hash_64(chash_iter_key64(iter), iter.table->bits); in chash_iter_hash()
359 static inline void *chash_iter_value(const struct chash_iter iter) in chash_iter_value() argument
361 BUG_ON((unsigned)iter.slot >= (1 << iter.table->bits)); in chash_iter_value()
362 return iter.table->values + in chash_iter_value()
363 ((unsigned long)iter.slot * iter.table->value_size); in chash_iter_value()