memblock tests: Add memblock reset function
Memblock simulator needs to be able to reset memblock data structures between different test cases. Add a function that sets all fields to their default values. Add a test checking if memblock is being initialized to expected values. Signed-off-by: Karolina Drobnik <karolinadrobnik@gmail.com> Signed-off-by: Mike Rapoport <rppt@kernel.org> Link: https://lore.kernel.org/r/8c185aa7e0dd68c2c7e937c9a06c90ae413e240f.1643796665.git.karolinadrobnik@gmail.com
This commit is contained in:
committed by
Mike Rapoport
parent
16802e55de
commit
f3252a22d1
@@ -6,7 +6,9 @@ CFLAGS += -I. -I../../include -Wall -O2 -fsanitize=address \
|
||||
-fsanitize=undefined -D CONFIG_PHYS_ADDR_T_64BIT
|
||||
LDFLAGS += -fsanitize=address -fsanitize=undefined
|
||||
TARGETS = main
|
||||
OFILES = main.o memblock.o lib/slab.o mmzone.o slab.o
|
||||
TEST_OFILES = tests/basic_api.o tests/common.o
|
||||
DEP_OFILES = memblock.o lib/slab.o mmzone.o slab.o
|
||||
OFILES = main.o $(DEP_OFILES) $(TEST_OFILES)
|
||||
EXTR_SRC = ../../../mm/memblock.c
|
||||
|
||||
ifeq ($(BUILD), 32)
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include "tests/basic_api.h"
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
memblock_basic_checks();
|
||||
return 0;
|
||||
}
|
||||
|
||||
32
tools/testing/memblock/tests/basic_api.c
Normal file
32
tools/testing/memblock/tests/basic_api.c
Normal file
@@ -0,0 +1,32 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include <string.h>
|
||||
#include <linux/memblock.h>
|
||||
#include "basic_api.h"
|
||||
|
||||
#define EXPECTED_MEMBLOCK_REGIONS 128
|
||||
|
||||
static int memblock_initialization_check(void)
|
||||
{
|
||||
reset_memblock();
|
||||
|
||||
assert(memblock.memory.regions);
|
||||
assert(memblock.memory.cnt == 1);
|
||||
assert(memblock.memory.max == EXPECTED_MEMBLOCK_REGIONS);
|
||||
assert(strcmp(memblock.memory.name, "memory") == 0);
|
||||
|
||||
assert(memblock.reserved.regions);
|
||||
assert(memblock.reserved.cnt == 1);
|
||||
assert(memblock.memory.max == EXPECTED_MEMBLOCK_REGIONS);
|
||||
assert(strcmp(memblock.reserved.name, "reserved") == 0);
|
||||
|
||||
assert(!memblock.bottom_up);
|
||||
assert(memblock.current_limit == MEMBLOCK_ALLOC_ANYWHERE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int memblock_basic_checks(void)
|
||||
{
|
||||
memblock_initialization_check();
|
||||
return 0;
|
||||
}
|
||||
10
tools/testing/memblock/tests/basic_api.h
Normal file
10
tools/testing/memblock/tests/basic_api.h
Normal file
@@ -0,0 +1,10 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#ifndef _MEMBLOCK_BASIC_H
|
||||
#define _MEMBLOCK_BASIC_H
|
||||
|
||||
#include <assert.h>
|
||||
#include "common.h"
|
||||
|
||||
int memblock_basic_checks(void);
|
||||
|
||||
#endif
|
||||
27
tools/testing/memblock/tests/common.c
Normal file
27
tools/testing/memblock/tests/common.c
Normal file
@@ -0,0 +1,27 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include "tests/common.h"
|
||||
#include <string.h>
|
||||
|
||||
#define INIT_MEMBLOCK_REGIONS 128
|
||||
#define INIT_MEMBLOCK_RESERVED_REGIONS INIT_MEMBLOCK_REGIONS
|
||||
|
||||
void reset_memblock(void)
|
||||
{
|
||||
memset(memblock.memory.regions, 0,
|
||||
memblock.memory.cnt * sizeof(struct memblock_region));
|
||||
memset(memblock.reserved.regions, 0,
|
||||
memblock.reserved.cnt * sizeof(struct memblock_region));
|
||||
|
||||
memblock.memory.cnt = 1;
|
||||
memblock.memory.max = INIT_MEMBLOCK_REGIONS;
|
||||
memblock.memory.name = "memory";
|
||||
memblock.memory.total_size = 0;
|
||||
|
||||
memblock.reserved.cnt = 1;
|
||||
memblock.reserved.max = INIT_MEMBLOCK_RESERVED_REGIONS;
|
||||
memblock.reserved.name = "reserved";
|
||||
memblock.reserved.total_size = 0;
|
||||
|
||||
memblock.bottom_up = false;
|
||||
memblock.current_limit = MEMBLOCK_ALLOC_ANYWHERE;
|
||||
}
|
||||
15
tools/testing/memblock/tests/common.h
Normal file
15
tools/testing/memblock/tests/common.h
Normal file
@@ -0,0 +1,15 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#ifndef _MEMBLOCK_TEST_H
|
||||
#define _MEMBLOCK_TEST_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/memblock.h>
|
||||
|
||||
struct region {
|
||||
phys_addr_t base;
|
||||
phys_addr_t size;
|
||||
};
|
||||
|
||||
void reset_memblock(void);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user