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

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/sun4/os/memnode.c
          +++ new/usr/src/uts/sun4/os/memnode.c
↓ open down ↓ 86 lines elided ↑ open up ↑
  87   87                  /*
  88   88                   * Add slice to existing node.
  89   89                   */
  90   90                  if (start < mem_node_config[mnode].physbase)
  91   91                          mem_node_config[mnode].physbase = start;
  92   92                  if (end > mem_node_config[mnode].physmax)
  93   93                          mem_node_config[mnode].physmax = end;
  94   94          } else {
  95   95                  mem_node_config[mnode].physbase = start;
  96   96                  mem_node_config[mnode].physmax = end;
  97      -                atomic_add_16(&num_memnodes, 1);
       97 +                atomic_inc_16(&num_memnodes);
  98   98                  do {
  99   99                          oldmask = memnodes_mask;
 100  100                          newmask = memnodes_mask | (1ull << mnode);
 101  101                  } while (atomic_cas_64(&memnodes_mask, oldmask, newmask) !=
 102  102                           oldmask);
 103  103          }
 104  104          /*
 105  105           * Let the common lgrp framework know about the new memory
 106  106           */
 107  107          lgrp_config(LGRP_CONFIG_MEM_ADD, mnode, MEM_NODE_2_LGRPHAND(mnode));
↓ open down ↓ 45 lines elided ↑ open up ↑
 153  153                      MEM_NODE_2_LGRPHAND(mnode));
 154  154  
 155  155                  /*
 156  156                   * Delete the whole node.
 157  157                   */
 158  158                  ASSERT(MNODE_PGCNT(mnode) == 0);
 159  159                  do {
 160  160                          omask = memnodes_mask;
 161  161                          nmask = omask & ~(1ull << mnode);
 162  162                  } while (atomic_cas_64(&memnodes_mask, omask, nmask) != omask);
 163      -                atomic_add_16(&num_memnodes, -1);
      163 +                atomic_dec_16(&num_memnodes);
 164  164                  mem_node_config[mnode].exists = 0;
 165  165          }
 166  166  }
 167  167  
 168  168  void
 169  169  mem_node_add_range(pfn_t start, pfn_t end)
 170  170  {
 171  171          if (&plat_slice_add != NULL)
 172  172                  plat_slice_add(start, end);
 173  173          else
↓ open down ↓ 49 lines elided ↑ open up ↑
 223  223          for (mnode = 0; mnode < max_mem_nodes; mnode++)
 224  224                  if (atomic_cas_32((uint32_t *)&mem_node_config[mnode].exists,
 225  225                      0, 1) == 0)
 226  226                          break;
 227  227  
 228  228          if (mnode >= max_mem_nodes)
 229  229                          panic("Out of free memnodes\n");
 230  230  
 231  231          mem_node_config[mnode].physbase = (uint64_t)-1;
 232  232          mem_node_config[mnode].physmax = 0;
 233      -        atomic_add_16(&num_memnodes, 1);
      233 +        atomic_inc_16(&num_memnodes);
 234  234          do {
 235  235                  oldmask = memnodes_mask;
 236  236                  newmask = memnodes_mask | (1ull << mnode);
 237  237          } while (atomic_cas_64(&memnodes_mask, oldmask, newmask) != oldmask);
 238  238  
 239  239          return (mnode);
 240  240  }
 241  241  
 242  242  /*
 243  243   * Find the intersection between a memnode and a memlist
↓ open down ↓ 75 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX