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

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/tl.c
          +++ new/usr/src/uts/common/io/tl.c
↓ open down ↓ 1130 lines elided ↑ open up ↑
1131 1131          }
1132 1132          return (retcode);
1133 1133  }
1134 1134  
1135 1135  /*
1136 1136   * Endpoint reference management.
1137 1137   */
1138 1138  static void
1139 1139  tl_refhold(tl_endpt_t *tep)
1140 1140  {
1141      -        atomic_add_32(&tep->te_refcnt, 1);
     1141 +        atomic_inc_32(&tep->te_refcnt);
1142 1142  }
1143 1143  
1144 1144  static void
1145 1145  tl_refrele(tl_endpt_t *tep)
1146 1146  {
1147 1147          ASSERT(tep->te_refcnt != 0);
1148 1148  
1149      -        if (atomic_add_32_nv(&tep->te_refcnt, -1) == 0)
     1149 +        if (atomic_dec_32_nv(&tep->te_refcnt) == 0)
1150 1150                  tl_free(tep);
1151 1151  }
1152 1152  
1153 1153  /*ARGSUSED*/
1154 1154  static int
1155 1155  tl_constructor(void *buf, void *cdrarg, int kmflags)
1156 1156  {
1157 1157          tl_endpt_t *tep = buf;
1158 1158  
1159 1159          bzero(tep, sizeof (tl_endpt_t));
↓ open down ↓ 97 lines elided ↑ open up ↑
1257 1257          }
1258 1258  
1259 1259          s->ts_refcnt = 1;
1260 1260          s->ts_serializer = ser;
1261 1261          return (s);
1262 1262  }
1263 1263  
1264 1264  static void
1265 1265  tl_serializer_refhold(tl_serializer_t *s)
1266 1266  {
1267      -        atomic_add_32(&s->ts_refcnt, 1);
     1267 +        atomic_inc_32(&s->ts_refcnt);
1268 1268  }
1269 1269  
1270 1270  static void
1271 1271  tl_serializer_refrele(tl_serializer_t *s)
1272 1272  {
1273      -        if (atomic_add_32_nv(&s->ts_refcnt, -1) == 0) {
     1273 +        if (atomic_dec_32_nv(&s->ts_refcnt) == 0) {
1274 1274                  serializer_destroy(s->ts_serializer);
1275 1275                  kmem_free(s, sizeof (tl_serializer_t));
1276 1276          }
1277 1277  }
1278 1278  
1279 1279  /*
1280 1280   * Post a request on the endpoint serializer. For COTS transports keep track of
1281 1281   * the number of pending requests.
1282 1282   */
1283 1283  static void
↓ open down ↓ 4135 lines elided ↑ open up ↑
5419 5419                           */
5420 5420                          tep->te_flag |= TL_ADDRHASHED;
5421 5421                          tep->te_hash_hndl = NULL;
5422 5422  
5423 5423                          return (B_TRUE); /* successful return */
5424 5424                  }
5425 5425                  /*
5426 5426                   * Use default address.
5427 5427                   */
5428 5428                  bcopy(&tep->te_defaddr, tep->te_abuf, sizeof (uint32_t));
5429      -                atomic_add_32(&tep->te_defaddr, 1);
     5429 +                atomic_inc_32(&tep->te_defaddr);
5430 5430          }
5431 5431  
5432 5432          /*
5433 5433           * Failed to find anything.
5434 5434           */
5435 5435          (void) (STRLOG(TL_ID, -1, 1, SL_ERROR,
5436 5436              "tl_get_any_addr:looped 2^32 times"));
5437 5437          return (B_FALSE);
5438 5438  }
5439 5439  
↓ open down ↓ 819 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX