/* * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. *//* Find the first set bit * i.e. least signifigant 1 bit: * 0 => 0 * 1 => 1 * 2 => 2 * 3 => 1 * 4 => 3 */intffs(unsigned int mask){ int i; if (!mask) return 0; i = 1; while (!(mask & 1)){ i++; mask = mask >> 1; } return i;}
/*
* This file is part of the UCB release of Plan 9. It is subject to the license
* terms in the LICENSE file found in the top-level directory of this
* distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
* part of the UCB release of Plan 9, including this file, may be copied,
* modified, propagated, or distributed except according to the terms contained
* in the LICENSE file.
*/
/* 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;
}