Enable compatibility mode operation for HYPERVISOR_sched_op and

HYPERVISOR_set_timer_op.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
This commit is contained in:
Emmanuel Ackaouy committed 2007-01-05 17:34:35 +00:00
1 parent 75a2a59383
commit 2942f45e09
5 files changed
+76 -6

No files matched your search

+2 -4
View File
@@ -279,10 +279,8 @@ CFIX14:
.section .rodata, "a", @progbits
#define compat_platform_op domain_crash_synchronous
#define compat_set_timer_op domain_crash_synchronous
#define compat_grant_table_op domain_crash_synchronous
#define compat_acm_op domain_crash_synchronous
#define compat_arch_sched_op domain_crash_synchronous
#define compat_xenoprof_op domain_crash_synchronous
#define compat_sysctl domain_crash_synchronous
#define compat_domctl domain_crash_synchronous
@@ -317,7 +315,7 @@ ENTRY(compat_hypercall_table)
.quad compat_mmuext_op
.quad compat_acm_op
.quad compat_nmi_op
.quad compat_arch_sched_op
.quad compat_sched_op
.quad compat_callback_op /* 30 */
.quad compat_xenoprof_op
.quad do_event_channel_op
@@ -359,7 +357,7 @@ ENTRY(compat_hypercall_args_table)
.byte 4 /* compat_mmuext_op */
.byte 1 /* compat_acm_op */
.byte 2 /* compat_nmi_op */
.byte 2 /* compat_arch_sched_op */
.byte 2 /* compat_sched_op */
.byte 2 /* compat_callback_op */ /* 30 */
.byte 2 /* compat_xenoprof_op */
.byte 2 /* compat_event_channel_op */
+5
View File
@@ -39,3 +39,8 @@ subdir-$(CONFIG_COMPAT) += compat
# Object file contains changeset and compiler information.
version.o: $(BASEDIR)/include/xen/compile.h
ifeq ($(CONFIG_COMPAT),y)
# extra dependencies
schedule.o: compat/schedule.c
endif
+51
View File
@@ -0,0 +1,51 @@
/****************************************************************************
* schedule.c
*
*/
#include <compat/sched.h>
#define COMPAT
#define ret_t int
#define do_sched_op compat_sched_op
#define xen_sched_shutdown sched_shutdown
CHECK_sched_shutdown;
#undef xen_sched_shutdown
#define xen_sched_remote_shutdown sched_remote_shutdown
CHECK_sched_remote_shutdown;
#undef xen_sched_remote_shutdown
static int compat_poll(struct compat_sched_poll *compat)
{
struct sched_poll native;
#define XLAT_sched_poll_HNDL_ports(_d_, _s_) \
guest_from_compat_handle((_d_)->ports, (_s_)->ports)
XLAT_sched_poll(&native, compat);
#undef XLAT_sched_poll_HNDL_ports
return do_poll(&native);
}
#define do_poll compat_poll
#define sched_poll compat_sched_poll
#include "../schedule.c"
int compat_set_timer_op(u32 lo, s32 hi)
{
return do_set_timer_op(((s64)hi << 32) | lo);
}
/*
* Local variables:
* mode: C
* c-set-style: "BSD"
* c-basic-offset: 4
* tab-width: 4
* indent-tabs-mode: nil
* End:
*/
+15 -2
View File
@@ -13,6 +13,7 @@
*
*/
#ifndef COMPAT
#include <xen/config.h>
#include <xen/init.h>
#include <xen/lib.h>
@@ -366,9 +367,13 @@ long do_sched_op_compat(int cmd, unsigned long arg)
return ret;
}
long do_sched_op(int cmd, XEN_GUEST_HANDLE(void) arg)
typedef long ret_t;
#endif /* !COMPAT */
ret_t do_sched_op(int cmd, XEN_GUEST_HANDLE(void) arg)
{
long ret = 0;
ret_t ret = 0;
switch ( cmd )
{
@@ -445,6 +450,8 @@ long do_sched_op(int cmd, XEN_GUEST_HANDLE(void) arg)
return ret;
}
#ifndef COMPAT
/* Per-domain one-shot-timer hypercall. */
long do_set_timer_op(s_time_t timeout)
{
@@ -736,6 +743,12 @@ void dump_runq(unsigned char key)
local_irq_restore(flags);
}
#ifdef CONFIG_COMPAT
#include "compat/schedule.c"
#endif
#endif /* !COMPAT */
/*
* Local variables:
* mode: C
+3
View File
@@ -26,4 +26,7 @@
! memory_map memory.h
! memory_reservation memory.h
! translate_gpfn_list memory.h
! sched_poll sched.h
? sched_remote_shutdown sched.h
? sched_shutdown sched.h
! vcpu_runstate_info vcpu.h
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.