struct notifier_block *nfb, unsigned long action, void *hcpu)
{
unsigned int cpu = (unsigned long)hcpu;
+ struct scheduler *sched = per_cpu(scheduler, cpu);
+ struct schedule_data *sd = &per_cpu(schedule_data, cpu);
int rc = 0;
switch ( action )
{
+ case CPU_STARTING:
+ SCHED_OP(sched, init_pdata, sd->sched_priv, cpu);
+ break;
case CPU_UP_PREPARE:
rc = cpu_schedule_up(cpu);
break;
if ( ops.alloc_pdata &&
!(this_cpu(schedule_data).sched_priv = ops.alloc_pdata(&ops, 0)) )
BUG();
+ SCHED_OP(&ops, init_pdata, this_cpu(schedule_data).sched_priv, 0);
}
/*
ppriv = SCHED_OP(new_ops, alloc_pdata, cpu);
if ( ppriv == NULL )
return -ENOMEM;
+ SCHED_OP(new_ops, init_pdata, ppriv, cpu);
vpriv = SCHED_OP(new_ops, alloc_vdata, idle, idle->domain->sched_priv);
if ( vpriv == NULL )
{
void *);
void (*free_pdata) (const struct scheduler *, void *, int);
void * (*alloc_pdata) (const struct scheduler *, int);
+ void (*init_pdata) (const struct scheduler *, void *, int);
void (*free_domdata) (const struct scheduler *, void *);
void * (*alloc_domdata) (const struct scheduler *, struct domain *);