src/cx/basic_mempool.h

Mon, 08 Aug 2022 17:12:00 +0200

author
Mike Becker <universe@uap-core.de>
date
Mon, 08 Aug 2022 17:12:00 +0200
changeset 572
f0f99dd06d9f
parent 571
f83583a0bbac
permissions
-rw-r--r--

#201 - remove dangerous allocator config

There is no plausible use case, except using the testing
allocator in the test case, and having the possibility to
specify any allocator (including another mempool) causes
more harm than good.

universe@571 1 /*
universe@571 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
universe@571 3 *
universe@571 4 * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved.
universe@571 5 *
universe@571 6 * Redistribution and use in source and binary forms, with or without
universe@571 7 * modification, are permitted provided that the following conditions are met:
universe@571 8 *
universe@571 9 * 1. Redistributions of source code must retain the above copyright
universe@571 10 * notice, this list of conditions and the following disclaimer.
universe@571 11 *
universe@571 12 * 2. Redistributions in binary form must reproduce the above copyright
universe@571 13 * notice, this list of conditions and the following disclaimer in the
universe@571 14 * documentation and/or other materials provided with the distribution.
universe@571 15 *
universe@571 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
universe@571 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
universe@571 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
universe@571 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
universe@571 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
universe@571 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
universe@571 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
universe@571 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
universe@571 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
universe@571 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
universe@571 26 * POSSIBILITY OF SUCH DAMAGE.
universe@571 27 */
universe@571 28 /**
universe@571 29 * \file basic_mempool.h
universe@571 30 * \brief Implementation of a basic memory pool.
universe@571 31 * \author Mike Becker
universe@571 32 * \author Olaf Wintermann
universe@571 33 * \version 3.0
universe@571 34 * \copyright 2-Clause BSD License
universe@571 35 */
universe@571 36
universe@571 37 #ifndef UCX_BASIC_MEMPOOL_H
universe@571 38 #define UCX_BASIC_MEMPOOL_H
universe@571 39
universe@571 40 #include "mempool.h"
universe@571 41
universe@571 42 #ifdef __cplusplus
universe@571 43 extern "C" {
universe@571 44 #endif
universe@571 45
universe@571 46 /**
universe@571 47 * Basic array-based memory pool.
universe@571 48 */
universe@571 49 struct cx_basic_mempool_s {
universe@571 50 /** Inherit base structure members. */
universe@571 51 CxMempool base;
universe@571 52
universe@571 53 /** List of pointers to pooled memory. */
universe@571 54 void **data;
universe@571 55
universe@571 56 /** Number of pooled memory items. */
universe@571 57 size_t ndata;
universe@571 58
universe@571 59 /** Memory pool size. */
universe@571 60 size_t size;
universe@571 61 };
universe@571 62
universe@571 63 /**
universe@571 64 * Creates a basic array-based memory pool.
universe@571 65 *
universe@571 66 * @param capacity the initial capacity of the pool
universe@571 67 * @return the created memory pool or \c NULL if allocation failed
universe@571 68 */
universe@571 69 __attribute__((__warn_unused_result__))
universe@572 70 CxMempool *cxBasicMempoolCreate(size_t capacity);
universe@571 71
universe@571 72 #ifdef __cplusplus
universe@571 73 } // extern "C"
universe@571 74 #endif
universe@571 75
universe@571 76 #endif // UCX_BASIC_MEMPOOL_H

mercurial