From owner-p4-projects@FreeBSD.ORG Thu Aug 16 22:23:25 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DE2F616A41A; Thu, 16 Aug 2007 22:23:24 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F8C416A418 for ; Thu, 16 Aug 2007 22:23:24 +0000 (UTC) (envelope-from jbr@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 8C9CD13C45D for ; Thu, 16 Aug 2007 22:23:24 +0000 (UTC) (envelope-from jbr@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l7GMNOHL033304 for ; Thu, 16 Aug 2007 22:23:24 GMT (envelope-from jbr@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l7GMNO8K033300 for perforce@freebsd.org; Thu, 16 Aug 2007 22:23:24 GMT (envelope-from jbr@FreeBSD.org) Date: Thu, 16 Aug 2007 22:23:24 GMT Message-Id: <200708162223.l7GMNO8K033300@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jbr@FreeBSD.org using -f From: Jesper Brix Rosenkilde To: Perforce Change Reviews Cc: Subject: PERFORCE change 125242 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Aug 2007 22:23:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=125242 Change 125242 by jbr@jbr_bob on 2007/08/16 22:22:42 Clean up Affected files ... .. //depot/projects/soc2007/jbr-syscall/src/sys/kern/kern_exec.c#15 edit .. //depot/projects/soc2007/jbr-syscall/src/sys/sys/proc.h#5 edit .. //depot/projects/soc2007/jbr-syscall/src/sys/vm/vm_map.c#10 edit .. //depot/projects/soc2007/jbr-syscall/src/sys/vm/vm_map.h#6 edit Differences ... ==== //depot/projects/soc2007/jbr-syscall/src/sys/kern/kern_exec.c#15 (text+ko) ==== @@ -789,9 +789,6 @@ if (imgp->firstpage != NULL) exec_unmap_first_page(imgp); - if (p->p_kernsysshm != NULL) - exec_unmap_sysshm(imgp); - if (imgp->vp != NULL) { NDFREE(ndp, NDF_ONLY_PNBUF); vput(imgp->vp); @@ -914,16 +911,11 @@ struct image_params *imgp; { int error; - struct proc *p = imgp->proc; vm_map_t map = &imgp->proc->p_vmspace->vm_map; vm_offset_t *addr = &imgp->proc->p_usrsysshm; - struct sf_buf *kern_buf = p->p_kernsysshm;; int test = 42; - if (p->p_kernsysshm != NULL) - exec_unmap_sysshm(imgp); - - error = vm_map_sysshm(map, addr, kern_buf, 42); + error = vm_map_sysshm(map, addr, 42); copyout((caddr_t) &test, (caddr_t) *addr, sizeof(int)); ==== //depot/projects/soc2007/jbr-syscall/src/sys/sys/proc.h#5 (text+ko) ==== @@ -577,7 +577,6 @@ struct label *p_label; /* (*) Proc (not subject) MAC label. */ struct p_sched *p_sched; /* (*) Scheduler-specific data. */ vm_offset_t p_usrsysshm; - struct sf_buf *p_kernsysshm; STAILQ_HEAD(, ktr_request) p_ktr; /* (o) KTR event queue. */ LIST_HEAD(, mqueue_notifier) p_mqnotifier; /* (c) mqueue notifiers.*/ }; ==== //depot/projects/soc2007/jbr-syscall/src/sys/vm/vm_map.c#10 (text+ko) ==== @@ -2988,13 +2988,10 @@ * process. */ int -vm_map_sysshm(vm_map_t map, vm_offset_t *usr_addr, struct sf_buf *kern_buf, - vm_size_t size) +vm_map_sysshm(vm_map_t map, vm_offset_t *usr_addr, vm_size_t size) { - vm_object_t object; - vm_page_t sysshm_page; + size = round_page(size); - size = round_page(size); PROC_LOCK(curthread->td_proc); *usr_addr = round_page((vm_offset_t) @@ -3002,38 +2999,9 @@ lim_cur(curthread->td_proc, RLIMIT_DATA); PROC_UNLOCK(curthread->td_proc); - object = vm_object_allocate(OBJT_DEFAULT, 1); - if (!object) - panic("vm_map_sysshm: cannot allocate object"); - - VM_OBJECT_LOCK(object); - sysshm_page = vm_page_alloc(object, 0, VM_ALLOC_NORMAL); - if (!sysshm_page) - panic("vm_page_alloc: cannot allocate sysshm_page"); - - sysshm_page->valid = VM_PAGE_BITS_ALL; - VM_OBJECT_UNLOCK(object); - - if (vm_map_findspace(map, *usr_addr, size, usr_addr)) - return (1); - - if (vm_map_insert(map, object, 0, *usr_addr, *usr_addr + size, - VM_PROT_RW, VM_PROT_RW, 0)) - panic("vm_map_sysshm: cannot insert object into vm_map."); - - pmap_enter(map->pmap, *usr_addr, sysshm_page, VM_PROT_RW, TRUE); - - VM_OBJECT_LOCK(object); - vm_page_lock_queues(); - vm_page_wire(sysshm_page); - vm_page_activate(sysshm_page); - vm_page_unlock_queues(); - vm_page_wakeup(sysshm_page); - VM_OBJECT_UNLOCK(object); - - kern_buf = sf_buf_alloc(sysshm_page, SFB_NOWAIT); - if (!kern_buf) - return 1; + if (vm_map_find(map, NULL, *usr_addr, usr_addr, size, TRUE, VM_PROT_RW, + VM_PROT_RW, 0)) + panic("vm_map_sysshm: cannot allocated sysshm."); return (0); } ==== //depot/projects/soc2007/jbr-syscall/src/sys/vm/vm_map.h#6 (text+ko) ==== @@ -354,7 +354,7 @@ void vm_map_simplify_entry (vm_map_t, vm_map_entry_t); void vm_init2 (void); int vm_map_stack (vm_map_t, vm_offset_t, vm_size_t, vm_prot_t, vm_prot_t, int); -int vm_map_sysshm(vm_map_t, vm_offset_t *, struct sf_buf *, vm_size_t); +int vm_map_sysshm(vm_map_t, vm_offset_t *, vm_size_t); int vm_map_growstack (struct proc *p, vm_offset_t addr); int vm_map_unwire(vm_map_t map, vm_offset_t start, vm_offset_t end, int flags);