This flag caused amaps to be allocated with additional spare slots, to
make extending them cheaper. However, the kernel never extends amaps,
so allocating spare slots is pointless. Also UVM_FLAG_AMAPPAD only
has an effect in combination with UVM_FLAG_OVERLAY. The only function
that used both flags was sys_obreak, but that function had the use of
UVM_FLAG_OVERLAY removed recently.
While there, kill the unused prototypes amap_flags and amap_refs.
They're defined as macros already.
ok?
Index: uvm/uvm_amap.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_amap.c,v
retrieving revision 1.63
diff -u -p -r1.63 uvm_amap.c
--- uvm/uvm_amap.c 27 Mar 2016 09:51:37 -0000 1.63
+++ uvm/uvm_amap.c 3 Apr 2016 14:00:29 -0000
@@ -65,7 +65,7 @@ static char amap_slot_pool_names[UVM_AMA
* local functions
*/
-static struct vm_amap *amap_alloc1(int, int, int);
+static struct vm_amap *amap_alloc1(int, int);
static __inline void amap_list_insert(struct vm_amap *);
static __inline void amap_list_remove(struct vm_amap *);
@@ -177,7 +177,7 @@ amap_init(void)
* init the overlay.
*/
static inline struct vm_amap *
-amap_alloc1(int slots, int padslots, int waitf)
+amap_alloc1(int slots, int waitf)
{
struct vm_amap *amap;
int totalslots;
@@ -187,7 +187,7 @@ amap_alloc1(int slots, int padslots, int
if (amap == NULL)
return(NULL);
- totalslots = slots + padslots;
+ totalslots = slots;
KASSERT(totalslots > 0);
if (totalslots > UVM_AMAP_CHUNK)
@@ -233,15 +233,14 @@ fail1:
* => reference count to new amap is set to one
*/
struct vm_amap *
-amap_alloc(vaddr_t sz, vaddr_t padsz, int waitf)
+amap_alloc(vaddr_t sz, int waitf)
{
struct vm_amap *amap;
- int slots, padslots;
+ int slots;
AMAP_B2SLOT(slots, sz); /* load slots */
- AMAP_B2SLOT(padslots, padsz);
- amap = amap_alloc1(slots, padslots, waitf);
+ amap = amap_alloc1(slots, waitf);
if (amap) {
memset(amap->am_anon, 0,
amap->am_maxslot * sizeof(struct vm_anon *));
@@ -361,7 +360,7 @@ amap_copy(struct vm_map *map, struct vm_
}
entry->aref.ar_pageoff = 0;
- entry->aref.ar_amap = amap_alloc(entry->end - entry->start, 0,
+ entry->aref.ar_amap = amap_alloc(entry->end - entry->start,
waitf);
if (entry->aref.ar_amap != NULL)
entry->etype &= ~UVM_ET_NEEDSCOPY;
@@ -381,7 +380,7 @@ amap_copy(struct vm_map *map, struct vm_
/* looks like we need to copy the map. */
AMAP_B2SLOT(slots, entry->end - entry->start);
- amap = amap_alloc1(slots, 0, waitf);
+ amap = amap_alloc1(slots, waitf);
if (amap == NULL)
return;
srcamap = entry->aref.ar_amap;
Index: uvm/uvm_amap.h
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_amap.h,v
retrieving revision 1.22
diff -u -p -r1.22 uvm_amap.h
--- uvm/uvm_amap.h 27 Mar 2016 09:51:37 -0000 1.22
+++ uvm/uvm_amap.h 3 Apr 2016 14:00:29 -0000
@@ -66,15 +66,13 @@ struct vm_amap;
void amap_add(struct vm_aref *, vaddr_t, struct vm_anon *,
boolean_t);
/* allocate a new amap */
-struct vm_amap *amap_alloc(vaddr_t, vaddr_t, int);
+struct vm_amap *amap_alloc(vaddr_t, int);
/* clear amap needs-copy flag */
void amap_copy(vm_map_t, vm_map_entry_t, int, boolean_t, vaddr_t,
vaddr_t);
/* resolve all COW faults now */
void amap_cow_now(vm_map_t, vm_map_entry_t);
/* get amap's flags */
-int amap_flags(struct vm_amap *);
- /* free amap */
void amap_free(struct vm_amap *);
/* init amap module (at boot time) */
void amap_init(void);
@@ -85,8 +83,6 @@ void amap_lookups(struct vm_aref *, vad
/* add a reference to an amap */
void amap_ref(struct vm_amap *, vaddr_t, vsize_t, int);
/* get number of references of amap */
-int amap_refs(struct vm_amap *);
- /* split reference to amap into two */
void amap_splitref(struct vm_aref *, struct vm_aref *, vaddr_t);
/* remove an anon from an amap */
void amap_unadd(struct vm_aref *, vaddr_t);
Index: uvm/uvm_extern.h
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_extern.h,v
retrieving revision 1.137
diff -u -p -r1.137 uvm_extern.h
--- uvm/uvm_extern.h 2 Dec 2015 09:50:46 -0000 1.137
+++ uvm/uvm_extern.h 3 Apr 2016 14:00:29 -0000
@@ -106,12 +106,11 @@ typedef int vm_prot_t;
#define UVM_FLAG_OVERLAY 0x0020000 /* establish overlay */
#define UVM_FLAG_NOMERGE 0x0040000 /* don't merge map entries */
#define UVM_FLAG_COPYONW 0x0080000 /* set copy_on_write flag */
-#define UVM_FLAG_AMAPPAD 0x0100000 /* for bss: pad amap to reduce malloc() */
-#define UVM_FLAG_TRYLOCK 0x0200000 /* fail if we can not lock map */
-#define UVM_FLAG_HOLE 0x0400000 /* no backend */
-#define UVM_FLAG_QUERY 0x0800000 /* do everything, except actual execution */
-#define UVM_FLAG_NOFAULT 0x1000000 /* don't fault */
-#define UVM_FLAG_UNMAP 0x2000000 /* unmap to make space */
+#define UVM_FLAG_TRYLOCK 0x0100000 /* fail if we can not lock map */
+#define UVM_FLAG_HOLE 0x0200000 /* no backend */
+#define UVM_FLAG_QUERY 0x0400000 /* do everything, except actual execution */
+#define UVM_FLAG_NOFAULT 0x0800000 /* don't fault */
+#define UVM_FLAG_UNMAP 0x1000000 /* unmap to make space */
/* macros to extract info */
Index: uvm/uvm_map.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_map.c,v
retrieving revision 1.210
diff -u -p -r1.210 uvm_map.c
--- uvm/uvm_map.c 27 Mar 2016 09:51:37 -0000 1.210
+++ uvm/uvm_map.c 3 Apr 2016 14:00:30 -0000
@@ -1084,9 +1084,7 @@ uvm_mapanon(struct vm_map *map, vaddr_t
if (flags & UVM_FLAG_OVERLAY) {
KERNEL_LOCK();
entry->aref.ar_pageoff = 0;
- entry->aref.ar_amap = amap_alloc(sz,
- ptoa(flags & UVM_FLAG_AMAPPAD ? UVM_AMAP_CHUNK : 0),
- M_WAITOK);
+ entry->aref.ar_amap = amap_alloc(sz, M_WAITOK);
KERNEL_UNLOCK();
}
@@ -1342,9 +1340,7 @@ uvm_map(struct vm_map *map, vaddr_t *add
}
if (flags & UVM_FLAG_OVERLAY) {
entry->aref.ar_pageoff = 0;
- entry->aref.ar_amap = amap_alloc(sz,
- ptoa(flags & UVM_FLAG_AMAPPAD ? UVM_AMAP_CHUNK : 0),
- M_WAITOK);
+ entry->aref.ar_amap = amap_alloc(sz, M_WAITOK);
}
/* Update map and process statistics. */
Index: uvm/uvm_unix.c
===================================================================
RCS file: /cvs/src/sys/uvm/uvm_unix.c,v
retrieving revision 1.57
diff -u -p -r1.57 uvm_unix.c
--- uvm/uvm_unix.c 15 Mar 2016 18:16:47 -0000 1.57
+++ uvm/uvm_unix.c 3 Apr 2016 14:00:30 -0000
@@ -86,8 +86,7 @@ sys_obreak(struct proc *p, void *v, regi
UVM_UNKNOWN_OFFSET, 0,
UVM_MAPFLAG(PROT_READ | PROT_WRITE,
PROT_READ | PROT_WRITE | PROT_EXEC, MAP_INHERIT_COPY,
- MADV_NORMAL, UVM_FLAG_AMAPPAD|UVM_FLAG_FIXED|
- UVM_FLAG_COPYONW));
+ MADV_NORMAL, UVM_FLAG_FIXED|UVM_FLAG_COPYONW));
if (error) {
uprintf("sbrk: grow %ld failed, error = %d\n",
new - old, error);