xref: /rockchip-linux_mpp/osal/mpp_allocator_api.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2*437bfbebSnyanmisaka /*
3*437bfbebSnyanmisaka  * Copyright (c) 2023 Rockchip Electronics Co., Ltd.
4*437bfbebSnyanmisaka  */
5*437bfbebSnyanmisaka 
6*437bfbebSnyanmisaka #ifndef __MPP_ALLOCATOR_API_H__
7*437bfbebSnyanmisaka #define __MPP_ALLOCATOR_API_H__
8*437bfbebSnyanmisaka 
9*437bfbebSnyanmisaka #include "mpp_allocator.h"
10*437bfbebSnyanmisaka 
11*437bfbebSnyanmisaka typedef MPP_RET (*OsAllocatorFunc)(void *ctx, MppBufferInfo *info);
12*437bfbebSnyanmisaka 
13*437bfbebSnyanmisaka typedef struct os_allocator_t {
14*437bfbebSnyanmisaka     MppBufferType type;
15*437bfbebSnyanmisaka     const char *name;
16*437bfbebSnyanmisaka 
17*437bfbebSnyanmisaka     MPP_RET (*open)(void **ctx, size_t alignment, MppAllocFlagType flags);
18*437bfbebSnyanmisaka     MPP_RET (*close)(void *ctx);
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka     OsAllocatorFunc alloc;
21*437bfbebSnyanmisaka     OsAllocatorFunc free;
22*437bfbebSnyanmisaka     OsAllocatorFunc import;
23*437bfbebSnyanmisaka     OsAllocatorFunc release;
24*437bfbebSnyanmisaka     OsAllocatorFunc mmap;
25*437bfbebSnyanmisaka 
26*437bfbebSnyanmisaka     /* allocator real flag update callback */
27*437bfbebSnyanmisaka     MppAllocFlagType (*flags)(void *ctx);
28*437bfbebSnyanmisaka } os_allocator;
29*437bfbebSnyanmisaka 
30*437bfbebSnyanmisaka #endif /* __MPP_ALLOCATOR_API_H__ */
31