1f434fe12SDag-Erling Smørgrav /*- 2f434fe12SDag-Erling Smørgrav * Copyright (c) 1990, 1993 3f434fe12SDag-Erling Smørgrav * The Regents of the University of California. All rights reserved. 4f434fe12SDag-Erling Smørgrav * 5f434fe12SDag-Erling Smørgrav * Redistribution and use in source and binary forms, with or without 6f434fe12SDag-Erling Smørgrav * modification, are permitted provided that the following conditions 7f434fe12SDag-Erling Smørgrav * are met: 8f434fe12SDag-Erling Smørgrav * 1. Redistributions of source code must retain the above copyright 9f434fe12SDag-Erling Smørgrav * notice, this list of conditions and the following disclaimer. 10f434fe12SDag-Erling Smørgrav * 2. Redistributions in binary form must reproduce the above copyright 11f434fe12SDag-Erling Smørgrav * notice, this list of conditions and the following disclaimer in the 12f434fe12SDag-Erling Smørgrav * documentation and/or other materials provided with the distribution. 13*3fb3b97cSEd Maste * 3. Neither the name of the University nor the names of its contributors 14f434fe12SDag-Erling Smørgrav * may be used to endorse or promote products derived from this software 15f434fe12SDag-Erling Smørgrav * without specific prior written permission. 16f434fe12SDag-Erling Smørgrav * 17f434fe12SDag-Erling Smørgrav * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18f434fe12SDag-Erling Smørgrav * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19f434fe12SDag-Erling Smørgrav * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20f434fe12SDag-Erling Smørgrav * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21f434fe12SDag-Erling Smørgrav * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22f434fe12SDag-Erling Smørgrav * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23f434fe12SDag-Erling Smørgrav * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24f434fe12SDag-Erling Smørgrav * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25f434fe12SDag-Erling Smørgrav * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26f434fe12SDag-Erling Smørgrav * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27f434fe12SDag-Erling Smørgrav * SUCH DAMAGE. 28f434fe12SDag-Erling Smørgrav */ 29f434fe12SDag-Erling Smørgrav 30f434fe12SDag-Erling Smørgrav #include <sys/cdefs.h> 31f434fe12SDag-Erling Smørgrav __FBSDID("$FreeBSD$"); 32f434fe12SDag-Erling Smørgrav 33f434fe12SDag-Erling Smørgrav #include <strings.h> 34f434fe12SDag-Erling Smørgrav 35f434fe12SDag-Erling Smørgrav /* 36f434fe12SDag-Erling Smørgrav * Find Last Set bit 37f434fe12SDag-Erling Smørgrav */ 38f434fe12SDag-Erling Smørgrav int 39f434fe12SDag-Erling Smørgrav flsl(long mask) 40f434fe12SDag-Erling Smørgrav { 41f434fe12SDag-Erling Smørgrav int bit; 42f434fe12SDag-Erling Smørgrav 43f434fe12SDag-Erling Smørgrav if (mask == 0) 44f434fe12SDag-Erling Smørgrav return (0); 45f434fe12SDag-Erling Smørgrav for (bit = 1; mask != 1; bit++) 4629554ea5SDag-Erling Smørgrav mask = (unsigned long)mask >> 1; 47f434fe12SDag-Erling Smørgrav return (bit); 48f434fe12SDag-Erling Smørgrav } 49