diff options
author | Aaron Durbin <adurbin@chromium.org> | 2015-09-08 13:34:43 -0500 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2015-09-22 21:21:34 +0000 |
commit | dc9f5cd54661e5ba3fffee7af0ba17dde9367b95 (patch) | |
tree | 43b5eca98ba0b09390ff9a6d1174c2e0cce94e1b /src/include/mem_pool.h | |
parent | 4b93a4f47a7457162d1be20eeffe57f81d5cd6af (diff) |
coreboot: introduce commonlib
Instead of reaching into src/include and re-writing code
allow for cleaner code sharing within coreboot and its
utilities. The additional thing needed at this point is
for the utilities to provide a printk() declaration within
a <console/console.h> file. That way code which uses printk()
can than be mapped properly to verbosity of utility parameters.
Change-Id: I9e46a279569733336bc0a018aed96bc924c07cdd
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/11592
Tested-by: build bot (Jenkins)
Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Diffstat (limited to 'src/include/mem_pool.h')
-rw-r--r-- | src/include/mem_pool.h | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/src/include/mem_pool.h b/src/include/mem_pool.h deleted file mode 100644 index c57b70761e..0000000000 --- a/src/include/mem_pool.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright 2015 Google Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc. - */ - -#ifndef _MEM_POOL_H_ -#define _MEM_POOL_H_ - -#include <stddef.h> -#include <stdint.h> - -/* - * The memory pool allows one to allocate memory from a fixed size buffer - * that also allows freeing semantics for reuse. However, the current - * limitation is that the most recent allocation is the only one that - * can be freed. If one tries to free any allocation that isn't the - * most recently allocated it will result in a leak within the memory pool. - * - * The memory returned by allocations are at least 8 byte aligned. Note - * that this requires the backing buffer to start on at least an 8 byte - * alignment. - */ - -struct mem_pool { - uint8_t *buf; - size_t size; - uint8_t *last_alloc; - size_t free_offset; -}; - -#define MEM_POOL_INIT(buf_, size_) \ - { \ - .buf = (buf_), \ - .size = (size_), \ - .last_alloc = NULL, \ - .free_offset = 0, \ - } - -static inline void mem_pool_reset(struct mem_pool *mp) -{ - mp->last_alloc = NULL; - mp->free_offset = 0; -} - -/* Initialize a memory pool. */ -static inline void mem_pool_init(struct mem_pool *mp, void *buf, size_t sz) -{ - mp->buf = buf; - mp->size = sz; - mem_pool_reset(mp); -} - -/* Allocate requested size from the memory pool. NULL returned on error. */ -void *mem_pool_alloc(struct mem_pool *mp, size_t sz); - -/* Free allocation from memory pool. */ -void mem_pool_free(struct mem_pool *mp, void *alloc); - -#endif /* _MEM_POOL_H_ */ |