2 * Copyright(c) 2019-2019 Intel Corporation
3 * SPDX-License-Identifier: BSD-3-Clause-Clear
6 #ifndef __OCF_FREELIST_H__
7 #define __OCF_FREELIST_H__
9 #include "ocf_cache_priv.h"
13 typedef struct ocf_freelist
*ocf_freelist_t
;
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
);
19 /* Assign unused cachelines to freelist */
20 void ocf_freelist_populate(ocf_freelist_t freelist
,
21 ocf_cache_line_t num_free_clines
);
23 /* Get cacheline from freelist */
24 bool ocf_freelist_get_cache_line(ocf_freelist_t freelist
,
25 ocf_cache_line_t
*cline
);
27 /* Put cacheline back to freelist */
28 void ocf_freelist_put_cache_line(ocf_freelist_t freelist
,
29 ocf_cache_line_t cline
);
31 /* Return total number of free cachelines */
32 ocf_cache_line_t
ocf_freelist_num_free(ocf_freelist_t freelist
);
34 #endif /* __OCF_FREELIST_H__ */