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