mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 01:44:34 +00:00
abuf: Allow incrementing the size
Provide a convenience function to increment the size of the abuf. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
633b3dc755
commit
34ecba1f76
3 changed files with 39 additions and 0 deletions
|
@ -90,6 +90,15 @@ void abuf_map_sysmem(struct abuf *abuf, ulong addr, size_t size);
|
|||
*/
|
||||
bool abuf_realloc(struct abuf *abuf, size_t new_size);
|
||||
|
||||
/**
|
||||
* abuf_realloc_inc() - Increment abuf size by a given amount
|
||||
*
|
||||
* @abuf: abuf to adjust
|
||||
* @inc: Size incrmement to use (the buffer size will be increased by this much)
|
||||
* Return: true if OK, false if out of memory
|
||||
*/
|
||||
bool abuf_realloc_inc(struct abuf *abuf, size_t inc);
|
||||
|
||||
/**
|
||||
* abuf_uninit_move() - Return the allocated contents and uninit the abuf
|
||||
*
|
||||
|
|
|
@ -82,6 +82,11 @@ bool abuf_realloc(struct abuf *abuf, size_t new_size)
|
|||
}
|
||||
}
|
||||
|
||||
bool abuf_realloc_inc(struct abuf *abuf, size_t inc)
|
||||
{
|
||||
return abuf_realloc(abuf, abuf->size + inc);
|
||||
}
|
||||
|
||||
void *abuf_uninit_move(struct abuf *abuf, size_t *sizep)
|
||||
{
|
||||
void *ptr;
|
||||
|
|
|
@ -155,6 +155,31 @@ static int lib_test_abuf_realloc_size(struct unit_test_state *uts)
|
|||
}
|
||||
LIB_TEST(lib_test_abuf_realloc_size, 0);
|
||||
|
||||
/* Test abuf_realloc_inc() */
|
||||
static int lib_test_abuf_realloc_inc(struct unit_test_state *uts)
|
||||
{
|
||||
struct abuf buf;
|
||||
ulong start;
|
||||
|
||||
start = ut_check_free();
|
||||
|
||||
abuf_init(&buf);
|
||||
ut_asserteq(0, buf.size);
|
||||
ut_asserteq(false, buf.alloced);
|
||||
|
||||
abuf_realloc_inc(&buf, 20);
|
||||
ut_asserteq(20, buf.size);
|
||||
ut_asserteq(true, buf.alloced);
|
||||
|
||||
abuf_uninit(&buf);
|
||||
|
||||
/* Check for memory leaks */
|
||||
ut_assertok(ut_check_delta(start));
|
||||
|
||||
return 0;
|
||||
}
|
||||
LIB_TEST(lib_test_abuf_realloc_inc, 0);
|
||||
|
||||
/* Test handling of buffers that are too large */
|
||||
static int lib_test_abuf_large(struct unit_test_state *uts)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue