From owner-p4-projects@FreeBSD.ORG Wed Aug 8 20:59:08 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1C27916A41A; Wed, 8 Aug 2007 20:59:08 +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 C582116A417 for ; Wed, 8 Aug 2007 20:59:07 +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 B8B7713C483 for ; Wed, 8 Aug 2007 20:59:07 +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 l78Kx7bs027824 for ; Wed, 8 Aug 2007 20:59:07 GMT (envelope-from jbr@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l78Kx7jQ027821 for perforce@freebsd.org; Wed, 8 Aug 2007 20:59:07 GMT (envelope-from jbr@FreeBSD.org) Date: Wed, 8 Aug 2007 20:59:07 GMT Message-Id: <200708082059.l78Kx7jQ027821@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 124925 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: Wed, 08 Aug 2007 20:59:08 -0000 http://perforce.freebsd.org/chv.cgi?CH=124925 Change 124925 by jbr@jbr_bob on 2007/08/08 20:58:34 fixed sysclt Affected files ... .. //depot/projects/soc2007/jbr-syscall/src/sys/kern/kern_exec.c#8 edit .. //depot/projects/soc2007/jbr-syscall/src/sys/sys/sysctl.h#3 edit .. //depot/projects/soc2007/jbr-syscall/src/sys/vm/vm_map.c#5 edit .. //depot/projects/soc2007/jbr-syscall/src/sys/vm/vm_map.h#4 edit Differences ... ==== //depot/projects/soc2007/jbr-syscall/src/sys/kern/kern_exec.c#8 (text+ko) ==== @@ -100,7 +100,7 @@ SYSCTL_PROC(_kern, KERN_USRSTACK, usrstack, CTLTYPE_ULONG|CTLFLAG_RD, NULL, 0, sysctl_kern_usrstack, "LU", ""); -SYSCTL_PROC(_kern, KERN_USRSYSSHM, usrsysshm, CTLTYPE_ULONG|CTLFLAG_RD, +SYSCTL_PROC(_kern, OID_AUTO, usrsysshm, CTLTYPE_ULONG|CTLFLAG_RD, NULL, 0, sysctl_kern_usrsysshm, "LU", ""); SYSCTL_PROC(_kern, OID_AUTO, stackprot, CTLTYPE_INT|CTLFLAG_RD, @@ -902,11 +902,6 @@ } } -struct test { - unsigned int pid; - char proctitle[256]; -}; - /* * Destroy old address space, and allocate a new stack * The new stack is only SGROWSIZ large because it is grown @@ -924,8 +919,6 @@ vm_map_t map; u_long ssiz; - struct test test_data = {42, "Humppa!"}; - imgp->vmspace_destroyed = 1; imgp->sysent = sv; @@ -949,15 +942,6 @@ map = &vmspace->vm_map; } - sv->sv_sysshm = sv->sv_minuser; - - /* Allocate memory shared between process and kernel */ - error = vm_map_sysshm(map, sv->sv_sysshm, sizeof(struct test)); - if (error) - return (error); - - copyout(&test_data, (void *) sv->sv_sysshm, sizeof(struct test)); - /* Allocate a new stack */ if (sv->sv_maxssiz != NULL) ssiz = *sv->sv_maxssiz; @@ -985,6 +969,11 @@ vmspace->vm_ssize = sgrowsiz >> PAGE_SHIFT; vmspace->vm_maxsaddr = (char *)sv->sv_usrstack - ssiz; + /* Allocate memory shared between process and kernel */ + error = vm_map_sysshm(map, &(sv->sv_sysshm), 42); + if (error) + return (error); + return (0); } ==== //depot/projects/soc2007/jbr-syscall/src/sys/sys/sysctl.h#3 (text+ko) ==== @@ -393,7 +393,6 @@ #define KERN_HOSTUUID 36 /* string: host UUID identifier */ #define KERN_ARND 37 /* int: from arc4rand() */ #define KERN_MAXID 38 /* number of valid kern ids */ -#define KERN_USRSYSSHM 39 /* int: address of sysshm page */ #define CTL_KERN_NAMES { \ { 0, 0 }, \ @@ -432,7 +431,6 @@ { "logsigexit", CTLTYPE_INT }, \ { "iov_max", CTLTYPE_INT }, \ { "hostuuid", CTLTYPE_STRING }, \ - { "usrsysshm", CTLTYPE_INT }, \ } /* ==== //depot/projects/soc2007/jbr-syscall/src/sys/vm/vm_map.c#5 (text+ko) ==== @@ -2987,49 +2987,18 @@ * process. */ int -vm_map_sysshm(vm_map_t map, vm_offset_t addr, vm_size_t size) +vm_map_sysshm(vm_map_t map, vm_offset_t *addr, vm_size_t size) { int error = 0; - vm_offset_t osize; - vm_map_entry_t new_entry, prev_entry; - rlim_t vmemlim; - PROC_LOCK(curthread->td_proc); - vmemlim = lim_cur(curthread->td_proc, RLIMIT_VMEM); - PROC_UNLOCK(curthread->td_proc); + size = round_page(size); - vm_map_lock(map); - - /* if address is already mapped unlock and return with error */ - if (vm_map_lookup_entry(map, addr, &prev_entry)) { - vm_map_unlock(map); - return (KERN_NO_SPACE); - } + *addr = round_page((vm_offset_t) + curthread->td_proc->p_vmspace->vm_daddr); - osize = addr + round_page(size); +/* error = vm_map_find(map, NULL, 0, addr, size, TRUE, VM_PROT_NONE, */ +/* VM_PROT_ALL, 0); */ - /* check that we are within vmlimit */ - if (map->size + osize > vmemlim) { - vm_map_unlock(map); - return (KERN_NO_SPACE); - } - - error = vm_map_insert(map, NULL, 0, addr, osize, - VM_PROT_EXECUTE, VM_PROT_ALL, MAP_NOFAULT); - - if (error) { - if (prev_entry != &map->header) - vm_map_clip_end(map, prev_entry, addr); - - new_entry = prev_entry->next; - - if (new_entry->end != osize || new_entry->start != addr) - panic("Bad entry start/end for new sysshm"); - - new_entry->avail_ssize = round_page(size) - round_page(size); - } - - vm_map_unlock(map); return (error); } ==== //depot/projects/soc2007/jbr-syscall/src/sys/vm/vm_map.h#4 (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, 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);