git: 9front

ref: 7980c670a598eb7da99dbafd3b1e2e95c1c7b437
dir: /sys/src/ape/lib/bsd/ffs.c/

View raw version
/* Find the first set bit
 * i.e. least signifigant 1 bit:
 * 0 => 0
 * 1 => 1
 * 2 => 2
 * 3 => 1
 * 4 => 3
 */

int
ffs(unsigned int mask)
{
	int i;

	if (!mask)
		return 0;
	i = 1;
	while (!(mask & 1)){
		i++;
		mask = mask >> 1;
	}
	return i;
}