1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 28cb2d8bfSGregory CLEMENT #ifndef _HWBM_H 38cb2d8bfSGregory CLEMENT #define _HWBM_H 48cb2d8bfSGregory CLEMENT 58cb2d8bfSGregory CLEMENT struct hwbm_pool { 68cb2d8bfSGregory CLEMENT /* Capacity of the pool */ 78cb2d8bfSGregory CLEMENT int size; 88cb2d8bfSGregory CLEMENT /* Size of the buffers managed */ 98cb2d8bfSGregory CLEMENT int frag_size; 108cb2d8bfSGregory CLEMENT /* Number of buffers currently used by this pool */ 118cb2d8bfSGregory CLEMENT int buf_num; 128cb2d8bfSGregory CLEMENT /* constructor called during alocation */ 138cb2d8bfSGregory CLEMENT int (*construct)(struct hwbm_pool *bm_pool, void *buf); 148cb2d8bfSGregory CLEMENT /* protect acces to the buffer counter*/ 156dcdd884SSebastian Andrzej Siewior struct mutex buf_lock; 168cb2d8bfSGregory CLEMENT /* private data */ 178cb2d8bfSGregory CLEMENT void *priv; 188cb2d8bfSGregory CLEMENT }; 198cb2d8bfSGregory CLEMENT #ifdef CONFIG_HWBM 208cb2d8bfSGregory CLEMENT void hwbm_buf_free(struct hwbm_pool *bm_pool, void *buf); 218cb2d8bfSGregory CLEMENT int hwbm_pool_refill(struct hwbm_pool *bm_pool, gfp_t gfp); 226dcdd884SSebastian Andrzej Siewior int hwbm_pool_add(struct hwbm_pool *bm_pool, unsigned int buf_num); 238cb2d8bfSGregory CLEMENT #else 248cb2d8bfSGregory CLEMENT void hwbm_buf_free(struct hwbm_pool *bm_pool, void *buf) {} 258cb2d8bfSGregory CLEMENT int hwbm_pool_refill(struct hwbm_pool *bm_pool, gfp_t gfp) { return 0; } 266dcdd884SSebastian Andrzej Siewior int hwbm_pool_add(struct hwbm_pool *bm_pool, unsigned int buf_num) 278cb2d8bfSGregory CLEMENT { return 0; } 288cb2d8bfSGregory CLEMENT #endif /* CONFIG_HWBM */ 298cb2d8bfSGregory CLEMENT #endif /* _HWBM_H */ 30