xref: /optee_os/lib/libutils/isoc/bget.h (revision 17967299679c805b86fc045a4e0939ad2ad3a797)
1074ba9b2SJens Wiklander /*
2074ba9b2SJens Wiklander  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
3074ba9b2SJens Wiklander  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
4074ba9b2SJens Wiklander  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
5074ba9b2SJens Wiklander  * IN NO EVENT SHALL ST BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
6074ba9b2SJens Wiklander  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
7074ba9b2SJens Wiklander  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
8074ba9b2SJens Wiklander  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
9074ba9b2SJens Wiklander  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
10074ba9b2SJens Wiklander  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
11074ba9b2SJens Wiklander  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
12074ba9b2SJens Wiklander  */
13074ba9b2SJens Wiklander 
14074ba9b2SJens Wiklander /*
15074ba9b2SJens Wiklander 
16074ba9b2SJens Wiklander     Interface definitions for bget.c, the memory management package.
17074ba9b2SJens Wiklander 
18074ba9b2SJens Wiklander */
19074ba9b2SJens Wiklander 
204e570655SJerome Forissier 
21074ba9b2SJens Wiklander #ifndef _
22074ba9b2SJens Wiklander #ifdef PROTOTYPES
23074ba9b2SJens Wiklander #define  _(x)  x		      /* If compiler knows prototypes */
24074ba9b2SJens Wiklander #else
25074ba9b2SJens Wiklander #define  _(x)  ()                     /* It it doesn't */
26074ba9b2SJens Wiklander #endif /* PROTOTYPES */
27074ba9b2SJens Wiklander #endif
28074ba9b2SJens Wiklander 
29*17967299SJens Wiklander #define BGET_HDR_QUANTUM    (2 * sizeof(long))
30*17967299SJens Wiklander 
31074ba9b2SJens Wiklander typedef long bufsize;
32b7f0111dSVolodymyr Babchuk struct bpoolset;
33b7f0111dSVolodymyr Babchuk 
34b7f0111dSVolodymyr Babchuk void	bpool	    _((void *buffer, bufsize len, struct bpoolset *poolset));
35*17967299SJens Wiklander void   *bget	    _((bufsize align, bufsize hdr_size, bufsize size, struct bpoolset *poolset));
36*17967299SJens Wiklander void   *bgetz	    _((bufsize align, bufsize hdr_size, bufsize size, struct bpoolset *poolset));
37*17967299SJens Wiklander void   *bgetr	    _((void *buffer, bufsize align, bufsize hdr_size, bufsize newsize,
38b7f0111dSVolodymyr Babchuk 		       struct bpoolset *poolset));
394e570655SJerome Forissier void	brel	    _((void *buf, struct bpoolset *poolset, int wipe));
40074ba9b2SJens Wiklander void	bectl	    _((int (*compact)(bufsize sizereq, int sequence),
41074ba9b2SJens Wiklander 		       void *(*acquire)(bufsize size),
42b7f0111dSVolodymyr Babchuk 		       void (*release)(void *buf), bufsize pool_incr,
43b7f0111dSVolodymyr Babchuk 		       struct bpoolset *poolset));
44074ba9b2SJens Wiklander void	bstats	    _((bufsize *curalloc, bufsize *totfree, bufsize *maxfree,
45b7f0111dSVolodymyr Babchuk 		       long *nget, long *nrel, struct bpoolset *poolset));
46074ba9b2SJens Wiklander void	bstatse     _((bufsize *pool_incr, long *npool, long *npget,
47b7f0111dSVolodymyr Babchuk 		       long *nprel, long *ndget, long *ndrel,
48b7f0111dSVolodymyr Babchuk 		       struct bpoolset *poolset));
490135712bSVolodymyr Babchuk void	bufdump     _((void *buf));
50074ba9b2SJens Wiklander void	bpoold	    _((void *pool, int dumpalloc, int dumpfree));
51074ba9b2SJens Wiklander int	bpoolv	    _((void *pool));
5227e8d08dSJens Wiklander 
5327e8d08dSJens Wiklander #if !defined(__KERNEL__) && !defined(__LDELF__) && defined(CFG_TA_BGET_TEST)
5427e8d08dSJens Wiklander int bget_main_test(void *(*malloc_func)(size_t), void (*free_func)(void *));
5527e8d08dSJens Wiklander #endif
56