[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 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

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.