1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 #ifndef _MEMBLOCK_TEST_H 3 #define _MEMBLOCK_TEST_H 4 5 #include <stdlib.h> 6 #include <assert.h> 7 #include <linux/types.h> 8 #include <linux/memblock.h> 9 #include <linux/sizes.h> 10 #include <linux/printk.h> 11 #include <../selftests/kselftest.h> 12 13 #define MEM_SIZE SZ_16K 14 15 /** 16 * ASSERT_EQ(): 17 * Check the condition 18 * @_expected == @_seen 19 * If false, print failed test message (if in VERBOSE mode) and then assert 20 */ 21 #define ASSERT_EQ(_expected, _seen) do { \ 22 if ((_expected) != (_seen)) \ 23 test_fail(); \ 24 assert((_expected) == (_seen)); \ 25 } while (0) 26 27 /** 28 * ASSERT_NE(): 29 * Check the condition 30 * @_expected != @_seen 31 * If false, print failed test message (if in VERBOSE mode) and then assert 32 */ 33 #define ASSERT_NE(_expected, _seen) do { \ 34 if ((_expected) == (_seen)) \ 35 test_fail(); \ 36 assert((_expected) != (_seen)); \ 37 } while (0) 38 39 /** 40 * ASSERT_LT(): 41 * Check the condition 42 * @_expected < @_seen 43 * If false, print failed test message (if in VERBOSE mode) and then assert 44 */ 45 #define ASSERT_LT(_expected, _seen) do { \ 46 if ((_expected) >= (_seen)) \ 47 test_fail(); \ 48 assert((_expected) < (_seen)); \ 49 } while (0) 50 51 #define PREFIX_PUSH() prefix_push(__func__) 52 53 /* 54 * Available memory registered with memblock needs to be valid for allocs 55 * test to run. This is a convenience wrapper for memory allocated in 56 * dummy_physical_memory_init() that is later registered with memblock 57 * in setup_memblock(). 58 */ 59 struct test_memory { 60 void *base; 61 }; 62 63 struct region { 64 phys_addr_t base; 65 phys_addr_t size; 66 }; 67 68 void reset_memblock_regions(void); 69 void reset_memblock_attributes(void); 70 void setup_memblock(void); 71 void dummy_physical_memory_init(void); 72 void dummy_physical_memory_cleanup(void); 73 void parse_args(int argc, char **argv); 74 75 void test_fail(void); 76 void test_pass(void); 77 void test_print(const char *fmt, ...); 78 void prefix_reset(void); 79 void prefix_push(const char *prefix); 80 void prefix_pop(void); 81 82 static inline void test_pass_pop(void) 83 { 84 test_pass(); 85 prefix_pop(); 86 } 87 88 #endif 89