[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] xencomm_privcmd_sched_op
# HG changeset patch # User awilliam@xxxxxxxxxxx # Node ID 49bf2381e009f00777cb85d0797eb5fbe6f74f15 # Parent 3f3a818d56f53f5dc3c970ed4959374f9be74b22 [IA64] xencomm_privcmd_sched_op Necessary for reboot on VTi domains. Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx> --- linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c | 30 ++++++++++++++++++++++ 1 files changed, 30 insertions(+) diff -r 3f3a818d56f5 -r 49bf2381e009 linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c --- a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c Wed Oct 04 22:11:34 2006 -0600 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c Wed Oct 04 22:11:50 2006 -0600 @@ -545,6 +545,34 @@ xencomm_privcmd_hvm_op(privcmd_hypercall return ret; } +static int +xencomm_privcmd_sched_op(privcmd_hypercall_t *hypercall) +{ + int cmd = hypercall->arg[0]; + struct xencomm_handle *desc; + unsigned int argsize; + int ret; + + switch (cmd) { + case SCHEDOP_remote_shutdown: + argsize = sizeof(sched_remote_shutdown_t); + break; + default: + printk("%s: unknown SCHEDOP %d\n", __func__, cmd); + return -EINVAL; + } + + ret = xencomm_create((void *)hypercall->arg[1], argsize, + &desc, GFP_KERNEL); + if (ret) + return ret; + + ret = xencomm_arch_hypercall_sched_op(cmd, desc); + + xencomm_free(desc); + return ret; +} + int privcmd_hypercall(privcmd_hypercall_t *hypercall) { @@ -565,6 +593,8 @@ privcmd_hypercall(privcmd_hypercall_t *h return xencomm_privcmd_event_channel_op(hypercall); case __HYPERVISOR_hvm_op: return xencomm_privcmd_hvm_op(hypercall); + case __HYPERVISOR_sched_op: + return xencomm_privcmd_sched_op(hypercall); default: printk("%s: unknown hcall (%ld)\n", __func__, hypercall->op); return -ENOSYS; _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |