uipc_cow.c (112316) | uipc_cow.c (112382) |
---|---|
1/*- 2 * Copyright (c) 1997, Duke University 3 * All rights reserved. 4 * 5 * Author: 6 * Andrew Gallatin <gallatin@cs.duke.edu> 7 * 8 * Redistribution and use in source and binary forms, with or without --- 15 unchanged lines hidden (view full) --- 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITSOR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 28 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 30 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 * | 1/*- 2 * Copyright (c) 1997, Duke University 3 * All rights reserved. 4 * 5 * Author: 6 * Andrew Gallatin <gallatin@cs.duke.edu> 7 * 8 * Redistribution and use in source and binary forms, with or without --- 15 unchanged lines hidden (view full) --- 24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITSOR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 28 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 30 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 * |
32 * $FreeBSD: head/sys/kern/uipc_cow.c 112316 2003-03-16 07:19:12Z alc $ | 32 * $FreeBSD: head/sys/kern/uipc_cow.c 112382 2003-03-18 18:27:33Z gallatin $ |
33 */ 34/* 35 * This is a set of routines for enabling and disabling copy on write 36 * protection for data written into sockets. 37 */ 38 39#include <sys/param.h> 40#include <sys/systm.h> --- 83 unchanged lines hidden (view full) --- 124 pa=pmap_extract(map->pmap, uva); 125 if(!pa) { 126 socow_stats.fail_not_mapped++; 127 splx(s); 128 return(0); 129 } 130 pp = PHYS_TO_VM_PAGE(pa); 131 | 33 */ 34/* 35 * This is a set of routines for enabling and disabling copy on write 36 * protection for data written into sockets. 37 */ 38 39#include <sys/param.h> 40#include <sys/systm.h> --- 83 unchanged lines hidden (view full) --- 124 pa=pmap_extract(map->pmap, uva); 125 if(!pa) { 126 socow_stats.fail_not_mapped++; 127 splx(s); 128 return(0); 129 } 130 pp = PHYS_TO_VM_PAGE(pa); 131 |
132 sf = sf_buf_alloc(); 133 sf->m = pp; 134 pmap_qenter(sf->kva, &pp, 1); 135 | |
136 /* 137 * set up COW 138 */ 139 vm_page_lock_queues(); 140 vm_page_cowsetup(pp); 141 142 /* 143 * wire the page for I/O 144 */ 145 vm_page_wire(pp); 146 vm_page_unlock_queues(); 147 | 132 /* 133 * set up COW 134 */ 135 vm_page_lock_queues(); 136 vm_page_cowsetup(pp); 137 138 /* 139 * wire the page for I/O 140 */ 141 vm_page_wire(pp); 142 vm_page_unlock_queues(); 143 |
144 /* 145 * Allocate an sf buf 146 */ 147 sf = sf_buf_alloc(); 148 sf->m = pp; 149 pmap_qenter(sf->kva, &pp, 1); 150 |
|
148 /* 149 * attach to mbuf 150 */ 151 m0->m_data = (caddr_t)sf->kva; 152 m0->m_len = PAGE_SIZE; 153 MEXTADD(m0, sf->kva, PAGE_SIZE, socow_iodone, sf, 0, EXT_SFBUF); 154 socow_stats.success++; 155 --- 13 unchanged lines hidden --- | 151 /* 152 * attach to mbuf 153 */ 154 m0->m_data = (caddr_t)sf->kva; 155 m0->m_len = PAGE_SIZE; 156 MEXTADD(m0, sf->kva, PAGE_SIZE, socow_iodone, sf, 0, EXT_SFBUF); 157 socow_stats.success++; 158 --- 13 unchanged lines hidden --- |