1 /* 2 * Copyright (c) 2010 by The DragonFly Project and Samuel J. Greear. 3 * All rights reserved. 4 * 5 * This code is derived from software contributed to The DragonFly Project 6 * by Samuel J. Greear <sjg@thesjg.com> 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in 16 * the documentation and/or other materials provided with the 17 * distribution. 18 * 3. Neither the name of The DragonFly Project nor the names of its 19 * contributors may be used to endorse or promote products derived 20 * from this software without specific, prior written permission. 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 25 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 26 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 27 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 28 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 29 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 30 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 31 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 32 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 */ 35 36 #include <sys/types.h> 37 #include <sys/kernel.h> 38 #include <sys/objcache.h> 39 #include <sys/systm.h> 40 #include <vm/vm.h> 41 #include <vm/pmap.h> 42 #include <vm/vm_extern.h> 43 #include <vm/vm_kern.h> 44 #include <vm/vm_page.h> 45 #include <cpu/lwbuf.h> 46 #include <machine/param.h> 47 48 #if 0 49 /* 50 * NO LONGER USED - See inlines 51 */ 52 53 static void lwbuf_init(void *); 54 SYSINIT(sock_lwb, SI_BOOT2_MACHDEP, SI_ORDER_ANY, lwbuf_init, NULL); 55 56 static struct objcache *lwbuf_cache; 57 58 MALLOC_DEFINE(M_LWBUF, "lwbuf", "Lightweight buffers"); 59 struct objcache_malloc_args lwbuf_malloc_args = { sizeof(struct lwbuf), M_LWBUF }; 60 61 62 static boolean_t 63 lwbuf_cache_ctor(void *obj, void *pdata, int ocflags) 64 { 65 struct lwbuf *lwb = (struct lwbuf *)obj; 66 67 lwb->m = NULL; 68 lwb->kva = 0; 69 70 return (TRUE); 71 } 72 73 static void 74 lwbuf_init(void *arg) 75 { 76 lwbuf_cache = objcache_create("lwbuf", 0, 0, 77 lwbuf_cache_ctor, NULL, NULL, 78 objcache_malloc_alloc, objcache_malloc_free, 79 &lwbuf_malloc_args); 80 } 81 82 #endif 83 84 #if 0 85 /* 86 * NO LONGER USED - See inlines 87 */ 88 89 struct lwbuf * 90 lwbuf_alloc(vm_page_t m, struct lwbuf *lwb_cache) 91 { 92 struct lwbuf *lwb = lwb_cache; 93 94 lwb->m = m; 95 lwb->kva = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(lwb->m)); 96 97 return (lwb); 98 } 99 100 void 101 lwbuf_free(struct lwbuf *lwb) 102 { 103 lwb->m = NULL; /* safety */ 104 } 105 106 #endif 107