t...@linutronix.de,mi...@redhat.com,b...@alien8.de,li...@arm.linux.org.uk,masami.hiramatsu...@hitachi.com,jba...@akamai.com,heiko.carst...@de.ibm.com,ana...@linux.vnet.ibm.com,anil.s.keshavamur...@intel.com,da...@davemloft.net,real...@gmail.com,x...@kernel.org,l...@amacapital.net,keesc...@chromium.org,torva...@linux-foundation.org,gre...@linuxfoundation.org,ru...@rustcorp.com.au,gno...@lxorguk.ukuu.org.uk,a...@linux.intel.com,dw...@infradead.org,a...@arndb.de,ming....@canonical.com,linux-a...@vger.kernel.org,b...@kernel.crashing.org,ana...@in.ibm.com,pebo...@tiscali.nl,font...@sharpeleven.org,ciaran.farr...@suse.com,christopher.denic...@suse.com,david.vra...@citrix.com,konrad.w...@oracle.com,mc...@ipxe.org,jgr...@suse.com,andrew.coop...@citrix.com,andriy.shevche...@linux.intel.com,paul.gortma...@windriver.com,xen-de...@lists.xensource.com,a...@linux.intel.com,pali.ro...@gmail.com,dvh...@infradead.org,platform-driver-...@vger.kernel.org,mma...@suse.com,li...@rasmusvillemoes.dk,jko! sina@suse .cz,korea.dr...@gmail.com,linux-kbu...@vger.kernel.org,tony.l...@intel.com,a...@linux-foundation.org,linux-i...@vger.kernel.org,linux-arm-ker...@lists.infradead.org,linux...@vger.kernel.org,sparcli...@vger.kernel.org,catalin.mari...@arm.com,will.dea...@arm.com,rost...@goodmis.org,jpoim...@redhat.com Message-ID: <01fd20b1-e788-4cc6-81cf-ba26f000f...@zytor.com>
On July 27, 2016 4:02:18 PM PDT, "Luis R. Rodriguez" <mcg...@kernel.org> wrote: >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" <mcg...@kernel.org> 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 I don't know if they are dangerous. Keep in mind C type checking is still present. -- Sent from my Android device with K-9 Mail. Please excuse brevity and formatting. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel