| version 1.177.4.2.2.1.2.1, 2010/04/21 00:28:18 |
version 1.177.4.2.2.1.2.2, 2011/05/25 23:58:48 |
|
|
| /* $NetBSD$ */ |
/* uipc_socket.c,v 1.177.4.2.2.1.2.1 2010/04/21 00:28:18 matt Exp */ |
| |
|
| /*- |
/*- |
| * Copyright (c) 2002, 2007, 2008, 2009 The NetBSD Foundation, Inc. |
* Copyright (c) 2002, 2007, 2008, 2009 The NetBSD Foundation, Inc. |
|
|
| */ |
*/ |
| |
|
| #include <sys/cdefs.h> |
#include <sys/cdefs.h> |
| __KERNEL_RCSID(0, "$NetBSD$"); |
__KERNEL_RCSID(0, "uipc_socket.c,v 1.177.4.2.2.1.2.1 2010/04/21 00:28:18 matt Exp"); |
| |
|
| #include "opt_sock_counters.h" |
#include "opt_sock_counters.h" |
| #include "opt_sosend_loan.h" |
#include "opt_sosend_loan.h" |
| Line 199 sokvaunreserve(vsize_t len) |
|
| Line 199 sokvaunreserve(vsize_t len) |
|
| */ |
*/ |
| |
|
| vaddr_t |
vaddr_t |
| sokvaalloc(vsize_t len, struct socket *so) |
sokvaalloc(vaddr_t sva, vsize_t len, struct socket *so) |
| { |
{ |
| vaddr_t lva; |
vaddr_t lva; |
| |
|
| Line 214 sokvaalloc(vsize_t len, struct socket *s |
|
| Line 214 sokvaalloc(vsize_t len, struct socket *s |
|
| * allocate kva. |
* allocate kva. |
| */ |
*/ |
| |
|
| lva = uvm_km_alloc(kernel_map, len, 0, UVM_KMF_VAONLY | UVM_KMF_WAITVA); |
lva = uvm_km_alloc(kernel_map, len, atop(sva) & uvmexp.colormask, |
| |
UVM_KMF_COLORMATCH | UVM_KMF_VAONLY | UVM_KMF_WAITVA); |
| if (lva == 0) { |
if (lva == 0) { |
| sokvaunreserve(len); |
sokvaunreserve(len); |
| return (0); |
return (0); |
| Line 362 sosend_loan(struct socket *so, struct ui |
|
| Line 363 sosend_loan(struct socket *so, struct ui |
|
| |
|
| KASSERT(npgs <= M_EXT_MAXPAGES); |
KASSERT(npgs <= M_EXT_MAXPAGES); |
| |
|
| lva = sokvaalloc(len, so); |
lva = sokvaalloc(sva, len, so); |
| if (lva == 0) |
if (lva == 0) |
| return 0; |
return 0; |
| |
|