[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


  • To: "Luis R. Rodriguez" <mcgrof@xxxxxxxxxx>, Masami Hiramatsu <mhiramat@xxxxxxxxxx>
  • From: "H. Peter Anvin" <hpa@xxxxxxxxx>
  • Date: Thu, 28 Jul 2016 10:08:20 -0700
  • Delivery-date: Thu, 28 Jul 2016 17:26:02 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>

tglx@xxxxxxxxxxxxx,mingo@xxxxxxxxxx,bp@xxxxxxxxx,linux@xxxxxxxxxxxxxxxx,masami.hiramatsu.pt@xxxxxxxxxxx,jbaron@xxxxxxxxxx,heiko.carstens@xxxxxxxxxx,ananth@xxxxxxxxxxxxxxxxxx,anil.s.keshavamurthy@xxxxxxxxx,davem@xxxxxxxxxxxxx,realmz6@xxxxxxxxx,x86@xxxxxxxxxx,luto@xxxxxxxxxxxxxx,keescook@xxxxxxxxxxxx,torvalds@xxxxxxxxxxxxxxxxxxxx,gregkh@xxxxxxxxxxxxxxxxxxx,rusty@xxxxxxxxxxxxxxx,gnomes@xxxxxxxxxxxxxxxxxxx,alan@xxxxxxxxxxxxxxx,dwmw2@xxxxxxxxxxxxx,arnd@xxxxxxxx,ming.lei@xxxxxxxxxxxxx,linux-arch@xxxxxxxxxxxxxxx,benh@xxxxxxxxxxxxxxxxxxx,ananth@xxxxxxxxxx,pebolle@xxxxxxxxxx,fontana@xxxxxxxxxxxxxxx,ciaran.farrell@xxxxxxxx,christopher.denicolo@xxxxxxxx,david.vrabel@xxxxxxxxxx,konrad.wilk@xxxxxxxxxx,mcb30@xxxxxxxx,jgross@xxxxxxxx,andrew.cooper3@xxxxxxxxxx,andriy.shevchenko@xxxxxxxxxxxxxxx,paul.gortmaker@xxxxxxxxxxxxx,xen-devel@xxxxxxxxxxxxxxxxxxx,ak@xxxxxxxxxxxxxxx,pali.rohar@xxxxxxxxx,dvhart@xxxxxxxxxxxxx,platform-driver-x86@xxxxxxxxxxxxxxx,mmarek@xxxxxxxx,linux@xxxxxxxxxxxxxxxxxx,jko!
 sina@suse
.cz,korea.drzix@xxxxxxxxx,linux-kbuild@xxxxxxxxxxxxxxx,tony.luck@xxxxxxxxx,akpm@xxxxxxxxxxxxxxxxxxxx,linux-ia64@xxxxxxxxxxxxxxx,linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,linux-sh@xxxxxxxxxxxxxxx,sparclinux@xxxxxxxxxxxxxxx,catalin.marinas@xxxxxxx,will.deacon@xxxxxxx,rostedt@xxxxxxxxxxx,jpoimboe@xxxxxxxxxx
Message-ID: <01FD20B1-E788-4CC6-81CF-BA26F000FFCB@xxxxxxxxx>

On July 27, 2016 4:02:18 PM PDT, "Luis R. Rodriguez" <mcgrof@xxxxxxxxxx> 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" <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

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@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®.