From 72538f4c3ec6a48a32e9798684cd238310e682f2 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 25 Mar 2015 12:21:49 -0600 Subject: linker_lists: Add a function to access a linker list entry Once declared, you cannot access a linker_list entry since you do not have a symbol name for it. Add llsym() macro to provide this. This avoids searching for the symbol at run-time based on name. An example usage is to declare a driver with U_BOOT_DRIVER(), then obtain a pointer to that driver later. Signed-off-by: Simon Glass Reviewed-by: Marek Vasut --- include/linker_lists.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'include/linker_lists.h') diff --git a/include/linker_lists.h b/include/linker_lists.h index 940c871281..b22d169d97 100644 --- a/include/linker_lists.h +++ b/include/linker_lists.h @@ -102,6 +102,16 @@ * %u_boot_list_2_drivers_3 */ +/** + * ll_sym() - Access a linker-generated array entry + * @_type: Data type of the entry + * @_name: Name of the entry + * @_list: name of the list. Should contain only characters allowed + * in a C variable name! + */ +#define llsym(_type, _name, _list) \ + ((_type *)&_u_boot_list_2_##_list##_2_##_name) + /** * ll_entry_declare() - Declare linker-generated array entry * @_type: Data type of the entry -- cgit v1.2.3