shithub: plan9front

ref: a48b462e4464c762fac0c8fa0af18d05db2a725f
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;
}