The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/vm/swap_pager.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 1990 University of Utah.
    3  * Copyright (c) 1991 The Regents of the University of California.
    4  * All rights reserved.
    5  *
    6  * This code is derived from software contributed to Berkeley by
    7  * the Systems Programming Group of the University of Utah Computer
    8  * Science Department.
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  * 3. All advertising materials mentioning features or use of this software
   19  *    must display the following acknowledgement:
   20  *      This product includes software developed by the University of
   21  *      California, Berkeley and its contributors.
   22  * 4. Neither the name of the University nor the names of its contributors
   23  *    may be used to endorse or promote products derived from this software
   24  *    without specific prior written permission.
   25  *
   26  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   27  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   28  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   29  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   30  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   31  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   32  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   33  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   35  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   36  * SUCH DAMAGE.
   37  *
   38  *      from: @(#)swap_pager.h  7.1 (Berkeley) 12/5/90
   39  * $FreeBSD$
   40  */
   41 
   42 /*
   43  * Modifications to the block allocation data structure by John S. Dyson
   44  * 18 Dec 93.
   45  */
   46 
   47 #ifndef _SWAP_PAGER_
   48 #define _SWAP_PAGER_    1
   49 
   50 /*
   51  * SWB_NPAGES can be set to any value from 1 to 16 pages per allocation,
   52  * however, due to the allocation spilling into non-swap pager backed memory,
   53  * suggest keeping SWB_NPAGES small (1-4).  If high performance is mandatory
   54  * perhaps up to 8 pages might be in order????
   55  * Above problem has been fixed, now we support 16 pages per block.  Unused
   56  * space is recovered by the swap pager now...
   57  */
   58 #if !defined(SWB_NPAGES)
   59 #define SWB_NPAGES 8
   60 #endif
   61 
   62 struct swblock {
   63         unsigned short swb_valid;       /* bitmask for valid pages */
   64         unsigned short swb_locked;      /* block locked */
   65         daddr_t swb_block[SWB_NPAGES];
   66 };
   67 typedef struct swblock *sw_blk_t;
   68 
   69 #ifdef KERNEL
   70 extern struct pagerlst swap_pager_un_object_list;
   71 extern int swap_pager_full;
   72 extern struct rlisthdr swaplist;
   73 
   74 int swap_pager_putpages __P((vm_object_t, vm_page_t *, int, boolean_t, int *));    
   75 int swap_pager_swp_alloc __P((vm_object_t, int));
   76 void swap_pager_copy __P((vm_object_t, vm_pindex_t, vm_object_t,
   77         vm_pindex_t, vm_pindex_t, int));
   78 void swap_pager_freespace __P((vm_object_t, vm_pindex_t, vm_size_t));
   79 void swap_pager_dmzspace __P((vm_object_t, vm_pindex_t, vm_size_t));
   80 void swap_pager_swap_init __P((void));
   81 void swap_pager_sync __P((void));
   82 #endif
   83 
   84 #endif                          /* _SWAP_PAGER_ */

Cache object: 5c24a13e7ac3bedf2fea2b7441d8e9c8


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.