199ca880aSopenharmony_ci/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ 299ca880aSopenharmony_ci 399ca880aSopenharmony_ci#pragma once 499ca880aSopenharmony_ci 599ca880aSopenharmony_ci/*** 699ca880aSopenharmony_ci This file is part of systemd. 799ca880aSopenharmony_ci 899ca880aSopenharmony_ci Copyright 2011-2014 Lennart Poettering 999ca880aSopenharmony_ci Copyright 2014 Michal Schmidt 1099ca880aSopenharmony_ci 1199ca880aSopenharmony_ci systemd is free software; you can redistribute it and/or modify it 1299ca880aSopenharmony_ci under the terms of the GNU Lesser General Public License as published by 1399ca880aSopenharmony_ci the Free Software Foundation; either version 2.1 of the License, or 1499ca880aSopenharmony_ci (at your option) any later version. 1599ca880aSopenharmony_ci 1699ca880aSopenharmony_ci systemd is distributed in the hope that it will be useful, but 1799ca880aSopenharmony_ci WITHOUT ANY WARRANTY; without even the implied warranty of 1899ca880aSopenharmony_ci MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1999ca880aSopenharmony_ci Lesser General Public License for more details. 2099ca880aSopenharmony_ci 2199ca880aSopenharmony_ci You should have received a copy of the GNU Lesser General Public License 2299ca880aSopenharmony_ci along with systemd; If not, see <http://www.gnu.org/licenses/>. 2399ca880aSopenharmony_ci***/ 2499ca880aSopenharmony_ci 2599ca880aSopenharmony_ci#include <stddef.h> 2699ca880aSopenharmony_ci 2799ca880aSopenharmony_cistruct pool; 2899ca880aSopenharmony_ci 2999ca880aSopenharmony_cistruct mempool { 3099ca880aSopenharmony_ci struct pool *first_pool; 3199ca880aSopenharmony_ci void *freelist; 3299ca880aSopenharmony_ci size_t tile_size; 3399ca880aSopenharmony_ci unsigned at_least; 3499ca880aSopenharmony_ci}; 3599ca880aSopenharmony_ci 3699ca880aSopenharmony_civoid* mempool_alloc_tile(struct mempool *mp); 3799ca880aSopenharmony_civoid* mempool_alloc0_tile(struct mempool *mp); 3899ca880aSopenharmony_civoid mempool_free_tile(struct mempool *mp, void *p); 3999ca880aSopenharmony_ci 4099ca880aSopenharmony_ci#define DEFINE_MEMPOOL(pool_name, tile_type, alloc_at_least) \ 4199ca880aSopenharmony_cistruct mempool pool_name = { \ 4299ca880aSopenharmony_ci .tile_size = sizeof(tile_type), \ 4399ca880aSopenharmony_ci .at_least = alloc_at_least, \ 4499ca880aSopenharmony_ci} 4599ca880aSopenharmony_ci 4699ca880aSopenharmony_ci 4799ca880aSopenharmony_ci#ifdef VALGRIND 4899ca880aSopenharmony_civoid mempool_drop(struct mempool *mp); 4999ca880aSopenharmony_ci#endif 50