Add libkern/fls.c for fls() - Find last bit set

This commit is contained in:
Joel Sherrill 2012-04-16 11:00:02 -05:00
parent 459afb1c76
commit c4117bb99c
3 changed files with 52 additions and 0 deletions

View File

@ -18,6 +18,7 @@ C_FILES = \
freebsd/kern/subr_eventhandler.c \ freebsd/kern/subr_eventhandler.c \
freebsd/kern/kern_subr.c \ freebsd/kern/kern_subr.c \
freebsd/kern/kern_tc.c \ freebsd/kern/kern_tc.c \
freebsd/libkern/fls.c \
freebsd/net/bridgestp.c \ freebsd/net/bridgestp.c \
freebsd/net/ieee8023ad_lacp.c \ freebsd/net/ieee8023ad_lacp.c \
freebsd/net/if_atmsubr.c \ freebsd/net/if_atmsubr.c \

View File

@ -1376,6 +1376,7 @@ net.addSourceFiles(
'kern/subr_eventhandler.c', 'kern/subr_eventhandler.c',
'kern/kern_subr.c', 'kern/kern_subr.c',
'kern/kern_tc.c', 'kern/kern_tc.c',
'libkern/fls.c',
'net/bridgestp.c', 'net/bridgestp.c',
'net/ieee8023ad_lacp.c', 'net/ieee8023ad_lacp.c',
'net/if_atmsubr.c', 'net/if_atmsubr.c',

50
freebsd/libkern/fls.c Normal file
View File

@ -0,0 +1,50 @@
#include <freebsd/machine/rtems-bsd-config.h>
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <freebsd/sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <freebsd/sys/libkern.h>
/*
* Find Last Set bit
*/
int
fls(int mask)
{
int bit;
if (mask == 0)
return (0);
for (bit = 1; mask != 1; bit++)
mask = (unsigned int)mask >> 1;
return (bit);
}