#pragma once /* * This file is a derivative work of include/linker_lists.h from the U-Boot * project and is licensed under GPL-2.0+. * * Copyright (C) 2012 Marek Vasut * Copyright (C) 2021 David Phillips */ #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)))