[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] Avoid panic when adjusting sedf parameters



>>> On 17.11.11 at 14:03, Juergen Gross <juergen.gross@xxxxxxxxxxxxxx> wrote:
>--- a/xen/include/xen/sched.h  Wed Nov 16 18:21:14 2011 +0000
>+++ b/xen/include/xen/sched.h  Thu Nov 17 14:01:58 2011 +0100
>@@ -569,6 +569,12 @@ extern struct domain *domain_list;
>        (_d) != NULL;                            \
>        (_d) = rcu_dereference((_d)->next_in_list )) \
> 
>+#define for_each_domain_in_cpupool(_d,_c)       \
>+ for ( (_d) = rcu_dereference(domain_list);     \
>+       (_d) != NULL;                            \
>+       (_d) = rcu_dereference((_d)->next_in_list )) \

Wouldn't this, up to here, simply be for_each_domain()?

>+       if ((_d)->cpupool == (_c))

This is dangerous - consider code like

    if ( x )
        for_each_domain_in_cpupool ()
            function();
    else
        other_stuff;

which would now associate the else with the wrong (inner) if. One
possible solution that comes to mind would be

#define for_each_domain_in_cpupool(_d,_c) \
    for_each_domain_in_cpupool (_d) \
        if ((_d)->cpupool != (_c)) \
            continue; \
        else

but I think I had seen a more clever solution to this problem, but cannot
remember/locate it right now.

Jan

>+
> #define for_each_vcpu(_d,_v)                    \
>  for ( (_v) = (_d)->vcpu ? (_d)->vcpu[0] : NULL; \
>        (_v) != NULL;                            \


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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