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