1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#pragma once
/* Linker-generated lists derived from U-Boot source `include/linker_lists.h`
* with minor modification to store function pointers */
#define list_head(entry_type, list_name) \
({ static char head[0] __attribute__((__aligned__(4), unused, section(".test_runner_list_2_"#list_name"_1")));(entry_type*)&head; })
#define list_tail(entry_type, list_name) \
({ static char tail[0] __attribute__((__aligned__(4), unused, section(".test_runner_list_2_"#list_name"_3")));(entry_type*)&tail; })
#define list_entry_count(entry_type, list_name) \
({ \
entry_type* head = list_head(entry_type, list_name); \
entry_type* tail = list_tail(entry_type, list_name); \
(size_t)(tail - head); \
})
#define list_entry(entry_type, list_name, entry_name) \
entry_type _test_runner_list_2_##list_name_2_##entry_name __attribute__((__aligned__(4), unused, section(".test_runner_list_2_"#list_name"_2_"#entry_name)))
#define RUNNER_DECLARE_TEST(test_name) \
void test_name(void);\
list_entry(struct test_fn, test_list, test_name) = { .name = #test_name, .file = __FILE__, .line = __LINE__, .fn = test_name}; \
void test_name(void)
struct test_fn {
const char *name;
const char *file;
int line;
void (*fn)();
};
|