1c3f4f28cSBen Widawsky /*- 2c3f4f28cSBen Widawsky * Copyright (c) 2018 Intel Corporation 3c3f4f28cSBen Widawsky * 4c3f4f28cSBen Widawsky * Redistribution and use in source and binary forms, with or without 5c3f4f28cSBen Widawsky * modification, are permitted provided that the following conditions are 6c3f4f28cSBen Widawsky * met: 7c3f4f28cSBen Widawsky * 1. Redistributions of source code must retain the above copyright 8c3f4f28cSBen Widawsky * notice, this list of conditions and the following disclaimer. 9c3f4f28cSBen Widawsky * 2. Redistributions in binary form must reproduce the above copyright 10c3f4f28cSBen Widawsky * notice, this list of conditions and the following disclaimer in 11c3f4f28cSBen Widawsky * the documentation and/or other materials provided with the 12c3f4f28cSBen Widawsky * distribution. 13c3f4f28cSBen Widawsky * 14c3f4f28cSBen Widawsky * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15c3f4f28cSBen Widawsky * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16c3f4f28cSBen Widawsky * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17c3f4f28cSBen Widawsky * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18c3f4f28cSBen Widawsky * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19c3f4f28cSBen Widawsky * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20c3f4f28cSBen Widawsky * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21c3f4f28cSBen Widawsky * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22c3f4f28cSBen Widawsky * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23c3f4f28cSBen Widawsky * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24c3f4f28cSBen Widawsky * SUCH DAMAGE. 25c3f4f28cSBen Widawsky * 26c3f4f28cSBen Widawsky * $FreeBSD$ 27c3f4f28cSBen Widawsky */ 28c3f4f28cSBen Widawsky 29307f78f3SVladimir Kondratyev #ifndef _LINUXKPI_LINUX_SWAP_H_ 30307f78f3SVladimir Kondratyev #define _LINUXKPI_LINUX_SWAP_H_ 31c3f4f28cSBen Widawsky 32*6d3d5653SEmmanuel Vadot #include <sys/param.h> 33*6d3d5653SEmmanuel Vadot #include <sys/domainset.h> 34*6d3d5653SEmmanuel Vadot #include <sys/queue.h> 35*6d3d5653SEmmanuel Vadot #include <sys/proc.h> 36*6d3d5653SEmmanuel Vadot #include <sys/pcpu.h> 37*6d3d5653SEmmanuel Vadot 38*6d3d5653SEmmanuel Vadot #include <vm/vm.h> 39c3f4f28cSBen Widawsky #include <vm/swap_pager.h> 40c3f4f28cSBen Widawsky #include <vm/vm_pageout.h> 41c3f4f28cSBen Widawsky 42c3f4f28cSBen Widawsky static inline long 43c3f4f28cSBen Widawsky get_nr_swap_pages(void) 44c3f4f28cSBen Widawsky { 45c3f4f28cSBen Widawsky int i, j; 46c3f4f28cSBen Widawsky 47c3f4f28cSBen Widawsky /* NB: This could be done cheaply by obtaining swap_total directly */ 48c3f4f28cSBen Widawsky swap_pager_status(&i, &j); 49c3f4f28cSBen Widawsky return i - j; 50c3f4f28cSBen Widawsky } 51c3f4f28cSBen Widawsky 52c3f4f28cSBen Widawsky static inline int 53c3f4f28cSBen Widawsky current_is_kswapd(void) 54c3f4f28cSBen Widawsky { 55f82dd310SBen Widawsky 56f82dd310SBen Widawsky return (curproc == pageproc); 57c3f4f28cSBen Widawsky } 58c3f4f28cSBen Widawsky 59c3f4f28cSBen Widawsky #endif 60