1*fe267a55SPedro F. Giffuni /*- 2*fe267a55SPedro F. Giffuni * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3*fe267a55SPedro F. Giffuni * 4774d251dSAttilio Rao * Copyright (c) 2013 EMC Corp. 5774d251dSAttilio Rao * Copyright (c) 2011 Jeffrey Roberson <jeff@freebsd.org> 6774d251dSAttilio Rao * Copyright (c) 2008 Mayur Shardul <mayur.shardul@gmail.com> 7774d251dSAttilio Rao * All rights reserved. 8774d251dSAttilio Rao * 9774d251dSAttilio Rao * Redistribution and use in source and binary forms, with or without 10774d251dSAttilio Rao * modification, are permitted provided that the following conditions 11774d251dSAttilio Rao * are met: 12774d251dSAttilio Rao * 1. Redistributions of source code must retain the above copyright 13774d251dSAttilio Rao * notice, this list of conditions and the following disclaimer. 14774d251dSAttilio Rao * 2. Redistributions in binary form must reproduce the above copyright 15774d251dSAttilio Rao * notice, this list of conditions and the following disclaimer in the 16774d251dSAttilio Rao * documentation and/or other materials provided with the distribution. 17774d251dSAttilio Rao * 18774d251dSAttilio Rao * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 19774d251dSAttilio Rao * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20774d251dSAttilio Rao * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21774d251dSAttilio Rao * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 22774d251dSAttilio Rao * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23774d251dSAttilio Rao * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24774d251dSAttilio Rao * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25774d251dSAttilio Rao * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26774d251dSAttilio Rao * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27774d251dSAttilio Rao * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28774d251dSAttilio Rao * SUCH DAMAGE. 29774d251dSAttilio Rao * 30774d251dSAttilio Rao * $FreeBSD$ 31774d251dSAttilio Rao */ 32774d251dSAttilio Rao 33774d251dSAttilio Rao #ifndef _VM_RADIX_H_ 34774d251dSAttilio Rao #define _VM_RADIX_H_ 35774d251dSAttilio Rao 36774d251dSAttilio Rao #include <vm/_vm_radix.h> 37774d251dSAttilio Rao 38774d251dSAttilio Rao #ifdef _KERNEL 39774d251dSAttilio Rao 40e946b949SAttilio Rao int vm_radix_insert(struct vm_radix *rtree, vm_page_t page); 418d6fbbb8SJeff Roberson void vm_radix_wait(void); 42776cad90SAlan Cox boolean_t vm_radix_is_singleton(struct vm_radix *rtree); 43774d251dSAttilio Rao vm_page_t vm_radix_lookup(struct vm_radix *rtree, vm_pindex_t index); 44774d251dSAttilio Rao vm_page_t vm_radix_lookup_ge(struct vm_radix *rtree, vm_pindex_t index); 45774d251dSAttilio Rao vm_page_t vm_radix_lookup_le(struct vm_radix *rtree, vm_pindex_t index); 46774d251dSAttilio Rao void vm_radix_reclaim_allnodes(struct vm_radix *rtree); 47e94965d8SAlan Cox vm_page_t vm_radix_remove(struct vm_radix *rtree, vm_pindex_t index); 48703b304fSAlan Cox vm_page_t vm_radix_replace(struct vm_radix *rtree, vm_page_t newpage); 49cd1241fbSKonstantin Belousov void vm_radix_zinit(void); 50cd1241fbSKonstantin Belousov 51cd1241fbSKonstantin Belousov static __inline void 52cd1241fbSKonstantin Belousov vm_radix_init(struct vm_radix *rtree) 53cd1241fbSKonstantin Belousov { 54cd1241fbSKonstantin Belousov 55cd1241fbSKonstantin Belousov rtree->rt_root = 0; 56cd1241fbSKonstantin Belousov } 57cd1241fbSKonstantin Belousov 58cd1241fbSKonstantin Belousov static __inline boolean_t 59cd1241fbSKonstantin Belousov vm_radix_is_empty(struct vm_radix *rtree) 60cd1241fbSKonstantin Belousov { 61cd1241fbSKonstantin Belousov 62cd1241fbSKonstantin Belousov return (rtree->rt_root == 0); 63cd1241fbSKonstantin Belousov } 64774d251dSAttilio Rao 65774d251dSAttilio Rao #endif /* _KERNEL */ 66774d251dSAttilio Rao #endif /* !_VM_RADIX_H_ */ 67