On Tue, Jul 26, 2016 at 12:30:14AM +0900, Masami Hiramatsu wrote: > On Fri, 22 Jul 2016 14:24:41 -0700 > "Luis R. Rodriguez" <mcgrof@xxxxxxxxxx> wrote: > > > +/** > > + * LINKTABLE_RUN_ALL - iterate and run through all entries on a linker table > > + * > > + * @tbl: linker table > > + * @func: structure name for the function name we want to call. > > + * @args...: arguments to pass to func > > + * > > + * Example usage: > > + * > > + * LINKTABLE_RUN_ALL(frobnicator_fns, some_run,); > > + */ > > +#define LINKTABLE_RUN_ALL(tbl, func, args...) \ > > +do { \ > > + size_t i; \ > > + for (i = 0; i < LINUX_SECTION_SIZE(tbl); i++) \ > > + (tbl[i]).func (args); \ > > +} while (0); > > + > > +/** > > + * LINKTABLE_RUN_ERR - run each linker table entry func and return error if any > > + * > > + * @tbl: linker table > > + * @func: structure name for the function name we want to call. > > + * @args...: arguments to pass to func > > + * > > + * Example usage: > > + * > > + * unsigned int err = LINKTABLE_RUN_ERR(frobnicator_fns, some_run,); > > + */ > > +#define LINKTABLE_RUN_ERR(tbl, func, args...) \ > > +({ \ > > + size_t i; \ > > + int err = 0; \ > > + for (i = 0; !err && i < LINUX_SECTION_SIZE(tbl); i++) \ > > + err = (tbl[i]).func (args); \ > > + err; \ > > +}) > > These iteration APIs are a bit dangerous, at least for these APIs we'd better change > name like as FUNCTABLE_RUN etc. because LINKTABLE can contain not only function address > but also some data (or address of data). Sure will do, thanks for the review. Luis -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html