PERFORCE change 125242 for review
Jesper Brix Rosenkilde
jbr at FreeBSD.org
Thu Aug 16 15:23:25 PDT 2007
http://perforce.freebsd.org/chv.cgi?CH=125242
Change 125242 by jbr at 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);
More information about the p4-projects
mailing list