Print this page
5042 stop using deprecated atomic functions

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/sun4/os/memnode.c
          +++ new/usr/src/uts/sun4/os/memnode.c
↓ open down ↓ 75 lines elided ↑ open up ↑
  76   76           * the slice.
  77   77           */
  78   78          if (mem_node_physalign) {
  79   79                  start &= ~(btop(mem_node_physalign) - 1);
  80   80                  end = roundup(end, btop(mem_node_physalign)) - 1;
  81   81          }
  82   82  
  83   83          mnode = PFN_2_MEM_NODE(start);
  84   84          ASSERT(mnode < max_mem_nodes);
  85   85  
  86      -        if (cas32((uint32_t *)&mem_node_config[mnode].exists, 0, 1)) {
       86 +        if (atomic_cas_32((uint32_t *)&mem_node_config[mnode].exists, 0, 1)) {
  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   97                  atomic_add_16(&num_memnodes, 1);
  98   98                  do {
  99   99                          oldmask = memnodes_mask;
 100  100                          newmask = memnodes_mask | (1ull << mnode);
 101      -                } while (cas64(&memnodes_mask, oldmask, newmask) != oldmask);
      101 +                } while (atomic_cas_64(&memnodes_mask, oldmask, newmask) !=
      102 +                         oldmask);
 102  103          }
 103  104          /*
 104  105           * Let the common lgrp framework know about the new memory
 105  106           */
 106  107          lgrp_config(LGRP_CONFIG_MEM_ADD, mnode, MEM_NODE_2_LGRPHAND(mnode));
 107  108  }
 108  109  
 109  110  /*
 110  111   * Remove a PFN range from a memnode.  On some platforms,
 111  112   * the memnode will be created with physbase at the first
↓ open down ↓ 39 lines elided ↑ open up ↑
 151  152                  lgrp_config(LGRP_CONFIG_MEM_DEL, mnode,
 152  153                      MEM_NODE_2_LGRPHAND(mnode));
 153  154  
 154  155                  /*
 155  156                   * Delete the whole node.
 156  157                   */
 157  158                  ASSERT(MNODE_PGCNT(mnode) == 0);
 158  159                  do {
 159  160                          omask = memnodes_mask;
 160  161                          nmask = omask & ~(1ull << mnode);
 161      -                } while (cas64(&memnodes_mask, omask, nmask) != omask);
      162 +                } while (atomic_cas_64(&memnodes_mask, omask, nmask) != omask);
 162  163                  atomic_add_16(&num_memnodes, -1);
 163  164                  mem_node_config[mnode].exists = 0;
 164  165          }
 165  166  }
 166  167  
 167  168  void
 168  169  mem_node_add_range(pfn_t start, pfn_t end)
 169  170  {
 170  171          if (&plat_slice_add != NULL)
 171  172                  plat_slice_add(start, end);
↓ open down ↓ 41 lines elided ↑ open up ↑
 213  214  mem_node_alloc()
 214  215  {
 215  216          int mnode;
 216  217          mnodeset_t newmask, oldmask;
 217  218  
 218  219          /*
 219  220           * Find an unused memnode.  Update it atomically to prevent
 220  221           * a first time memnode creation race.
 221  222           */
 222  223          for (mnode = 0; mnode < max_mem_nodes; mnode++)
 223      -                if (cas32((uint32_t *)&mem_node_config[mnode].exists,
      224 +                if (atomic_cas_32((uint32_t *)&mem_node_config[mnode].exists,
 224  225                      0, 1) == 0)
 225  226                          break;
 226  227  
 227  228          if (mnode >= max_mem_nodes)
 228  229                          panic("Out of free memnodes\n");
 229  230  
 230  231          mem_node_config[mnode].physbase = (uint64_t)-1;
 231  232          mem_node_config[mnode].physmax = 0;
 232  233          atomic_add_16(&num_memnodes, 1);
 233  234          do {
 234  235                  oldmask = memnodes_mask;
 235  236                  newmask = memnodes_mask | (1ull << mnode);
 236      -        } while (cas64(&memnodes_mask, oldmask, newmask) != oldmask);
      237 +        } while (atomic_cas_64(&memnodes_mask, oldmask, newmask) != oldmask);
 237  238  
 238  239          return (mnode);
 239  240  }
 240  241  
 241  242  /*
 242  243   * Find the intersection between a memnode and a memlist
 243  244   * and returns the number of pages that overlap.
 244  245   *
 245  246   * Grab the memlist lock to protect the list from DR operations.
 246  247   */
↓ open down ↓ 71 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX