Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/i86pc/os/memnode.c
          +++ new/usr/src/uts/i86pc/os/memnode.c
↓ open down ↓ 89 lines elided ↑ open up ↑
  90   90                  /*
  91   91                   * Add slice to existing node.
  92   92                   */
  93   93                  if (start < mem_node_config[mnode].physbase)
  94   94                          mem_node_config[mnode].physbase = start;
  95   95                  if (end > mem_node_config[mnode].physmax)
  96   96                          mem_node_config[mnode].physmax = end;
  97   97          } else {
  98   98                  mem_node_config[mnode].physbase = start;
  99   99                  mem_node_config[mnode].physmax = end;
 100      -                atomic_add_16(&num_memnodes, 1);
      100 +                atomic_inc_16(&num_memnodes);
 101  101                  do {
 102  102                          oldmask = memnodes_mask;
 103  103                          newmask = memnodes_mask | (1ull << mnode);
 104  104                  } while (atomic_cas_64(&memnodes_mask, oldmask, newmask) !=
 105  105                      oldmask);
 106  106          }
 107  107  
 108  108          /*
 109  109           * Inform the common lgrp framework about the new memory
 110  110           */
↓ open down ↓ 45 lines elided ↑ open up ↑
 156  156                      mnode, MEM_NODE_2_LGRPHAND(mnode));
 157  157  
 158  158                  /*
 159  159                   * Delete the whole node.
 160  160                   */
 161  161                  ASSERT(MNODE_PGCNT(mnode) == 0);
 162  162                  do {
 163  163                          omask = memnodes_mask;
 164  164                          nmask = omask & ~(1ull << mnode);
 165  165                  } while (atomic_cas_64(&memnodes_mask, omask, nmask) != omask);
 166      -                atomic_add_16(&num_memnodes, -1);
      166 +                atomic_dec_16(&num_memnodes);
 167  167                  mem_node_config[mnode].exists = 0;
 168  168          }
 169  169  }
 170  170  
 171  171  void
 172  172  mem_node_add_range(pfn_t start, pfn_t end)
 173  173  {
 174  174          if (&plat_slice_add)
 175  175                  plat_slice_add(start, end);
 176  176          else
↓ open down ↓ 55 lines elided ↑ open up ↑
 232  232          for (mnode = 0; mnode < max_mem_nodes; mnode++)
 233  233                  if (atomic_cas_32((uint32_t *)&mem_node_config[mnode].exists,
 234  234                      0, 1) == 0)
 235  235                          break;
 236  236  
 237  237          if (mnode >= max_mem_nodes)
 238  238                  panic("Out of free memnodes\n");
 239  239  
 240  240          mem_node_config[mnode].physbase = (pfn_t)-1l;
 241  241          mem_node_config[mnode].physmax = 0;
 242      -        atomic_add_16(&num_memnodes, 1);
      242 +        atomic_inc_16(&num_memnodes);
 243  243          do {
 244  244                  oldmask = memnodes_mask;
 245  245                  newmask = memnodes_mask | (1ull << mnode);
 246  246          } while (atomic_cas_64(&memnodes_mask, oldmask, newmask) != oldmask);
 247  247  
 248  248          return (mnode);
 249  249  }
 250  250  
 251  251  /*
 252  252   * Find the intersection between a memnode and a memlist
↓ open down ↓ 32 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX