@@ -171,8 +171,10 @@ void lmb_dump_all_force(void);
void lmb_arch_add_memory(void);
struct lmb *lmb_get(void);
-int lmb_push(struct lmb *store);
+void lmb_push(struct lmb *store);
void lmb_pop(struct lmb *store);
+int lmb_test_push(struct lmb *store);
+void lmb_test_pop(struct lmb *store);
static inline int lmb_read_check(phys_addr_t addr, phys_size_t len)
{
@@ -892,12 +892,23 @@ struct lmb *lmb_get(void)
return &lmb;
}
+void lmb_push(struct lmb *store)
+{
+ *store = lmb;
+}
+
+void lmb_pop(struct lmb *store)
+{
+ lmb = *store;
+}
+
#if CONFIG_IS_ENABLED(UNIT_TEST)
-int lmb_push(struct lmb *store)
+int lmb_test_push(struct lmb *store)
{
int ret;
- *store = lmb;
+ lmb_push(store);
+
ret = lmb_setup(true);
if (ret)
return ret;
@@ -905,10 +916,11 @@ int lmb_push(struct lmb *store)
return 0;
}
-void lmb_pop(struct lmb *store)
+void lmb_test_pop(struct lmb *store)
{
alist_uninit(&lmb.free_mem);
alist_uninit(&lmb.used_mem);
- lmb = *store;
+
+ lmb_pop(store);
}
#endif /* UNIT_TEST */
@@ -63,7 +63,7 @@ static int setup_lmb_test(struct unit_test_state *uts, struct lmb *store,
{
struct lmb *lmb;
- ut_assertok(lmb_push(store));
+ ut_assertok(lmb_test_push(store));
lmb = lmb_get();
*mem_lstp = &lmb->free_mem;
*used_lstp = &lmb->used_mem;
@@ -194,7 +194,7 @@ static int test_multi_alloc(struct unit_test_state *uts, const phys_addr_t ram,
ut_asserteq(mem[0].size, ram_size);
}
- lmb_pop(&store);
+ lmb_test_pop(&store);
return 0;
}
@@ -293,7 +293,7 @@ static int test_bigblock(struct unit_test_state *uts, const phys_addr_t ram)
ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 1, alloc_64k_addr, 0x10000,
0, 0, 0, 0);
- lmb_pop(&store);
+ lmb_test_pop(&store);
return 0;
}
@@ -373,7 +373,7 @@ static int test_noreserved(struct unit_test_state *uts, const phys_addr_t ram,
ut_asserteq(ret, 0);
ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 0, 0, 0, 0, 0, 0, 0);
- lmb_pop(&store);
+ lmb_test_pop(&store);
return 0;
}
@@ -446,7 +446,7 @@ static int lib_test_lmb_at_0(struct unit_test_state *uts)
ut_asserteq(ret, 0);
ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 0, 0, 0, 0, 0, 0, 0);
- lmb_pop(&store);
+ lmb_test_pop(&store);
return 0;
}
@@ -499,7 +499,7 @@ static int lib_test_lmb_overlapping_reserve(struct unit_test_state *uts)
ASSERT_LMB(mem_lst, used_lst, ram, ram_size, 1, 0x40000000, 0x40000,
0, 0, 0, 0);
- lmb_pop(&store);
+ lmb_test_pop(&store);
return 0;
}
@@ -619,7 +619,7 @@ static int test_alloc_addr(struct unit_test_state *uts, const phys_addr_t ram)
ut_asserteq(ret, 0);
}
- lmb_pop(&store);
+ lmb_test_pop(&store);
return 0;
}
@@ -691,7 +691,7 @@ static int test_get_unreserved_size(struct unit_test_state *uts,
s = lmb_get_free_size(ram_end - 4);
ut_asserteq(s, 4);
- lmb_pop(&store);
+ lmb_test_pop(&store);
return 0;
}
@@ -797,7 +797,7 @@ static int lib_test_lmb_flags(struct unit_test_state *uts)
ut_asserteq(lmb_is_nomap(&used[1]), 0);
ut_asserteq(lmb_is_nomap(&used[2]), 1);
- lmb_pop(&store);
+ lmb_test_pop(&store);
return 0;
}
The LMB module uses a separate instance of the lmb structure when running tests. Setting up the correct instance is done using the lmb_push() and lmb_pop() functions. In addition to pushing and popping the lmb instances, these functions are also doing some test specific operations. Move these operations to lmb_test_push() and lmb_test_pop() functions, so that lmb_push() and lmb_pop() can be called from elsewhere. Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> --- include/lmb.h | 4 +++- lib/lmb.c | 20 ++++++++++++++++---- test/lib/lmb.c | 18 +++++++++--------- 3 files changed, 28 insertions(+), 14 deletions(-)