Print this page
patch as-lock-macro-simplification

@@ -787,16 +787,16 @@
 
         if (pgcnt == 0) {
                 return (DDI_FAILURE);
         }
 
-        AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
+        AS_LOCK_ENTER(as, RW_READER);
 
         seg = as_findseg(as, state->bt_map.um_guest_pages, 0);
         if ((seg == NULL) || ((uaddr + state->bt_map.um_guest_size) >
             (seg->s_base + seg->s_size))) {
-                AS_LOCK_EXIT(as, &as->a_lock);
+                AS_LOCK_EXIT(as);
                 return (DDI_FAILURE);
         }
 
         /*
          * lock down the htables so the HAT can't steal them. Register the

@@ -813,11 +813,11 @@
                 uaddr += PAGESIZE;
         }
 
         state->bt_map.um_registered = B_TRUE;
 
-        AS_LOCK_EXIT(as, &as->a_lock);
+        AS_LOCK_EXIT(as);
 
         return (DDI_SUCCESS);
 }
 
 

@@ -848,15 +848,15 @@
         /* unmap any outstanding req's grefs */
         xpvtap_rs_flush(state->bt_map.um_rs, xpvtap_user_request_unmap, state);
 
         /* Unlock the gref pages */
         for (i = 0; i < pgcnt; i++) {
-                AS_LOCK_ENTER(as, &as->a_lock, RW_WRITER);
+                AS_LOCK_ENTER(as, RW_WRITER);
                 hat_prepare_mapping(as->a_hat, uaddr, NULL);
                 hat_unload(as->a_hat, uaddr, PAGESIZE, HAT_UNLOAD_UNLOCK);
                 hat_release_mapping(as->a_hat, uaddr);
-                AS_LOCK_EXIT(as, &as->a_lock);
+                AS_LOCK_EXIT(as);
                 uaddr += PAGESIZE;
         }
 
         /* remove the callback (which is this routine) */
         (void) as_delete_callback(as, arg);

@@ -1226,15 +1226,15 @@
         }
 
         /* get the apps gref address */
         uaddr = XPVTAP_GREF_REQADDR(state->bt_map.um_guest_pages, *uid);
 
-        AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
+        AS_LOCK_ENTER(as, RW_READER);
         seg = as_findseg(as, state->bt_map.um_guest_pages, 0);
         if ((seg == NULL) || ((uaddr + mmu_ptob(req->nr_segments)) >
             (seg->s_base + seg->s_size))) {
-                AS_LOCK_EXIT(as, &as->a_lock);
+                AS_LOCK_EXIT(as);
                 return (DDI_FAILURE);
         }
 
         /* if we are reading from disk, we are writing into memory */
         flags = 0;

@@ -1247,11 +1247,11 @@
                 gref[i] = req->seg[i].gref;
         }
         (void) segmf_add_grefs(seg, uaddr, flags, gref, req->nr_segments,
             domid);
 
-        AS_LOCK_EXIT(as, &as->a_lock);
+        AS_LOCK_EXIT(as);
 
         return (DDI_SUCCESS);
 }
 
 

@@ -1312,25 +1312,25 @@
         /* unmap the grefs for this request */
         if ((req->operation != BLKIF_OP_WRITE_BARRIER) &&
             (req->operation != BLKIF_OP_FLUSH_DISKCACHE) &&
             (req->nr_segments != 0)) {
                 uaddr = XPVTAP_GREF_REQADDR(state->bt_map.um_guest_pages, uid);
-                AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
+                AS_LOCK_ENTER(as, RW_READER);
                 seg = as_findseg(as, state->bt_map.um_guest_pages, 0);
                 if ((seg == NULL) || ((uaddr + mmu_ptob(req->nr_segments)) >
                     (seg->s_base + seg->s_size))) {
-                        AS_LOCK_EXIT(as, &as->a_lock);
+                        AS_LOCK_EXIT(as);
                         xpvtap_rs_free(state->bt_map.um_rs, uid);
                         return;
                 }
 
                 e = segmf_release_grefs(seg, uaddr, req->nr_segments);
                 if (e != 0) {
                         cmn_err(CE_WARN, "unable to release grefs");
                 }
 
-                AS_LOCK_EXIT(as, &as->a_lock);
+                AS_LOCK_EXIT(as);
         }
 
         /* free up the user ring id */
         xpvtap_rs_free(state->bt_map.um_rs, uid);
 }