Deleted Added
full compact
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 ---