diff options
author | alc <alc@FreeBSD.org> | 2003-03-16 07:19:12 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2003-03-16 07:19:12 +0000 |
commit | 4641d3d127dcdaae61daa54f6eee3d51be117e44 (patch) | |
tree | b0b84c7d63f3af90789b77ca4c9413356ecd7a01 /sys/kern/uipc_syscalls.c | |
parent | c1838df6038e28d81384d7cf1c41a66c07de573c (diff) | |
download | FreeBSD-src-4641d3d127dcdaae61daa54f6eee3d51be117e44.zip FreeBSD-src-4641d3d127dcdaae61daa54f6eee3d51be117e44.tar.gz |
Pass the sf buf to MEXTADD() as the optional argument. This permits
the simplification of socow_iodone() and sf_buf_free(); they don't
have to reverse engineer the sf buf from the data's address.
Diffstat (limited to 'sys/kern/uipc_syscalls.c')
-rw-r--r-- | sys/kern/uipc_syscalls.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 285eaca..6773452 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -1661,8 +1661,6 @@ sf_buf_alloc() return (sf); } -#define dtosf(x) (&sf_bufs[((uintptr_t)(x) - (uintptr_t)sf_base) >> PAGE_SHIFT]) - /* * Detatch mapped page and release resources back to the system. */ @@ -1672,7 +1670,7 @@ sf_buf_free(void *addr, void *args) struct sf_buf *sf; struct vm_page *m; - sf = dtosf(addr); + sf = args; pmap_qremove((vm_offset_t)addr, 1); m = sf->m; vm_page_lock_queues(); @@ -1955,14 +1953,14 @@ retry_lookup: MGETHDR(m, M_TRYWAIT, MT_DATA); if (m == NULL) { error = ENOBUFS; - sf_buf_free((void *)sf->kva, NULL); + sf_buf_free((void *)sf->kva, sf); sbunlock(&so->so_snd); goto done; } /* * Setup external storage for mbuf. */ - MEXTADD(m, sf->kva, PAGE_SIZE, sf_buf_free, NULL, M_RDONLY, + MEXTADD(m, sf->kva, PAGE_SIZE, sf_buf_free, sf, M_RDONLY, EXT_SFBUF); m->m_data = (char *) sf->kva + pgoff; m->m_pkthdr.len = m->m_len = xfsize; |