Print this page
patch as-lock-macro-simplification

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/syscall/lgrpsys.c
          +++ new/usr/src/uts/common/syscall/lgrpsys.c
↓ open down ↓ 182 lines elided ↑ open up ↑
 183  183                                  val_array[i] = VALID_ADDR | VALID_REQ;
 184  184                          } else {
 185  185                                  out_array[i] = NULL;
 186  186                                  val_array[i] = 0;
 187  187                          }
 188  188                  }
 189  189          } else {
 190  190                  /* get the corresponding memory info for each virtual address */
 191  191                  as = curproc->p_as;
 192  192  
 193      -                AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
      193 +                AS_LOCK_ENTER(as, RW_READER);
 194  194                  hat = as->a_hat;
 195  195                  for (i = out_idx = 0; i < addr_count; i++, out_idx +=
 196  196                      info_count) {
 197  197                          addr = in_array[i];
 198  198                          vaddr = (uintptr_t)(addr & ~PAGEOFFSET);
 199  199                          if (!as_segat(as, (caddr_t)vaddr)) {
 200  200                                  val_array[i] = 0;
 201  201                                  continue;
 202  202                          }
 203  203                          val_array[i] = VALID_ADDR;
↓ open down ↓ 75 lines elided ↑ open up ↑
 279  279                                                   * only, shouldn't mix with
 280  280                                                   * virtual address
 281  281                                                   */
 282  282                                                  break;
 283  283                                          default:
 284  284                                                  break;
 285  285                                          }
 286  286                                  }
 287  287                          }
 288  288                  }
 289      -                AS_LOCK_EXIT(as, &as->a_lock);
      289 +                AS_LOCK_EXIT(as);
 290  290          }
 291  291  
 292  292          /* copy out the results and validity bits and free the buffers */
 293  293          if ((copyout(out_array, minfo.mi_outdata, out_size) != 0) ||
 294  294              (copyout(val_array, minfo.mi_validity, val_size) != 0))
 295  295                  ret = set_errno(EFAULT);
 296  296  
 297  297          kmem_free(in_array, in_size);
 298  298          kmem_free(out_array, out_size);
 299  299          kmem_free(req_array, req_size);
↓ open down ↓ 1828 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX