procfs_map.c (77799) | procfs_map.c (79224) |
---|---|
1/* 2 * Copyright (c) 1993 Jan-Simon Pendry 3 * Copyright (c) 1993 4 * The Regents of the University of California. All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * Jan-Simon Pendry. 8 * --- 22 unchanged lines hidden (view full) --- 31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35 * SUCH DAMAGE. 36 * 37 * @(#)procfs_status.c 8.3 (Berkeley) 2/17/94 38 * | 1/* 2 * Copyright (c) 1993 Jan-Simon Pendry 3 * Copyright (c) 1993 4 * The Regents of the University of California. All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * Jan-Simon Pendry. 8 * --- 22 unchanged lines hidden (view full) --- 31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35 * SUCH DAMAGE. 36 * 37 * @(#)procfs_status.c 8.3 (Berkeley) 2/17/94 38 * |
39 * $FreeBSD: head/sys/fs/procfs/procfs_map.c 77799 2001-06-06 04:13:11Z tanimura $ | 39 * $FreeBSD: head/sys/fs/procfs/procfs_map.c 79224 2001-07-04 16:20:28Z dillon $ |
40 */ 41 42#include <sys/param.h> 43#include <sys/systm.h> 44#include <sys/lock.h> 45#include <sys/mutex.h> 46#include <sys/proc.h> 47#include <sys/vnode.h> --- 28 unchanged lines hidden (view full) --- 76{ 77 int len; 78 int error; 79 vm_map_t map = &p->p_vmspace->vm_map; 80 pmap_t pmap = vmspace_pmap(p->p_vmspace); 81 vm_map_entry_t entry; 82 char mebuffer[MEBUFFERSIZE]; 83 | 40 */ 41 42#include <sys/param.h> 43#include <sys/systm.h> 44#include <sys/lock.h> 45#include <sys/mutex.h> 46#include <sys/proc.h> 47#include <sys/vnode.h> --- 28 unchanged lines hidden (view full) --- 76{ 77 int len; 78 int error; 79 vm_map_t map = &p->p_vmspace->vm_map; 80 pmap_t pmap = vmspace_pmap(p->p_vmspace); 81 vm_map_entry_t entry; 82 char mebuffer[MEBUFFERSIZE]; 83 |
84 GIANT_REQUIRED; 85 |
|
84 if (uio->uio_rw != UIO_READ) 85 return (EOPNOTSUPP); 86 87 if (uio->uio_offset != 0) 88 return (0); 89 | 86 if (uio->uio_rw != UIO_READ) 87 return (EOPNOTSUPP); 88 89 if (uio->uio_offset != 0) 90 return (0); 91 |
90 mtx_lock(&vm_mtx); 91 | |
92 error = 0; 93 if (map != &curproc->p_vmspace->vm_map) 94 vm_map_lock_read(map); 95 for (entry = map->header.next; 96 ((uio->uio_resid > 0) && (entry != &map->header)); 97 entry = entry->next) { 98 vm_object_t obj, tobj, lobj; 99 int ref_count, shadow_count, flags; --- 66 unchanged lines hidden (view full) --- 166 (entry->eflags & MAP_ENTRY_NEEDS_COPY)?"NC":"NNC", 167 type); 168 169 len = strlen(mebuffer); 170 if (len > uio->uio_resid) { 171 error = EFBIG; 172 break; 173 } | 92 error = 0; 93 if (map != &curproc->p_vmspace->vm_map) 94 vm_map_lock_read(map); 95 for (entry = map->header.next; 96 ((uio->uio_resid > 0) && (entry != &map->header)); 97 entry = entry->next) { 98 vm_object_t obj, tobj, lobj; 99 int ref_count, shadow_count, flags; --- 66 unchanged lines hidden (view full) --- 166 (entry->eflags & MAP_ENTRY_NEEDS_COPY)?"NC":"NNC", 167 type); 168 169 len = strlen(mebuffer); 170 if (len > uio->uio_resid) { 171 error = EFBIG; 172 break; 173 } |
174 mtx_unlock(&vm_mtx); | |
175 error = uiomove(mebuffer, len, uio); | 174 error = uiomove(mebuffer, len, uio); |
176 mtx_lock(&vm_mtx); | |
177 if (error) 178 break; 179 } 180 if (map != &curproc->p_vmspace->vm_map) 181 vm_map_unlock_read(map); 182 | 175 if (error) 176 break; 177 } 178 if (map != &curproc->p_vmspace->vm_map) 179 vm_map_unlock_read(map); 180 |
183 mtx_unlock(&vm_mtx); 184 | |
185 return error; 186} 187 188int 189procfs_validmap(p) 190 struct proc *p; 191{ 192 return ((p->p_flag & P_SYSTEM) == 0); 193} | 181 return error; 182} 183 184int 185procfs_validmap(p) 186 struct proc *p; 187{ 188 return ((p->p_flag & P_SYSTEM) == 0); 189} |