Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F176969009
D16620.1793671615.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None
D16620.1793671615.diff
View Options
Index: amd64/include/vmparam.h
===================================================================
--- amd64/include/vmparam.h
+++ amd64/include/vmparam.h
@@ -97,9 +97,10 @@
* the pool from which physical pages for page tables and small UMA
* objects are allocated.
*/
-#define VM_NFREEPOOL 2
+#define VM_NFREEPOOL 3
#define VM_FREEPOOL_DEFAULT 0
#define VM_FREEPOOL_DIRECT 1
+#define VM_FREEPOOL_NOFREE 2
/*
* Create up to three free page lists: VM_FREELIST_DMA32 is for physical pages
Index: sys/malloc.h
===================================================================
--- sys/malloc.h
+++ sys/malloc.h
@@ -60,6 +60,7 @@
#define M_FIRSTFIT 0x1000 /* Only for vmem, fast fit. */
#define M_BESTFIT 0x2000 /* Only for vmem, low fragmentation. */
#define M_EXEC 0x4000 /* allocate executable space. */
+#define M_N0FREE 0x8000
#define M_MAGIC 877983977 /* time when first defined :-) */
Index: vm/uma_core.c
===================================================================
--- vm/uma_core.c
+++ vm/uma_core.c
@@ -1039,6 +1039,9 @@
if (keg->uk_flags & UMA_ZONE_NODUMP)
wait |= M_NODUMP;
+ if (keg->uk_flags & UMA_ZONE_NOFREE)
+ wait |= M_N0FREE;
+
/* zone is passed for legacy reasons. */
mem = allocf(zone, size, domain, &flags, wait);
if (mem == NULL) {
Index: vm/vm_page.h
===================================================================
--- vm/vm_page.h
+++ vm/vm_page.h
@@ -464,6 +464,7 @@
#define VM_ALLOC_ZERO 0x0040 /* (acfgp) Allocate a prezeroed page */
#define VM_ALLOC_NOOBJ 0x0100 /* (acg) No associated object */
#define VM_ALLOC_NOBUSY 0x0200 /* (acgp) Do not excl busy the page */
+#define VM_ALLOC_NOFREE 0x0400
#define VM_ALLOC_IGN_SBUSY 0x1000 /* (gp) Ignore shared busy flag */
#define VM_ALLOC_NODUMP 0x2000 /* (ag) don't include in dump */
#define VM_ALLOC_SBUSY 0x4000 /* (acgp) Shared busy the page */
@@ -486,6 +487,8 @@
pflags |= VM_ALLOC_ZERO;
if ((malloc_flags & M_NODUMP) != 0)
pflags |= VM_ALLOC_NODUMP;
+ if ((malloc_flags & M_N0FREE) != 0)
+ pflags |= VM_ALLOC_NOFREE;
if ((malloc_flags & M_NOWAIT))
pflags |= VM_ALLOC_NOWAIT;
if ((malloc_flags & M_WAITOK))
Index: vm/vm_page.c
===================================================================
--- vm/vm_page.c
+++ vm/vm_page.c
@@ -1850,7 +1850,7 @@
*/
vm_domain_free_lock(vmd);
m = vm_phys_alloc_pages(domain, object != NULL ?
- VM_FREEPOOL_DEFAULT : VM_FREEPOOL_DIRECT, 0);
+ VM_FREEPOOL_DEFAULT : ((req & VM_ALLOC_NOFREE) ? VM_FREEPOOL_NOFREE : VM_FREEPOOL_DIRECT), 0);
vm_domain_free_unlock(vmd);
if (m == NULL) {
vm_domain_freecnt_inc(vmd, 1);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Nov 3, 2:06 AM (12 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41335274
Default Alt Text
D16620.1793671615.diff (2 KB)
Attached To
Mode
D16620: Segregate _NOFREE allocations
Attached
Detach File
Event Timeline