My Project
mmal_pool.h
Go to the documentation of this file.
1 /*
2 Copyright (c) 2012, Broadcom Europe Ltd
3 All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7  * Redistributions of source code must retain the above copyright
8  notice, this list of conditions and the following disclaimer.
9  * Redistributions in binary form must reproduce the above copyright
10  notice, this list of conditions and the following disclaimer in the
11  documentation and/or other materials provided with the distribution.
12  * Neither the name of the copyright holder nor the
13  names of its contributors may be used to endorse or promote products
14  derived from this software without specific prior written permission.
15 
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27 
28 #ifndef MMAL_POOL_H
29 #define MMAL_POOL_H
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
38 /* @{ */
39 
40 #include "mmal_queue.h"
41 
43 typedef struct MMAL_POOL_T
44 {
46  uint32_t headers_num;
48 } MMAL_POOL_T;
49 
56 typedef void *(*mmal_pool_allocator_alloc_t)(void *context, uint32_t size);
62 typedef void (*mmal_pool_allocator_free_t)(void *context, void *mem);
63 
82 MMAL_POOL_T *mmal_pool_create(unsigned int headers, uint32_t payload_size);
83 
101 MMAL_POOL_T *mmal_pool_create_with_allocator(unsigned int headers, uint32_t payload_size,
102  void *allocator_context, mmal_pool_allocator_alloc_t allocator_alloc,
103  mmal_pool_allocator_free_t allocator_free);
104 
115 void mmal_pool_destroy(MMAL_POOL_T *pool);
116 
129 MMAL_STATUS_T mmal_pool_resize(MMAL_POOL_T *pool, unsigned int headers, uint32_t payload_size);
130 
140 typedef MMAL_BOOL_T (*MMAL_POOL_BH_CB_T)(MMAL_POOL_T *pool, MMAL_BUFFER_HEADER_T *buffer, void *userdata);
141 
149 void mmal_pool_callback_set(MMAL_POOL_T *pool, MMAL_POOL_BH_CB_T cb, void *userdata);
150 
160 
161 /* @} */
162 
163 #ifdef __cplusplus
164 }
165 #endif
166 
167 #endif /* MMAL_POOL_H */
MMAL_QUEUE_T * queue
Definition: mmal_pool.h:45
void mmal_pool_destroy(MMAL_POOL_T *pool)
void(* mmal_pool_allocator_free_t)(void *context, void *mem)
Definition: mmal_pool.h:62
struct MMAL_POOL_T MMAL_POOL_T
MMAL_BOOL_T(* MMAL_BH_PRE_RELEASE_CB_T)(MMAL_BUFFER_HEADER_T *header, void *userdata)
Definition: mmal_buffer.h:217
struct MMAL_QUEUE_T MMAL_QUEUE_T
Definition: mmal_queue.h:43
MMAL_POOL_T * mmal_pool_create_with_allocator(unsigned int headers, uint32_t payload_size, void *allocator_context, mmal_pool_allocator_alloc_t allocator_alloc, mmal_pool_allocator_free_t allocator_free)
int32_t MMAL_BOOL_T
Definition: mmal_common.h:60
void mmal_pool_callback_set(MMAL_POOL_T *pool, MMAL_POOL_BH_CB_T cb, void *userdata)
MMAL_BUFFER_HEADER_T ** header
Definition: mmal_pool.h:47
MMAL_STATUS_T mmal_pool_resize(MMAL_POOL_T *pool, unsigned int headers, uint32_t payload_size)
void *(* mmal_pool_allocator_alloc_t)(void *context, uint32_t size)
Definition: mmal_pool.h:56
void mmal_pool_pre_release_callback_set(MMAL_POOL_T *pool, MMAL_BH_PRE_RELEASE_CB_T cb, void *userdata)
MMAL_POOL_T * mmal_pool_create(unsigned int headers, uint32_t payload_size)
uint32_t headers_num
Definition: mmal_pool.h:46
MMAL_STATUS_T
Definition: mmal_types.h:46
MMAL_BOOL_T(* MMAL_POOL_BH_CB_T)(MMAL_POOL_T *pool, MMAL_BUFFER_HEADER_T *buffer, void *userdata)
Definition: mmal_pool.h:140