[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Help With Custom Hyper Calls
So I greped through the s I've altered the hypercall_table and hypercall_args_table to have an additional entry in xen/arch/x86/x86_32/entry.S and in xen/arch/x86/x86_64/entry.S: to the hypercall_table: ........................... .long do_sysctl /* 35 */ .long do_domctl .long do_kexec_op .long do_tmem_op .long do_new_hyper /* 39 */ ........................... to the hypercall_args_table: ........................... .byte 1 /* do_sysctl */ /* 35 */ .byte 1 /* do_domctl */ .byte 2 /* do_kexec_op */ .byte 1 /* do_tmem_op */ .byte 0 /* do_new_hyper */ /* 39 */ ........................... I've also registered the name in xen/include/public/xen.h ........................... #define __HYPERVISOR_new_hyper 39 ........................... and I've added the following function to xen/arch/x86/mm.c ........................... void do_new_hyper ( void ) { printk("NEW HYPERCALL RECEIVED\n"); } ........................... To test this, I am running a fedora 14 dom0 and I wrote the following kernel module (so the code runs in ring 1): ........................... #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> MODULE_LICENSE("GPL"); #define SUCCESS 0 static int hyper_init(void){ int output; printk(KERN_ALERT "Testing Hypercall\n"); __asm__ ( "movl $39, %%eax;" "int $0x82;" : "=a" (output) ); return SUCCESS; } static void hyper_exit(void){ printk(KERN_ALERT "Removing Hypercall Module"); } module_init(hyper_init); module_exit(hyper_exit); ........................... I then run "xm dmesg" to see if I can see the "NEW HYPERCALL RECEIVED" message, but nothing appears. Any thoughts? - John On 08/12/2011 12:02 PM, Keir Fraser wrote: > On 12/08/2011 17:19, "John Backes" <john.backes@xxxxxxxxxxxxxxxxx> wrote: > >> Hello, >> >> So I'm new to Xen development and want to play around with Xen >> Hypercalls, but havn't been able to find a whole lot of documentation >> related to creating custom Hypercalls. I've found that to create a >> custom Hypercall I need to define it with an unused Hypercall number in >> "xen/include/public/xen.h", but then I am unsure of the next steps >> (e.g., where to place the function to call with the Hypercall). >> >> Can anyone point more towards some documentation or at least towards the >> correct locations for registering new Hypercalls? Thanks in advance. > > Pick the name of a hypercall, e.g., update_va_mapping has a nice distinctive > name. Recursive grep for that name in the Xen and Linux source trees. Should > give you a pretty good start on the few places you need to register in the > hypervisor and in the guest kernel. > > -- Keir > >> - John >> >> _______________________________________________ >> Xen-devel mailing list >> Xen-devel@xxxxxxxxxxxxxxxxxxx >> http://lists.xensource.com/xen-devel > > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |