1*042d53a7SEvalZero /* 2*042d53a7SEvalZero * Licensed to the Apache Software Foundation (ASF) under one 3*042d53a7SEvalZero * or more contributor license agreements. See the NOTICE file 4*042d53a7SEvalZero * distributed with this work for additional information 5*042d53a7SEvalZero * regarding copyright ownership. The ASF licenses this file 6*042d53a7SEvalZero * to you under the Apache License, Version 2.0 (the 7*042d53a7SEvalZero * "License"); you may not use this file except in compliance 8*042d53a7SEvalZero * with the License. You may obtain a copy of the License at 9*042d53a7SEvalZero * 10*042d53a7SEvalZero * http://www.apache.org/licenses/LICENSE-2.0 11*042d53a7SEvalZero * 12*042d53a7SEvalZero * Unless required by applicable law or agreed to in writing, 13*042d53a7SEvalZero * software distributed under the License is distributed on an 14*042d53a7SEvalZero * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15*042d53a7SEvalZero * KIND, either express or implied. See the License for the 16*042d53a7SEvalZero * specific language governing permissions and limitations 17*042d53a7SEvalZero * under the License. 18*042d53a7SEvalZero */ 19*042d53a7SEvalZero 20*042d53a7SEvalZero #ifndef H_UTIL_MEM_ 21*042d53a7SEvalZero #define H_UTIL_MEM_ 22*042d53a7SEvalZero 23*042d53a7SEvalZero #ifdef __cplusplus 24*042d53a7SEvalZero extern "C" { 25*042d53a7SEvalZero #endif 26*042d53a7SEvalZero 27*042d53a7SEvalZero struct os_mempool; 28*042d53a7SEvalZero struct os_mbuf_pool; 29*042d53a7SEvalZero 30*042d53a7SEvalZero int mem_malloc_mempool(struct os_mempool *mempool, uint16_t num_blocks, 31*042d53a7SEvalZero uint32_t block_size, char *name, void **out_buf); 32*042d53a7SEvalZero int mem_malloc_mempool_ext(struct os_mempool_ext *mempool, uint16_t num_blocks, 33*042d53a7SEvalZero uint32_t block_size, char *name, void **out_buf); 34*042d53a7SEvalZero 35*042d53a7SEvalZero int mem_malloc_mbuf_pool(struct os_mempool *mempool, 36*042d53a7SEvalZero struct os_mbuf_pool *mbuf_pool, uint16_t num_blocks, 37*042d53a7SEvalZero uint32_t block_size, char *name, 38*042d53a7SEvalZero void **out_buf); 39*042d53a7SEvalZero int mem_malloc_mbufpkt_pool(struct os_mempool *mempool, 40*042d53a7SEvalZero struct os_mbuf_pool *mbuf_pool, int num_blocks, 41*042d53a7SEvalZero int block_size, char *name, 42*042d53a7SEvalZero void **out_buf); 43*042d53a7SEvalZero int mem_init_mbuf_pool(void *mem, struct os_mempool *mempool, 44*042d53a7SEvalZero struct os_mbuf_pool *mbuf_pool, int num_blocks, 45*042d53a7SEvalZero int block_size, char *name); 46*042d53a7SEvalZero 47*042d53a7SEvalZero /** 48*042d53a7SEvalZero * Specifies a function used as a callback. Functions of this type allocate an 49*042d53a7SEvalZero * mbuf chain meant to hold a packet fragment. The resulting mbuf must contain 50*042d53a7SEvalZero * a pkthdr. 51*042d53a7SEvalZero * 52*042d53a7SEvalZero * @param frag_size The number of data bytes that the mbuf will 53*042d53a7SEvalZero * eventually contain. 54*042d53a7SEvalZero * @param arg A generic parameter. 55*042d53a7SEvalZero * 56*042d53a7SEvalZero * @return An allocated mbuf chain on success; 57*042d53a7SEvalZero * NULL on failure. 58*042d53a7SEvalZero */ 59*042d53a7SEvalZero typedef struct os_mbuf *mem_frag_alloc_fn(uint16_t frag_size, void *arg); 60*042d53a7SEvalZero 61*042d53a7SEvalZero struct os_mbuf *mem_split_frag(struct os_mbuf **om, uint16_t max_frag_sz, 62*042d53a7SEvalZero mem_frag_alloc_fn *alloc_cb, void *cb_arg); 63*042d53a7SEvalZero 64*042d53a7SEvalZero #ifdef __cplusplus 65*042d53a7SEvalZero } 66*042d53a7SEvalZero #endif 67*042d53a7SEvalZero 68*042d53a7SEvalZero #endif 69