aboutsummaryrefslogtreecommitdiff
path: root/test/bloblist.c
diff options
context:
space:
mode:
authorSimon Glass2020-01-27 08:49:52 -0700
committerSimon Glass2020-02-05 19:33:46 -0700
commitb83994dec7addcd5fecd0bfd2f734223eb0462f0 (patch)
treefaa8ddaaaf7aa2632f89a96006c3e5a27e03ac35 /test/bloblist.c
parent02247c1887312e5b4b367e4fb12122381b1424bc (diff)
bloblist: Zero records when adding
It is convenient for bloblist to zero out the contents of a records when it is added. This saves the callers having to do it. Update the API accordingly. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'test/bloblist.c')
-rw-r--r--test/bloblist.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/test/bloblist.c b/test/bloblist.c
index c78b58ea293..bdcca0291c7 100644
--- a/test/bloblist.c
+++ b/test/bloblist.c
@@ -34,13 +34,31 @@ static struct bloblist_hdr *clear_bloblist(void)
{
struct bloblist_hdr *hdr;
- /* Clear out any existing bloblist so we have a clean slate */
+ /*
+ * Clear out any existing bloblist so we have a clean slate. Zero the
+ * header so that existing records are removed, but set everything else
+ * to 0xff for testing purposes.
+ */
hdr = map_sysmem(CONFIG_BLOBLIST_ADDR, TEST_BLOBLIST_SIZE);
- memset(hdr, '\0', TEST_BLOBLIST_SIZE);
+ memset(hdr, '\xff', TEST_BLOBLIST_SIZE);
+ memset(hdr, '\0', sizeof(*hdr));
return hdr;
}
+static int check_zero(void *data, int size)
+{
+ u8 *ptr;
+ int i;
+
+ for (ptr = data, i = 0; i < size; i++, ptr++) {
+ if (*ptr)
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
static int bloblist_test_init(struct unit_test_state *uts)
{
struct bloblist_hdr *hdr;
@@ -84,10 +102,14 @@ static int bloblist_test_blob(struct unit_test_state *uts)
data = bloblist_find(TEST_TAG, TEST_SIZE);
ut_asserteq_ptr(rec + 1, data);
+ /* Check the data is zeroed */
+ ut_assertok(check_zero(data, TEST_SIZE));
+
/* Check the 'ensure' method */
ut_asserteq_ptr(data, bloblist_ensure(TEST_TAG, TEST_SIZE));
ut_assertnull(bloblist_ensure(TEST_TAG, TEST_SIZE2));
rec2 = (struct bloblist_rec *)(data + ALIGN(TEST_SIZE, BLOBLIST_ALIGN));
+ ut_assertok(check_zero(data, TEST_SIZE));
/* Check for a non-existent record */
ut_asserteq_ptr(data, bloblist_ensure(TEST_TAG, TEST_SIZE));
@@ -112,6 +134,7 @@ static int bloblist_test_blob_ensure(struct unit_test_state *uts)
size = TEST_SIZE;
ut_assertok(bloblist_ensure_size_ret(TEST_TAG, &size, &data));
ut_asserteq(TEST_SIZE, size);
+ ut_assertok(check_zero(data, TEST_SIZE));
/* Check that we get the same thing again */
ut_assertok(bloblist_ensure_size_ret(TEST_TAG, &size, &data2));