Skip to content
Snippets Groups Projects
Select Git revision
  • e7e04c0c8c7ea931d966e5bd349a0b1c836b1ebf
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

headers_install.sh

Blame
  • find_last_bit.c 1.05 KiB
    /* find_last_bit.c: fallback find next bit implementation
     *
     * Copyright (C) 2008 IBM Corporation
     * Written by Rusty Russell <rusty@rustcorp.com.au>
     * (Inspired by David Howell's find_next_bit implementation)
     *
     * Rewritten by Yury Norov <yury.norov@gmail.com> to decrease
     * size and improve performance, 2015.
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License
     * as published by the Free Software Foundation; either version
     * 2 of the License, or (at your option) any later version.
     */
    
    #include <linux/bitops.h>
    #include <linux/bitmap.h>
    #include <linux/export.h>
    #include <linux/kernel.h>
    
    #ifndef find_last_bit
    
    unsigned long find_last_bit(const unsigned long *addr, unsigned long size)
    {
    	if (size) {
    		unsigned long val = BITMAP_LAST_WORD_MASK(size);
    		unsigned long idx = (size-1) / BITS_PER_LONG;
    
    		do {
    			val &= addr[idx];
    			if (val)
    				return idx * BITS_PER_LONG + __fls(val);
    
    			val = ~0ul;
    		} while (idx--);
    	}
    	return size;
    }
    EXPORT_SYMBOL(find_last_bit);
    
    #endif