[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC v3 07/13] tables.h: add linker table support
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). Thank you, -- Masami Hiramatsu <mhiramat@xxxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |