summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_syscalls.c
diff options
context:
space:
mode:
authorandre <andre@FreeBSD.org>2013-08-25 10:57:09 +0000
committerandre <andre@FreeBSD.org>2013-08-25 10:57:09 +0000
commit6c0efad132654ea9bfc4e58975d1d58ce8d4b424 (patch)
treec06b97898de2cde2e64243afc1672aebf11ef915 /sys/kern/uipc_syscalls.c
parent8e41c705d027e43af7d37c3bc669b20ac317fd2b (diff)
downloadFreeBSD-src-6c0efad132654ea9bfc4e58975d1d58ce8d4b424.zip
FreeBSD-src-6c0efad132654ea9bfc4e58975d1d58ce8d4b424.tar.gz
Give (*ext_free) an int return value allowing for very sophisticated
external mbuf buffer management capabilities in the future. For now only EXT_FREE_OK is defined with current legacy behavior. Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sys/kern/uipc_syscalls.c')
-rw-r--r--sys/kern/uipc_syscalls.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
index 7c19bc6..72663a2 100644
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -1854,7 +1854,7 @@ struct sendfile_sync {
/*
* Detach mapped page and release resources back to the system.
*/
-void
+int
sf_buf_mext(struct mbuf *mb, void *addr, void *args)
{
vm_page_t m;
@@ -1873,13 +1873,14 @@ sf_buf_mext(struct mbuf *mb, void *addr, void *args)
vm_page_free(m);
vm_page_unlock(m);
if (addr == NULL)
- return;
+ return (EXT_FREE_OK);
sfs = addr;
mtx_lock(&sfs->mtx);
KASSERT(sfs->count> 0, ("Sendfile sync botchup count == 0"));
if (--sfs->count == 0)
cv_signal(&sfs->cv);
mtx_unlock(&sfs->mtx);
+ return (EXT_FREE_OK);
}
/*
@@ -2315,14 +2316,14 @@ retry_space:
m0 = m_get((mnw ? M_NOWAIT : M_WAITOK), MT_DATA);
if (m0 == NULL) {
error = (mnw ? EAGAIN : ENOBUFS);
- sf_buf_mext(NULL, NULL, sf);
+ (void)sf_buf_mext(NULL, NULL, sf);
break;
}
if (m_extadd(m0, (caddr_t )sf_buf_kva(sf), PAGE_SIZE,
sf_buf_mext, sfs, sf, M_RDONLY, EXT_SFBUF,
(mnw ? M_NOWAIT : M_WAITOK)) != 0) {
error = (mnw ? EAGAIN : ENOBUFS);
- sf_buf_mext(NULL, NULL, sf);
+ (void)sf_buf_mext(NULL, NULL, sf);
m_freem(m0);
break;
}
OpenPOWER on IntegriCloud