1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Copyright (c) 2006-2007 Silicon Graphics, Inc. 4 * All Rights Reserved. 5 */ 6 #ifndef __XFS_MRU_CACHE_H__ 7 #define __XFS_MRU_CACHE_H__ 8 9 struct xfs_mru_cache; 10 11 struct xfs_mru_cache_elem { 12 struct list_head list_node; 13 unsigned long key; 14 }; 15 16 /* Function pointer type for callback to free a client's data pointer. */ 17 typedef void (*xfs_mru_cache_free_func_t)(void *, struct xfs_mru_cache_elem *); 18 19 int xfs_mru_cache_init(void); 20 void xfs_mru_cache_uninit(void); 21 int xfs_mru_cache_create(struct xfs_mru_cache **mrup, void *data, 22 unsigned int lifetime_ms, unsigned int grp_count, 23 xfs_mru_cache_free_func_t free_func); 24 void xfs_mru_cache_destroy(struct xfs_mru_cache *mru); 25 int xfs_mru_cache_insert(struct xfs_mru_cache *mru, unsigned long key, 26 struct xfs_mru_cache_elem *elem); 27 struct xfs_mru_cache_elem * 28 xfs_mru_cache_remove(struct xfs_mru_cache *mru, unsigned long key); 29 void xfs_mru_cache_delete(struct xfs_mru_cache *mru, unsigned long key); 30 struct xfs_mru_cache_elem * 31 xfs_mru_cache_lookup(struct xfs_mru_cache *mru, unsigned long key); 32 void xfs_mru_cache_done(struct xfs_mru_cache *mru); 33 34 #endif /* __XFS_MRU_CACHE_H__ */ 35