sf_buf.h revision 202175
1149423Spjd/*- 2149423Spjd * Copyright (c) 2003, 2005 Alan L. Cox <alc@cs.rice.edu> 3149423Spjd * All rights reserved. 4149423Spjd * 5149423Spjd * Redistribution and use in source and binary forms, with or without 6149423Spjd * modification, are permitted provided that the following conditions 7149423Spjd * are met: 8149423Spjd * 1. Redistributions of source code must retain the above copyright 9149423Spjd * notice, this list of conditions and the following disclaimer. 10149423Spjd * 2. Redistributions in binary form must reproduce the above copyright 11149423Spjd * notice, this list of conditions and the following disclaimer in the 12149423Spjd * documentation and/or other materials provided with the distribution. 13149423Spjd * 14149423Spjd * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15149423Spjd * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16149423Spjd * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17149423Spjd * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18149423Spjd * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19149423Spjd * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20149423Spjd * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21149423Spjd * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22149423Spjd * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23149423Spjd * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24149423Spjd * SUCH DAMAGE. 25149423Spjd * 26149423Spjd * from: src/sys/i386/include/sf_buf.h,v 1.4 2005/02/13 06:23:13 alc 27149423Spjd * $FreeBSD: head/sys/mips/include/sf_buf.h 202175 2010-01-12 21:36:08Z imp $ 28149423Spjd */ 29149423Spjd 30149423Spjd#ifndef _MACHINE_SF_BUF_H_ 31149423Spjd#define _MACHINE_SF_BUF_H_ 32149423Spjd 33149423Spjd#include <sys/queue.h> 34149423Spjd#include <vm/vm.h> 35149423Spjd#include <vm/vm_param.h> 36149423Spjd#include <vm/vm_page.h> 37171706Sdes 38149423Spjdstruct vm_page; 39172577Skib 40171706Sdesstruct sf_buf { 41171706Sdes LIST_ENTRY(sf_buf) list_entry; /* list of buffers */ 42149423Spjd TAILQ_ENTRY(sf_buf) free_entry; /* list of buffers */ 43149423Spjd struct vm_page *m; /* currently mapped page */ 44149423Spjd vm_offset_t kva; /* va of mapping */ 45149423Spjd int ref_count; /* usage of this mapping */ 46149423Spjd#ifdef SMP 47149423Spjd cpumask_t cpumask; /* cpus on which mapping is valid */ 48149423Spjd#endif 49149423Spjd}; 50149423Spjd 51149423Spjdstatic __inline vm_offset_t 52149423Spjdsf_buf_kva(struct sf_buf *sf) 53149423Spjd{ 54149423Spjd 55149423Spjd return (sf->kva); 56149423Spjd} 57149423Spjd 58149423Spjdstatic __inline struct vm_page * 59149423Spjdsf_buf_page(struct sf_buf *sf) 60149423Spjd{ 61149423Spjd 62149423Spjd return (sf->m); 63149423Spjd} 64149423Spjd 65149423Spjd#endif /* !_MACHINE_SF_BUF_H_ */ 66149423Spjd