Print this page
8627 want ddi_ffsll, ddi_flsll
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/os/sunddi.c
          +++ new/usr/src/uts/common/os/sunddi.c
↓ open down ↓ 5895 lines elided ↑ open up ↑
5896 5896  /*
5897 5897   * Find first bit set in a mask (returned counting from 1 up)
5898 5898   */
5899 5899  
5900 5900  int
5901 5901  ddi_ffs(long mask)
5902 5902  {
5903 5903          return (ffs(mask));
5904 5904  }
5905 5905  
     5906 +int
     5907 +ddi_ffsll(long long mask)
     5908 +{
     5909 +        return (ffs(mask));
     5910 +}
     5911 +
5906 5912  /*
5907 5913   * Find last bit set. Take mask and clear
5908 5914   * all but the most significant bit, and
5909 5915   * then let ffs do the rest of the work.
5910 5916   *
5911 5917   * Algorithm courtesy of Steve Chessin.
5912 5918   */
5913 5919  
5914 5920  int
5915 5921  ddi_fls(long mask)
5916 5922  {
     5923 +        return (ddi_flsll(mask));
     5924 +}
     5925 +
     5926 +int
     5927 +ddi_flsll(long long mask)
     5928 +{
5917 5929          while (mask) {
5918      -                long nx;
     5930 +                long long nx;
5919 5931  
5920 5932                  if ((nx = (mask & (mask - 1))) == 0)
5921 5933                          break;
5922 5934                  mask = nx;
5923 5935          }
5924 5936          return (ffs(mask));
5925 5937  }
5926 5938  
5927 5939  /*
5928 5940   * The ddi_soft_state_* routines comprise generic storage management utilities
↓ open down ↓ 4096 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX