| rjw | 1f88458 | 2022-01-06 17:20:42 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | 2 | #ifndef _HWBM_H | 
|  | 3 | #define _HWBM_H | 
|  | 4 |  | 
|  | 5 | struct hwbm_pool { | 
|  | 6 | /* Capacity of the pool */ | 
|  | 7 | int size; | 
|  | 8 | /* Size of the buffers managed */ | 
|  | 9 | int frag_size; | 
|  | 10 | /* Number of buffers currently used by this pool */ | 
|  | 11 | int buf_num; | 
|  | 12 | /* constructor called during alocation */ | 
|  | 13 | int (*construct)(struct hwbm_pool *bm_pool, void *buf); | 
|  | 14 | /* protect acces to the buffer counter*/ | 
|  | 15 | spinlock_t lock; | 
|  | 16 | /* private data */ | 
|  | 17 | void *priv; | 
|  | 18 | }; | 
|  | 19 | #ifdef CONFIG_HWBM | 
|  | 20 | void hwbm_buf_free(struct hwbm_pool *bm_pool, void *buf); | 
|  | 21 | int hwbm_pool_refill(struct hwbm_pool *bm_pool, gfp_t gfp); | 
|  | 22 | int hwbm_pool_add(struct hwbm_pool *bm_pool, unsigned int buf_num, gfp_t gfp); | 
|  | 23 | #else | 
|  | 24 | void hwbm_buf_free(struct hwbm_pool *bm_pool, void *buf) {} | 
|  | 25 | int hwbm_pool_refill(struct hwbm_pool *bm_pool, gfp_t gfp) { return 0; } | 
|  | 26 | int hwbm_pool_add(struct hwbm_pool *bm_pool, unsigned int buf_num, gfp_t gfp) | 
|  | 27 | { return 0; } | 
|  | 28 | #endif /* CONFIG_HWBM */ | 
|  | 29 | #endif /* _HWBM_H */ |