LCOV - code coverage report
Current view: top level - include/asm-generic - getorder.h (source / functions) Hit Total Coverage
Test: btrfstest.info Lines: 0 4 0.0 %
Date: 2014-11-28 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #ifndef __ASM_GENERIC_GETORDER_H
       2             : #define __ASM_GENERIC_GETORDER_H
       3             : 
       4             : #ifndef __ASSEMBLY__
       5             : 
       6             : #include <linux/compiler.h>
       7             : #include <linux/log2.h>
       8             : 
       9             : /*
      10             :  * Runtime evaluation of get_order()
      11             :  */
      12             : static inline __attribute_const__
      13           0 : int __get_order(unsigned long size)
      14             : {
      15             :         int order;
      16             : 
      17           0 :         size--;
      18           0 :         size >>= PAGE_SHIFT;
      19             : #if BITS_PER_LONG == 32
      20             :         order = fls(size);
      21             : #else
      22             :         order = fls64(size);
      23             : #endif
      24           0 :         return order;
      25             : }
      26             : 
      27             : /**
      28             :  * get_order - Determine the allocation order of a memory size
      29             :  * @size: The size for which to get the order
      30             :  *
      31             :  * Determine the allocation order of a particular sized block of memory.  This
      32             :  * is on a logarithmic scale, where:
      33             :  *
      34             :  *      0 -> 2^0 * PAGE_SIZE and below
      35             :  *      1 -> 2^1 * PAGE_SIZE to 2^0 * PAGE_SIZE + 1
      36             :  *      2 -> 2^2 * PAGE_SIZE to 2^1 * PAGE_SIZE + 1
      37             :  *      3 -> 2^3 * PAGE_SIZE to 2^2 * PAGE_SIZE + 1
      38             :  *      4 -> 2^4 * PAGE_SIZE to 2^3 * PAGE_SIZE + 1
      39             :  *      ...
      40             :  *
      41             :  * The order returned is used to find the smallest allocation granule required
      42             :  * to hold an object of the specified size.
      43             :  *
      44             :  * The result is undefined if the size is 0.
      45             :  *
      46             :  * This function may be used to initialise variables with compile time
      47             :  * evaluations of constants.
      48             :  */
      49             : #define get_order(n)                                            \
      50             : (                                                               \
      51             :         __builtin_constant_p(n) ? (                             \
      52             :                 ((n) == 0UL) ? BITS_PER_LONG - PAGE_SHIFT :     \
      53             :                 (((n) < (1UL << PAGE_SHIFT)) ? 0 :             \
      54             :                  ilog2((n) - 1) - PAGE_SHIFT + 1)               \
      55             :         ) :                                                     \
      56             :         __get_order(n)                                          \
      57             : )
      58             : 
      59             : #endif  /* __ASSEMBLY__ */
      60             : 
      61             : #endif  /* __ASM_GENERIC_GETORDER_H */

Generated by: LCOV version 1.10