diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2003-05-19 09:35:11 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2003-05-19 09:35:11 +0000 |
commit | 14fbcaeac2a400a75e66565f52f179eed6d84a1d (patch) | |
tree | 6456f46f5e1e73aa07a76388eb8fbd4e9f6e7145 | |
parent | 2f2c3b65c3d145c772850c1d3d42ccf75e26ceaa (diff) | |
parent | 5ac60a25d9c33cd8b027f59b1d3fe821d6a4b7d2 (diff) | |
download | xen-14fbcaeac2a400a75e66565f52f179eed6d84a1d.tar.gz xen-14fbcaeac2a400a75e66565f52f179eed6d84a1d.tar.bz2 xen-14fbcaeac2a400a75e66565f52f179eed6d84a1d.zip |
bitkeeper revision 1.243 (3ec8a54fMxU7Nd9Crer9xyORJttjig)
Merge scramble.cl.cam.ac.uk:/auto/groups/xeno/BK/xeno.bk
into scramble.cl.cam.ac.uk:/local/scratch/kaf24/xeno
-rw-r--r-- | xen/common/dom0_ops.c | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/xen/common/dom0_ops.c b/xen/common/dom0_ops.c index c62b68b919..ec1e9df604 100644 --- a/xen/common/dom0_ops.c +++ b/xen/common/dom0_ops.c @@ -79,9 +79,13 @@ long do_dom0_op(dom0_op_t *u_dom0_op) case DOM0_BUILDDOMAIN: { struct task_struct * p = find_domain_by_id(op.u.meminfo.domain); - if ( (ret = final_setup_guestos(p, &op.u.meminfo)) == 0 ) - ret = p->domain; - put_task_struct(p); + ret = -EINVAL; + if ( p != NULL ) + { + if ( (ret = final_setup_guestos(p, &op.u.meminfo)) == 0 ) + ret = p->domain; + put_task_struct(p); + } } break; @@ -94,14 +98,14 @@ long do_dom0_op(dom0_op_t *u_dom0_op) wake_up(p); reschedule(p); ret = p->domain; + put_task_struct(p); } - put_task_struct(p); } break; case DOM0_STOPDOMAIN: { - ret = stop_other_domain (op.u.meminfo.domain); + ret = stop_other_domain(op.u.meminfo.domain); } break; @@ -153,14 +157,7 @@ long do_dom0_op(dom0_op_t *u_dom0_op) { unsigned int dom = op.u.killdomain.domain; int force = op.u.killdomain.force; - if ( dom == IDLE_DOMAIN_ID ) - { - ret = -EPERM; - } - else - { - ret = kill_other_domain(dom, force); - } + ret = (dom == IDLE_DOMAIN_ID) ? -EPERM : kill_other_domain(dom, force); } break; @@ -179,15 +176,10 @@ long do_dom0_op(dom0_op_t *u_dom0_op) unsigned long warp = op.u.adjustdom.warp; unsigned long warpl = op.u.adjustdom.warpl; unsigned long warpu = op.u.adjustdom.warpu; - - if ( dom == IDLE_DOMAIN_ID ) - { - ret = -EPERM; - } - else - { + + ret = -EPERM; + if ( dom != IDLE_DOMAIN_ID ) ret = sched_adjdom(dom, mcu_adv, warp, warpl, warpu); - } } break; |