Message ID | 1427307788-7496-2-git-send-email-sjg@chromium.org |
---|---|
State | Accepted |
Delegated to: | Simon Glass |
Headers | show |
On 25 March 2015 at 12:21, Simon Glass <sjg@chromium.org> wrote: > 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> > --- > > Changes in v2: None > > include/linker_lists.h | 10 ++++++++++ > 1 file changed, 10 insertions(+) Applied to u-boot-dm/next.
diff --git a/include/linker_lists.h b/include/linker_lists.h index 940c871..b22d169 100644 --- a/include/linker_lists.h +++ b/include/linker_lists.h @@ -103,6 +103,16 @@ */ /** + * 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 * @_name: Name of the 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 <sjg@chromium.org> --- Changes in v2: None include/linker_lists.h | 10 ++++++++++ 1 file changed, 10 insertions(+)