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 #ifndef _CPU_LWBUF_H_ 37 #define _CPU_LWBUF_H_ 38 39 #ifndef _SYS_TYPES_H_ 40 #include <sys/types.h> 41 #endif 42 #ifndef _SYS_GLOBALDATA_H_ 43 #include <sys/globaldata.h> 44 #endif 45 #ifndef _VM_PMAP_H_ 46 #include <vm/pmap.h> 47 #endif 48 #ifndef _VM_VM_PAGE_H_ 49 #include <vm/vm_page.h> 50 #endif 51 #ifndef _MACHINE_ATOMIC_H_ 52 #include <machine/atomic.h> 53 #endif 54 55 #if !defined(_KERNEL) && !defined(_KERNEL_STRUCTURES) 56 #error "This file should not be included by userland programs." 57 #endif 58 59 struct lwbuf { 60 vm_page_t m; /* currently mapped page */ 61 vm_offset_t kva; /* va of mapping */ 62 }; 63 64 static __inline vm_page_t 65 lwbuf_page(struct lwbuf *lwb) { 66 return (lwb->m); 67 } 68 69 static __inline vm_offset_t 70 lwbuf_kva(struct lwbuf *lwb) { 71 return (lwb->kva); 72 } 73 74 #define lwbuf_set_global(lwb) 75 76 #if defined(_KERNEL) 77 78 struct lwbuf *lwbuf_alloc(vm_page_t); 79 void lwbuf_free(struct lwbuf *); 80 81 #endif 82 83 #endif /* !_CPU_LWBUF_H_ */ 84