[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v8 4/7] xen: use initcall_start_, ctors_start_, and more
>>> On 16.01.19 at 00:35, <sstabellini@xxxxxxxxxx> wrote: > --- a/xen/common/kernel.c > +++ b/xen/common/kernel.c > @@ -306,20 +306,23 @@ void add_taint(unsigned int flag) > tainted |= flag; > } > > -extern const initcall_t __initcall_start[], __presmp_initcall_end[], > - __initcall_end[]; > +extern uintptr_t initcall_start_, presmp_initcall_end_, initcall_end_; > > void __init do_presmp_initcalls(void) > { > const initcall_t *call; > - for ( call = __initcall_start; call < __presmp_initcall_end; call++ ) > + for ( call = (const initcall_t *)initcall_start_; > + (uintptr_t)call < presmp_initcall_end_; This (just taken as an example) is at best marginally better than using casts to an arithmetic type without intermediate variables. > --- a/xen/common/schedule.c > +++ b/xen/common/schedule.c > @@ -67,9 +67,10 @@ DEFINE_PER_CPU(struct scheduler *, scheduler); > /* Scratch space for cpumasks. */ > DEFINE_PER_CPU(cpumask_t, cpumask_scratch); > > -extern const struct scheduler *__start_schedulers_array[], > *__end_schedulers_array[]; > -#define NUM_SCHEDULERS (__end_schedulers_array - __start_schedulers_array) > -#define schedulers __start_schedulers_array > +extern uintptr_t start_schedulers_array_, end_schedulers_array_; > +#define NUM_SCHEDULERS ((end_schedulers_array_ - start_schedulers_array_) \ > + / sizeof(const struct scheduler *)) Despite not being a cast, this is another example of a hidden type dependency which would better not be introduced. At the very least this should use an expression rather than a type name, such that the type of the expression changing also affects the calculation here. Granted it's a pointer here, so e.g. renaming struct scheduler wouldn't have bad consequences, but other (future) places may clone this code and use other than a pointer. As another general remark - I'm also not really happy about the trailing underscores. Yes, this is a means to avoid leading ones, and hence to avoid name space violations. But we use trailing underscores in macros a lot, so this opens up new conflict potential. Anyway, I still hope we can get away either without any intermediate variables, or ones replacing (rather than amending) the current ones. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |