]> git.sur5r.net Git - u-boot/commitdiff
linker_lists: Add a function to access a linker list entry
authorSimon Glass <sjg@chromium.org>
Wed, 25 Mar 2015 18:21:49 +0000 (12:21 -0600)
committerSimon Glass <sjg@chromium.org>
Sat, 18 Apr 2015 17:11:18 +0000 (11:11 -0600)
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 <sjg@chromium.org>
Reviewed-by: Marek Vasut <marex@denx.de>
include/linker_lists.h

index 940c87128194b654c364c477fc3ba864a523ffc0..b22d169d97966766122dd41a6e0c3aa573c0ec04 100644 (file)
  *   %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