]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/ocf/src/ocf_freelist.h
3b67b2aba57cd0d30cea50897c2d78782719ef31
[ceph.git] / ceph / src / spdk / ocf / src / ocf_freelist.h
1 /*
2 * Copyright(c) 2019-2019 Intel Corporation
3 * SPDX-License-Identifier: BSD-3-Clause-Clear
4 */
5
6 #ifndef __OCF_FREELIST_H__
7 #define __OCF_FREELIST_H__
8
9 #include "ocf_cache_priv.h"
10
11 struct ocf_freelist;
12
13 typedef struct ocf_freelist *ocf_freelist_t;
14
15 /* Init / deinit freelist runtime structures */
16 ocf_freelist_t ocf_freelist_init(struct ocf_cache *cache);
17 void ocf_freelist_deinit(ocf_freelist_t freelist);
18
19 /* Assign unused cachelines to freelist */
20 void ocf_freelist_populate(ocf_freelist_t freelist,
21 ocf_cache_line_t num_free_clines);
22
23 /* Get cacheline from freelist */
24 bool ocf_freelist_get_cache_line(ocf_freelist_t freelist,
25 ocf_cache_line_t *cline);
26
27 /* Put cacheline back to freelist */
28 void ocf_freelist_put_cache_line(ocf_freelist_t freelist,
29 ocf_cache_line_t cline);
30
31 /* Return total number of free cachelines */
32 ocf_cache_line_t ocf_freelist_num_free(ocf_freelist_t freelist);
33
34 #endif /* __OCF_FREELIST_H__ */