Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/uvm/uvm.h,v rcsdiff: /ftp/cvs/cvsroot/src/sys/uvm/uvm.h,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.68.16.1 retrieving revision 1.69 diff -u -p -r1.68.16.1 -r1.69 --- src/sys/uvm/uvm.h 2020/04/08 14:09:04 1.68.16.1 +++ src/sys/uvm/uvm.h 2019/12/01 14:40:31 1.69 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm.h,v 1.68.16.1 2020/04/08 14:09:04 martin Exp $ */ +/* $NetBSD: uvm.h,v 1.69 2019/12/01 14:40:31 ad Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -71,28 +71,21 @@ #include struct workqueue; -struct pgflcache; /* * per-cpu data */ struct uvm_cpu { - /* allocator */ - struct pgflcache *pgflcache[VM_NFREELIST];/* cpu-local cached pages */ - void *pgflcachemem; /* pointer to allocated mem */ - size_t pgflcachememsz; /* size of allocated memory */ - u_int pgflcolor; /* next color to allocate */ - u_int pgflbucket; /* where to send our pages */ - - /* entropy */ - krndsource_t rs; /* entropy source */ - - /* uvmpdpol: queue of intended page status changes. */ - struct vm_page **pdq; /* queue entries */ - u_int pdqhead; /* current queue head */ - u_int pdqtail; /* maximum number entries */ - int pdqtime; /* last time queue cleared */ + struct pgfreelist page_free[VM_NFREELIST]; /* unallocated pages */ + int page_free_nextcolor; /* next color to allocate from */ + int page_idlezero_next; /* which color to zero next */ + bool page_idle_zero; /* TRUE if we should try to zero + pages in the idle loop */ + int pages[PGFL_NQUEUES]; /* total of pages in page_free */ + u_int emap_gen; /* emap generation number */ + + krndsource_t rs; /* entropy source */ }; /* @@ -105,13 +98,20 @@ struct uvm { /* vm_page queues */ struct pgfreelist page_free[VM_NFREELIST]; /* unallocated pages */ - u_int bucketcount; - bool page_init_done; /* true if uvm_page_init() finished */ - bool numa_alloc; /* use NUMA page allocation strategy */ + bool page_init_done; /* TRUE if uvm_page_init() finished */ /* page daemon trigger */ int pagedaemon; /* daemon sleeps on this */ struct lwp *pagedaemon_lwp; /* daemon's lid */ + + /* aiodone daemon */ + struct workqueue *aiodone_queue; + + /* aio_done is locked by uvm.pagedaemon_lock and splbio! */ + TAILQ_HEAD(, buf) aio_done; /* done async i/o reqs */ + + /* per-cpu data */ + struct uvm_cpu *cpus[MAXCPUS]; }; /* @@ -123,6 +123,8 @@ extern struct uvm_object *uvm_kernel_obj * locks (made globals for lockstat). */ +extern kmutex_t uvm_pageqlock; /* lock for active/inactive page q */ +extern kmutex_t uvm_fpageqlock; /* lock for free page q */ extern kmutex_t uvm_kentry_lock; #endif /* _KERNEL */