mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 19:34:35 +00:00
abuf: Provide a constant buffer
Add a new initialiser which can accept a constant pointer. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
d887432807
commit
7ba7c1dd86
3 changed files with 41 additions and 0 deletions
|
@ -157,6 +157,19 @@ void abuf_init_move(struct abuf *abuf, void *data, size_t size);
|
||||||
*/
|
*/
|
||||||
void abuf_init_set(struct abuf *abuf, void *data, size_t size);
|
void abuf_init_set(struct abuf *abuf, void *data, size_t size);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* abuf_init_const() - Set up a new const abuf
|
||||||
|
*
|
||||||
|
* Inits a new abuf and sets up its (unallocated) data. The only current
|
||||||
|
* difference between this and abuf_init_set() is the 'data' parameter is a
|
||||||
|
* const pointer. At some point a flag could be used to indicate const-ness.
|
||||||
|
*
|
||||||
|
* @abuf: abuf to set up
|
||||||
|
* @data: New contents of abuf
|
||||||
|
* @size: New size of abuf
|
||||||
|
*/
|
||||||
|
void abuf_init_const(struct abuf *abuf, const void *data, size_t size);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* abuf_uninit() - Free any memory used by an abuf
|
* abuf_uninit() - Free any memory used by an abuf
|
||||||
*
|
*
|
||||||
|
|
|
@ -119,6 +119,12 @@ void abuf_init_set(struct abuf *abuf, void *data, size_t size)
|
||||||
abuf_set(abuf, data, size);
|
abuf_set(abuf, data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void abuf_init_const(struct abuf *abuf, const void *data, size_t size)
|
||||||
|
{
|
||||||
|
/* for now there is no flag indicating that the abuf data is constant */
|
||||||
|
abuf_init_set(abuf, (void *)data, size);
|
||||||
|
}
|
||||||
|
|
||||||
void abuf_init_move(struct abuf *abuf, void *data, size_t size)
|
void abuf_init_move(struct abuf *abuf, void *data, size_t size)
|
||||||
{
|
{
|
||||||
abuf_init_set(abuf, data, size);
|
abuf_init_set(abuf, data, size);
|
||||||
|
|
|
@ -46,6 +46,28 @@ static int lib_test_abuf_set(struct unit_test_state *uts)
|
||||||
}
|
}
|
||||||
LIB_TEST(lib_test_abuf_set, 0);
|
LIB_TEST(lib_test_abuf_set, 0);
|
||||||
|
|
||||||
|
/* Test abuf_init_const() */
|
||||||
|
static int lib_test_abuf_init_const(struct unit_test_state *uts)
|
||||||
|
{
|
||||||
|
struct abuf buf;
|
||||||
|
ulong start;
|
||||||
|
void *ptr;
|
||||||
|
|
||||||
|
start = ut_check_free();
|
||||||
|
|
||||||
|
ptr = map_sysmem(0x100, 0);
|
||||||
|
|
||||||
|
abuf_init_const(&buf, ptr, 10);
|
||||||
|
ut_asserteq_ptr(ptr, buf.data);
|
||||||
|
ut_asserteq(10, buf.size);
|
||||||
|
|
||||||
|
/* No memory should have been allocated */
|
||||||
|
ut_assertok(ut_check_delta(start));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
LIB_TEST(lib_test_abuf_init_const, 0);
|
||||||
|
|
||||||
/* Test abuf_map_sysmem() and abuf_addr() */
|
/* Test abuf_map_sysmem() and abuf_addr() */
|
||||||
static int lib_test_abuf_map_sysmem(struct unit_test_state *uts)
|
static int lib_test_abuf_map_sysmem(struct unit_test_state *uts)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue