Print this page
patch as-lock-macro-simplification

@@ -366,11 +366,11 @@
 
         /*
          * Since the address space is "write" locked, we
          * don't need the segment lock to protect "segdev" data.
          */
-        ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as));
 
         hat_map(seg->s_as->a_hat, seg->s_base, seg->s_size, HAT_MAP);
 
         sdp = sdp_alloc();
 

@@ -472,11 +472,11 @@
 
         /*
          * Since the address space is "write" locked, we
          * don't need the segment lock to protect "segdev" data.
          */
-        ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as));
 
         newsdp = sdp_alloc();
 
         newseg->s_ops = seg->s_ops;
         newseg->s_data = (void *)newsdp;

@@ -644,11 +644,11 @@
 
         /*
          * Since the address space is "write" locked, we
          * don't need the segment lock to protect "segdev" data.
          */
-        ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as));
 
         if ((sz = sdp->softlockcnt) > 0) {
                 /*
                  * Fail the unmap if pages are SOFTLOCKed through this mapping.
                  * softlockcnt is protected from change by the as write lock.

@@ -1133,11 +1133,11 @@
 
         /*
          * Since the address space is "write" locked, we
          * don't need the segment lock to protect "segdev" data.
          */
-        ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_WRITE_HELD(seg->s_as));
 
         while (dhp != NULL)
                 dhp = devmap_handle_unmap(dhp);
 
         VN_RELE(sdp->vp);

@@ -1615,11 +1615,11 @@
             (void *)dhp_head, (void *)seg, (void *)addr, len, type);
         DEBUGF(7, (CE_CONT, "segdev_fault: dhp_head %p seg %p "
             "addr %p len %lx type %x\n",
             (void *)dhp_head, (void *)seg, (void *)addr, len, type));
 
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         /* Handle non-devmap case */
         if (dhp_head == NULL)
                 return (segdev_faultpages(hat, seg, addr, len, type, rw, NULL));
 

@@ -2055,11 +2055,11 @@
 static faultcode_t
 segdev_faulta(struct seg *seg, caddr_t addr)
 {
         TRACE_2(TR_FAC_DEVMAP, TR_DEVMAP_FAULTA,
             "segdev_faulta: seg=%p addr=%p", (void *)seg, (void *)addr);
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         return (0);
 }
 
 static int

@@ -2073,11 +2073,11 @@
         size_t mlen, sz;
 
         TRACE_4(TR_FAC_DEVMAP, TR_DEVMAP_SETPROT,
             "segdev_setprot:start seg=%p addr=%p len=%lx prot=%x",
             (void *)seg, (void *)addr, len, prot);
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         if ((sz = sdp->softlockcnt) > 0 && dhp_head != NULL) {
                 /*
                  * Fail the setprot if pages are SOFTLOCKed through this
                  * mapping.

@@ -2196,11 +2196,11 @@
         struct vpage *vp, *evp;
 
         TRACE_4(TR_FAC_DEVMAP, TR_DEVMAP_CHECKPROT,
             "segdev_checkprot:start seg=%p addr=%p len=%lx prot=%x",
             (void *)seg, (void *)addr, len, prot);
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         /*
          * If segment protection can be used, simply check against them
          */
         rw_enter(&sdp->lock, RW_READER);

@@ -2233,11 +2233,11 @@
         size_t pgno;
 
         TRACE_4(TR_FAC_DEVMAP, TR_DEVMAP_GETPROT,
             "segdev_getprot:start seg=%p addr=%p len=%lx protv=%p",
             (void *)seg, (void *)addr, len, (void *)protv);
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         pgno = seg_page(seg, addr + len) - seg_page(seg, addr) + 1;
         if (pgno != 0) {
                 rw_enter(&sdp->lock, RW_READER);
                 if (sdp->pageprot == 0) {

@@ -2264,11 +2264,11 @@
         register struct segdev_data *sdp = (struct segdev_data *)seg->s_data;
 
         TRACE_2(TR_FAC_DEVMAP, TR_DEVMAP_GETOFFSET,
             "segdev_getoffset:start seg=%p addr=%p", (void *)seg, (void *)addr);
 
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         return ((u_offset_t)sdp->offset + (addr - seg->s_base));
 }
 
 /*ARGSUSED*/

@@ -2278,11 +2278,11 @@
         register struct segdev_data *sdp = (struct segdev_data *)seg->s_data;
 
         TRACE_2(TR_FAC_DEVMAP, TR_DEVMAP_GETTYPE,
             "segdev_gettype:start seg=%p addr=%p", (void *)seg, (void *)addr);
 
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         return (sdp->type);
 }
 
 

@@ -2293,11 +2293,11 @@
         register struct segdev_data *sdp = (struct segdev_data *)seg->s_data;
 
         TRACE_2(TR_FAC_DEVMAP, TR_DEVMAP_GETVP,
             "segdev_getvp:start seg=%p addr=%p", (void *)seg, (void *)addr);
 
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         /*
          * Note that this vp is the common_vp of the device, where the
          * pages are hung ..
          */

@@ -2323,11 +2323,11 @@
 static int
 segdev_sync(struct seg *seg, caddr_t addr, size_t len, int attr, uint_t flags)
 {
         TRACE_0(TR_FAC_DEVMAP, TR_DEVMAP_SYNC, "segdev_sync:start");
 
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         return (0);
 }
 
 /*

@@ -2339,11 +2339,11 @@
 {
         size_t v = 0;
 
         TRACE_0(TR_FAC_DEVMAP, TR_DEVMAP_INCORE, "segdev_incore:start");
 
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         for (len = (len + PAGEOFFSET) & PAGEMASK; len; len -= PAGESIZE,
             v += PAGESIZE)
                 *vec++ = 1;
         return (v);

@@ -2358,11 +2358,11 @@
 segdev_lockop(struct seg *seg, caddr_t addr,
     size_t len, int attr, int op, ulong_t *lockmap, size_t pos)
 {
         TRACE_0(TR_FAC_DEVMAP, TR_DEVMAP_LOCKOP, "segdev_lockop:start");
 
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         return (0);
 }
 
 /*

@@ -2373,11 +2373,11 @@
 static int
 segdev_advise(struct seg *seg, caddr_t addr, size_t len, uint_t behav)
 {
         TRACE_0(TR_FAC_DEVMAP, TR_DEVMAP_ADVISE, "segdev_advise:start");
 
-        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as, &seg->s_as->a_lock));
+        ASSERT(seg->s_as && AS_LOCK_HELD(seg->s_as));
 
         return (0);
 }
 
 /*

@@ -3078,11 +3078,11 @@
         /*
          *      Hat layer only supports devload to process' context for which
          *      the as lock is held. Verify here and return error if drivers
          *      inadvertently call devmap_load on a wrong devmap handle.
          */
-        if ((asp != &kas) && !AS_LOCK_HELD(asp, &asp->a_lock))
+        if ((asp != &kas) && !AS_LOCK_HELD(asp))
                 return (FC_MAKE_ERR(EINVAL));
 
         soff = (ssize_t)(offset - dhp->dh_uoff);
         soff = round_down_p2(soff, PAGESIZE);
         if (soff < 0 || soff >= dhp->dh_len)