From 8775db6f5078cb51ea392ebc152f135b905dc956 Mon Sep 17 00:00:00 2001 From: Marcel Moolenaar Date: Sat, 1 Mar 2008 22:54:42 +0000 Subject: [PATCH] Make the vm_pmap field of struct vmspace the last field in the structure. This allows per-CPU variations of struct pmap on a single architecture without affecting the machine-independent fields. As such, the PMAP variations don't affect the ABI. They become part of it. --- UPDATING | 8 ++++++++ sys/vm/vm_map.h | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/UPDATING b/UPDATING index 5e9d0e93af0..9066d25ff6e 100644 --- a/UPDATING +++ b/UPDATING @@ -22,6 +22,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW: to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20080301: + The layout of struct vmspace has changed. This affects libkvm + and any executables that link against libkvm and use the + kvm_getprocs() function. In particular, but not exclusively, + it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1). + The effects are minimal, but it's advisable to upgrade world + nonetheless. + 20080229: The latest em driver no longer has support in it for the 82575 adapter, this is now moved to the igb driver. The diff --git a/sys/vm/vm_map.h b/sys/vm/vm_map.h index 1d3d90dc94b..28479e3b33f 100644 --- a/sys/vm/vm_map.h +++ b/sys/vm/vm_map.h @@ -233,7 +233,6 @@ vm_map_modflags(vm_map_t map, vm_flags_t set, vm_flags_t clear) */ struct vmspace { struct vm_map vm_map; /* VM address map */ - struct pmap vm_pmap; /* private physical map */ struct shmmap_state *vm_shm; /* SYS5 shared memory private data XXX */ segsz_t vm_swrss; /* resident set size before last swap */ segsz_t vm_tsize; /* text size (pages) XXX */ @@ -243,6 +242,12 @@ struct vmspace { caddr_t vm_daddr; /* (c) user virtual address of data */ caddr_t vm_maxsaddr; /* user VA at max stack growth */ int vm_refcnt; /* number of references */ + /* + * Keep the PMAP last, so that CPU-specific variations of that + * structure on a single architecture don't result in offset + * variations of the machine-independent fields in the vmspace. + */ + struct pmap vm_pmap; /* private physical map */ }; #ifdef _KERNEL -- 2.45.0