10b61f8a4SDave Chinner // SPDX-License-Identifier: GPL-2.0 22a82b8beSDavid Chinner /* 32a82b8beSDavid Chinner * Copyright (c) 2006-2007 Silicon Graphics, Inc. 42a82b8beSDavid Chinner * All Rights Reserved. 52a82b8beSDavid Chinner */ 62a82b8beSDavid Chinner #ifndef __XFS_MRU_CACHE_H__ 72a82b8beSDavid Chinner #define __XFS_MRU_CACHE_H__ 82a82b8beSDavid Chinner 922328d71SChristoph Hellwig struct xfs_mru_cache; 1022328d71SChristoph Hellwig 1122328d71SChristoph Hellwig struct xfs_mru_cache_elem { 1222328d71SChristoph Hellwig struct list_head list_node; 1322328d71SChristoph Hellwig unsigned long key; 1422328d71SChristoph Hellwig }; 152a82b8beSDavid Chinner 162a82b8beSDavid Chinner /* Function pointer type for callback to free a client's data pointer. */ 177fcd3efaSChristoph Hellwig typedef void (*xfs_mru_cache_free_func_t)(void *, struct xfs_mru_cache_elem *); 182a82b8beSDavid Chinner 192a82b8beSDavid Chinner int xfs_mru_cache_init(void); 202a82b8beSDavid Chinner void xfs_mru_cache_uninit(void); 217fcd3efaSChristoph Hellwig int xfs_mru_cache_create(struct xfs_mru_cache **mrup, void *data, 227fcd3efaSChristoph Hellwig unsigned int lifetime_ms, unsigned int grp_count, 232a82b8beSDavid Chinner xfs_mru_cache_free_func_t free_func); 242a82b8beSDavid Chinner void xfs_mru_cache_destroy(struct xfs_mru_cache *mru); 252a82b8beSDavid Chinner int xfs_mru_cache_insert(struct xfs_mru_cache *mru, unsigned long key, 2622328d71SChristoph Hellwig struct xfs_mru_cache_elem *elem); 2722328d71SChristoph Hellwig struct xfs_mru_cache_elem * 2822328d71SChristoph Hellwig xfs_mru_cache_remove(struct xfs_mru_cache *mru, unsigned long key); 292a82b8beSDavid Chinner void xfs_mru_cache_delete(struct xfs_mru_cache *mru, unsigned long key); 3022328d71SChristoph Hellwig struct xfs_mru_cache_elem * 3122328d71SChristoph Hellwig xfs_mru_cache_lookup(struct xfs_mru_cache *mru, unsigned long key); 322a82b8beSDavid Chinner void xfs_mru_cache_done(struct xfs_mru_cache *mru); 332a82b8beSDavid Chinner 342a82b8beSDavid Chinner #endif /* __XFS_MRU_CACHE_H__ */ 35