Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#ifndef _ASM_GENERIC_BITOPS_FIND_H_
  3#define _ASM_GENERIC_BITOPS_FIND_H_
  4
  5#ifndef find_next_bit
  6/**
  7 * find_next_bit - find the next set bit in a memory region
  8 * @addr: The address to base the search on
  9 * @offset: The bitnumber to start searching at
 10 * @size: The bitmap size in bits
 11 *
 12 * Returns the bit number for the next set bit
 13 * If no bits are set, returns @size.
 14 */
 15extern unsigned long find_next_bit(const unsigned long *addr, unsigned long
 16		size, unsigned long offset);
 17#endif
 18
 19#ifndef find_next_and_bit
 20/**
 21 * find_next_and_bit - find the next set bit in both memory regions
 22 * @addr1: The first address to base the search on
 23 * @addr2: The second address to base the search on
 24 * @offset: The bitnumber to start searching at
 25 * @size: The bitmap size in bits
 26 *
 27 * Returns the bit number for the next set bit
 28 * If no bits are set, returns @size.
 29 */
 30extern unsigned long find_next_and_bit(const unsigned long *addr1,
 31		const unsigned long *addr2, unsigned long size,
 32		unsigned long offset);
 33#endif
 34
 35#ifndef find_next_zero_bit
 36/**
 37 * find_next_zero_bit - find the next cleared bit in a memory region
 38 * @addr: The address to base the search on
 39 * @offset: The bitnumber to start searching at
 40 * @size: The bitmap size in bits
 41 *
 42 * Returns the bit number of the next zero bit
 43 * If no bits are zero, returns @size.
 44 */
 45extern unsigned long find_next_zero_bit(const unsigned long *addr, unsigned
 46		long size, unsigned long offset);
 47#endif
 48
 49#ifdef CONFIG_GENERIC_FIND_FIRST_BIT
 50
 51/**
 52 * find_first_bit - find the first set bit in a memory region
 53 * @addr: The address to start the search at
 54 * @size: The maximum number of bits to search
 55 *
 56 * Returns the bit number of the first set bit.
 57 * If no bits are set, returns @size.
 58 */
 59extern unsigned long find_first_bit(const unsigned long *addr,
 60				    unsigned long size);
 61
 62/**
 63 * find_first_zero_bit - find the first cleared bit in a memory region
 64 * @addr: The address to start the search at
 65 * @size: The maximum number of bits to search
 66 *
 67 * Returns the bit number of the first cleared bit.
 68 * If no bits are zero, returns @size.
 69 */
 70extern unsigned long find_first_zero_bit(const unsigned long *addr,
 71					 unsigned long size);
 72#else /* CONFIG_GENERIC_FIND_FIRST_BIT */
 73
 74#ifndef find_first_bit
 75#define find_first_bit(addr, size) find_next_bit((addr), (size), 0)
 76#endif
 77#ifndef find_first_zero_bit
 78#define find_first_zero_bit(addr, size) find_next_zero_bit((addr), (size), 0)
 79#endif
 80
 81#endif /* CONFIG_GENERIC_FIND_FIRST_BIT */
 82
 83/**
 84 * find_next_clump8 - find next 8-bit clump with set bits in a memory region
 85 * @clump: location to store copy of found clump
 86 * @addr: address to base the search on
 87 * @size: bitmap size in number of bits
 88 * @offset: bit offset at which to start searching
 89 *
 90 * Returns the bit offset for the next set clump; the found clump value is
 91 * copied to the location pointed by @clump. If no bits are set, returns @size.
 92 */
 93extern unsigned long find_next_clump8(unsigned long *clump,
 94				      const unsigned long *addr,
 95				      unsigned long size, unsigned long offset);
 96
 97#define find_first_clump8(clump, bits, size) \
 98	find_next_clump8((clump), (bits), (size), 0)
 99
100#endif /*_ASM_GENERIC_BITOPS_FIND_H_ */