bpf_zerocopy.c (207708) | bpf_zerocopy.c (216699) |
---|---|
1/*- 2 * Copyright (c) 2007 Seccuris Inc. 3 * All rights reserved. 4 * 5 * This sofware was developed by Robert N. M. Watson under contract to 6 * Seccuris Inc. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 14 unchanged lines hidden (view full) --- 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2007 Seccuris Inc. 3 * All rights reserved. 4 * 5 * This sofware was developed by Robert N. M. Watson under contract to 6 * Seccuris Inc. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 14 unchanged lines hidden (view full) --- 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 */ 29 30#include <sys/cdefs.h> |
31__FBSDID("$FreeBSD: head/sys/net/bpf_zerocopy.c 207708 2010-05-06 17:43:41Z alc $"); | 31__FBSDID("$FreeBSD: head/sys/net/bpf_zerocopy.c 216699 2010-12-25 21:26:56Z alc $"); |
32 33#include "opt_bpf.h" 34 35#include <sys/param.h> 36#include <sys/lock.h> 37#include <sys/malloc.h> 38#include <sys/mbuf.h> 39#include <sys/mutex.h> --- 116 unchanged lines hidden (view full) --- 156 * deadlock and use SFB_NOWAIT. 157 */ 158static struct sf_buf * 159zbuf_sfbuf_get(struct vm_map *map, vm_offset_t uaddr) 160{ 161 struct sf_buf *sf; 162 vm_page_t pp; 163 | 32 33#include "opt_bpf.h" 34 35#include <sys/param.h> 36#include <sys/lock.h> 37#include <sys/malloc.h> 38#include <sys/mbuf.h> 39#include <sys/mutex.h> --- 116 unchanged lines hidden (view full) --- 156 * deadlock and use SFB_NOWAIT. 157 */ 158static struct sf_buf * 159zbuf_sfbuf_get(struct vm_map *map, vm_offset_t uaddr) 160{ 161 struct sf_buf *sf; 162 vm_page_t pp; 163 |
164 if (vm_fault_quick((caddr_t) uaddr, VM_PROT_READ | VM_PROT_WRITE) < 165 0) | 164 if (vm_fault_quick_hold_pages(map, uaddr, PAGE_SIZE, VM_PROT_READ | 165 VM_PROT_WRITE, &pp, 1) < 0) |
166 return (NULL); | 166 return (NULL); |
167 pp = pmap_extract_and_hold(map->pmap, uaddr, VM_PROT_READ | 168 VM_PROT_WRITE); 169 if (pp == NULL) 170 return (NULL); | |
171 vm_page_lock(pp); 172 vm_page_wire(pp); 173 vm_page_unhold(pp); 174 vm_page_unlock(pp); 175 sf = sf_buf_alloc(pp, SFB_NOWAIT); 176 if (sf == NULL) { 177 zbuf_page_free(pp); 178 return (NULL); --- 424 unchanged lines hidden --- | 167 vm_page_lock(pp); 168 vm_page_wire(pp); 169 vm_page_unhold(pp); 170 vm_page_unlock(pp); 171 sf = sf_buf_alloc(pp, SFB_NOWAIT); 172 if (sf == NULL) { 173 zbuf_page_free(pp); 174 return (NULL); --- 424 unchanged lines hidden --- |