Print this page
remove whole-process swapping
Long before Unix supported paging, it used process swapping to reclaim
memory.  The code is there and in theory it runs when we get *extremely* low
on memory.  In practice, it never runs since the definition of low-on-memory
is antiquated. (XXX: define what antiquated means)
You can check the number of swapout/swapin events with kstats:
$ kstat -p ::vm:swapin ::vm:swapout
remove xhat
The xhat infrastructure was added to support hardware such as the zulu
graphics card - hardware which had on-board MMUs.  The VM used the xhat code
to keep the CPU's and Zulu's page tables in-sync.  Since the only xhat user
was zulu (which is gone), we can safely remove it simplifying the whole VM
subsystem.
Assorted notes:
- AS_BUSY flag was used solely by xhat

@@ -123,38 +123,33 @@
         uchar_t a_updatedir;    /* mappings changed, rebuild a_objectdir */
         timespec_t a_updatetime;        /* time when mappings last changed */
         vnode_t **a_objectdir;  /* object directory (procfs) */
         size_t  a_sizedir;      /* size of object directory */
         struct as_callback *a_callbacks; /* callback list */
-        void *a_xhat;           /* list of xhat providers */
         proc_t  *a_proc;        /* back pointer to proc */
         size_t  a_resvsize;     /* size of reserved part of address space */
 };
 
 #define AS_PAGLCK               0x80
 #define AS_CLAIMGAP             0x40
 #define AS_UNMAPWAIT            0x20
 #define AS_NEEDSPURGE           0x10    /* mostly for seg_nf, see as_purge() */
 #define AS_NOUNMAPWAIT          0x02
-#define AS_BUSY                 0x01    /* needed by XHAT framework */
 
 #define AS_ISPGLCK(as)          ((as)->a_flags & AS_PAGLCK)
 #define AS_ISCLAIMGAP(as)       ((as)->a_flags & AS_CLAIMGAP)
 #define AS_ISUNMAPWAIT(as)      ((as)->a_flags & AS_UNMAPWAIT)
-#define AS_ISBUSY(as)           ((as)->a_flags & AS_BUSY)
 #define AS_ISNOUNMAPWAIT(as)    ((as)->a_flags & AS_NOUNMAPWAIT)
 
 #define AS_SETPGLCK(as)         ((as)->a_flags |= AS_PAGLCK)
 #define AS_SETCLAIMGAP(as)      ((as)->a_flags |= AS_CLAIMGAP)
 #define AS_SETUNMAPWAIT(as)     ((as)->a_flags |= AS_UNMAPWAIT)
-#define AS_SETBUSY(as)          ((as)->a_flags |= AS_BUSY)
 #define AS_SETNOUNMAPWAIT(as)   ((as)->a_flags |= AS_NOUNMAPWAIT)
 
 #define AS_CLRPGLCK(as)         ((as)->a_flags &= ~AS_PAGLCK)
 #define AS_CLRCLAIMGAP(as)      ((as)->a_flags &= ~AS_CLAIMGAP)
 #define AS_CLRUNMAPWAIT(as)     ((as)->a_flags &= ~AS_UNMAPWAIT)
-#define AS_CLRBUSY(as)          ((as)->a_flags &= ~AS_BUSY)
 #define AS_CLRNOUNMAPWAIT(as)   ((as)->a_flags &= ~AS_NOUNMAPWAIT)
 
 #define AS_TYPE_64BIT(as)       \
             (((as)->a_userlimit > (caddr_t)UINT32_MAX) ? 1 : 0)
 

@@ -286,11 +281,10 @@
 int     as_gap_aligned(struct as *as, size_t minlen, caddr_t *basep,
             size_t *lenp, uint_t flags, caddr_t addr, size_t align,
             size_t redzone, size_t off);
 
 int     as_memory(struct as *as, caddr_t *basep, size_t *lenp);
-size_t  as_swapout(struct as *as);
 int     as_incore(struct as *as, caddr_t addr, size_t size, char *vec,
                 size_t *sizep);
 int     as_ctl(struct as *as, caddr_t addr, size_t size, int func, int attr,
                 uintptr_t arg, ulong_t *lock_map, size_t pos);
 int     as_pagelock(struct as *as, struct page ***ppp, caddr_t addr,