X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fplanetlab.c;h=6b5d936450f7983b937b3317660af47490b3258c;hb=d967219815660f527f556e134ab1e45d92f48788;hp=034c249936dd9c1a1fb0e688a4881d9c8a28190f;hpb=bf5acf9eaf4b1366033afd5541be879b3eb6516a;p=util-vserver.git diff --git a/lib/planetlab.c b/lib/planetlab.c index 034c249..6b5d936 100644 --- a/lib/planetlab.c +++ b/lib/planetlab.c @@ -47,7 +47,6 @@ create_context(xid_t ctx, uint32_t flags, uint64_t bcaps, const rspec_t *rspec) { struct vc_ctx_caps vc_caps; struct vc_ctx_flags vc_flags; - struct vc_set_sched vc_sched; struct vc_rlimit vc_rlimit; /* create context info */ @@ -69,15 +68,7 @@ create_context(xid_t ctx, uint32_t flags, uint64_t bcaps, const rspec_t *rspec) /* set scheduler parameters */ vc_flags.flagword |= rspec->cpu_sched_flags; - vc_sched.set_mask = (VC_VXSM_FILL_RATE | VC_VXSM_INTERVAL | VC_VXSM_TOKENS | - VC_VXSM_TOKENS_MIN | VC_VXSM_TOKENS_MAX); - vc_sched.fill_rate = rspec->cpu_share; /* tokens accumulated per interval */ - vc_sched.interval = 1000; /* milliseconds */ - vc_sched.tokens = 100; /* initial allocation of tokens */ - vc_sched.tokens_min = 50; /* need this many tokens to run */ - vc_sched.tokens_max = 100; /* max accumulated number of tokens */ - if (vc_set_sched(ctx, &vc_sched)) - return -1; + pl_setsched(ctx, rspec->cpu_share, rspec->cpu_sched_flags); /* set resource limits */ vc_rlimit.min = VC_LIM_KEEP; @@ -141,3 +132,19 @@ pl_chcontext(xid_t ctx, uint32_t flags, uint64_t bcaps, const rspec_t *rspec) return 0; } + +int +pl_setsched(xid_t ctx, uint32_t cpu_share, uint32_t cpu_sched_flags) +{ + struct vc_set_sched vc_sched; + + vc_sched.set_mask = (VC_VXSM_FILL_RATE | VC_VXSM_INTERVAL | VC_VXSM_TOKENS | + VC_VXSM_TOKENS_MIN | VC_VXSM_TOKENS_MAX); + vc_sched.fill_rate = cpu_share; /* tokens accumulated per interval */ + vc_sched.interval = 1000; /* milliseconds */ + vc_sched.tokens = 100; /* initial allocation of tokens */ + vc_sched.tokens_min = 50; /* need this many tokens to run */ + vc_sched.tokens_max = 100; /* max accumulated number of tokens */ + + return vc_set_sched(ctx, &vc_sched); +}